--***************************************************************************** --* File: lua/modules/ui/game/allianceOffer.lua --* Summary: Dialog when an incoming alliance offer is received --* --* Copyright © 2006 Gas Powered Games, Inc. All rights reserved. --***************************************************************************** local UIUtil = import('/lua/modules/ui/uiutil.lua') local Bitmap = import('/lua/modules/maui/bitmap.lua').Bitmap local Button = import('/lua/modules/maui/button.lua').Button local LayoutHelpers = import('/lua/modules/maui/layouthelpers.lua') local Text = import('/lua/modules/maui/text.lua').Text local dialog = nil local pendingOffers = {} function OfferAlliance( query, callback ) table.insert(pendingOffers, {query,callback}) # Handle multiple offers by showing them sequentially ForkThread( function() while true do local n = table.getn(pendingOffers) if n > 0 then if import('/lua/modules/ui/game/diplomacy.lua').CanShowAllianceOffer() then local query, callback = unpack(pendingOffers[n]) table.remove(pendingOffers) ShowOffer( query, callback ) end end WaitSeconds(3) end end ) end function ShowOffer( query, callback ) local layout = UIUtil.SkinnableFile('/dialogs/diplomacy-team-alliance/diplomacy-team-alliance_layout.lua') local worldView = import('/lua/modules/ui/game/worldview.lua').view dialog = Bitmap(worldView, UIUtil.SkinnableFile('/dialogs/diplomacy-team-alliance/team-panel_bmp.dds')) dialog:SetRenderPass(UIUtil.UIRP_PostGlow) -- just in case our parent is the map dialog:SetName("Alliance Offer") #LayoutHelpers.AtCenterIn(dialog, worldView) LayoutHelpers.AtHorizontalCenterIn(dialog,worldView) LayoutHelpers.AtTopIn(dialog,worldView) local dialogTitle = UIUtil.CreateText(dialog, "Alliance Offer", 18, UIUtil.titleFont ) dialogTitle:SetColor( UIUtil.dialogCaptionColor ) LayoutHelpers.RelativeTo(dialogTitle, dialog, layout, "l_team-alliance", "team-panel_bmp") local message = UIUtil.CreateText(dialog, query.Text, 12, UIUtil.bodyFont ) LayoutHelpers.RelativeTo(message, dialog, layout, "l_player-text", "team-panel_bmp") local accept = UIUtil.CreateDialogButtonStd(dialog, "/dialogs/standard_btn/standard", "Accept", 12) LayoutHelpers.RelativeTo(accept, dialog, layout, "l_accept_btn_up", "team-panel_bmp") accept.OnClick = function(self, modifiers) dialog:Destroy() dialog = nil callback('accept') end local reject = UIUtil.CreateDialogButtonStd(dialog, "/dialogs/standard_btn/standard", "Reject", 12) LayoutHelpers.RelativeTo(reject, dialog, layout, "l_reject_btn", "team-panel_bmp") reject.OnClick = function(self, modifiers) dialog:Destroy() dialog = nil callback('reject') end local never = UIUtil.CreateDialogButtonStd(dialog, "/dialogs/standard_btn/standard", "Never!", 12) LayoutHelpers.RelativeTo(never, dialog, layout, "l_never_btn", "team-panel_bmp") never.OnClick = function(self, modifiers) dialog:Destroy() dialog = nil callback('never') end end