diff --git a/OpenRA.Mods.RA/Widgets/Logic/DiplomacyLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/DiplomacyLogic.cs index b206383a3c..0b52f765c9 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/DiplomacyLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/DiplomacyLogic.cs @@ -21,28 +21,19 @@ namespace OpenRA.Mods.RA.Widgets.Logic { static List controls = new List(); - int validPlayers = 0; readonly World world; [ObjectCreator.UseCtor] - public DiplomacyLogic(World world) + public DiplomacyLogic(Widget widget, Action onExit, World world) { this.world = world; - var root = Ui.Root.Get("INGAME_ROOT"); + var root = Ui.Root.Get("DIPLOMACY"); var diplomacyBG = root.Get("DIPLOMACY_BG"); - var diplomacy = root.Get("INGAME_DIPLOMACY_BUTTON"); + LayoutDialog(diplomacyBG); - diplomacy.OnClick = () => - { - diplomacyBG.Visible = !diplomacyBG.Visible; - if (diplomacyBG.IsVisible()) - LayoutDialog(diplomacyBG); - }; - - validPlayers = world.Players.Where(a => a != world.LocalPlayer && !a.NonCombatant).Count(); - diplomacy.IsVisible = () => (validPlayers > 0); - - diplomacyBG.Get("CLOSE_DIPLOMACY").OnClick = () => { diplomacyBG.Visible = false; }; + var close = widget.GetOrNull("CLOSE_DIPLOMACY"); + if (close != null) + close.OnClick = () => { Ui.CloseWindow(); onExit(); }; } // This is shit diff --git a/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs index e8a1743cea..c78c0b53ac 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/IngameChromeLogic.cs @@ -83,6 +83,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic { var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs()); + Widget diplomacy = null; + diplomacy = Game.LoadWidget(world, "DIPLOMACY", playerWidgets, new WidgetArgs + { + { "onExit", () => diplomacy.Visible = false } + }); + var diplomacyButton = playerWidgets.Get("INGAME_DIPLOMACY_BUTTON"); + diplomacyButton.OnClick = () => diplomacy.Visible ^= true; + int validPlayers = 0; + validPlayers = world.Players.Where(a => a != world.LocalPlayer && !a.NonCombatant).Count(); + diplomacyButton.IsVisible = () => validPlayers > 0; + Widget cheats = null; cheats = Game.LoadWidget(world, "CHEATS_PANEL", playerWidgets, new WidgetArgs { diff --git a/mods/d2k/chrome/ingame.yaml b/mods/d2k/chrome/ingame.yaml index b9d113e351..96e19730c9 100644 --- a/mods/d2k/chrome/ingame.yaml +++ b/mods/d2k/chrome/ingame.yaml @@ -162,30 +162,6 @@ Container@PLAYER_WIDGETS: IconHeight: 48 Columns: 3 Rows: 4 - Background@DIPLOMACY_BG: - Logic:DiplomacyLogic - X:(WINDOW_RIGHT - WIDTH)/2 - Y:(WINDOW_BOTTOM - HEIGHT)/2 - Width:450 - Height:400 - Visible:false - Children: - Label@LABEL_TITLE: - X:(PARENT_RIGHT - WIDTH)/2 - Y:20 - Width:250 - Height:25 - Text:Diplomacy - Align:Center - Font:Bold - Button@CLOSE_DIPLOMACY: - X:(PARENT_RIGHT - WIDTH)/2 - Y:350 - Width:160 - Height:25 - Text:Close - Font:Bold - Key:escape Container@OBSERVER_WIDGETS: Children: diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index 161d48223c..985f66aa4d 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -51,6 +51,7 @@ ChromeLayout: mods/d2k/chrome/gameinit.yaml mods/d2k/chrome/ingame.yaml mods/ra/chrome/ingame-chat.yaml + mods/ra/chrome/ingame-diplomacy.yaml mods/ra/chrome/ingame-fmvplayer.yaml mods/ra/chrome/ingame-menu.yaml mods/ra/chrome/ingame-observerstats.yaml diff --git a/mods/ra/chrome/ingame-diplomacy.yaml b/mods/ra/chrome/ingame-diplomacy.yaml new file mode 100644 index 0000000000..3daa20dd46 --- /dev/null +++ b/mods/ra/chrome/ingame-diplomacy.yaml @@ -0,0 +1,30 @@ +Container@DIPLOMACY: + Logic:DiplomacyLogic + X:25 + Y:50 + Width:950 + Height:500 + Visible:false + Children: + Background@DIPLOMACY_BG: + X:(WINDOW_RIGHT - WIDTH)/2 + Y:(WINDOW_BOTTOM - HEIGHT)/2 + Width:450 + Height:400 + Children: + Label@LABEL_TITLE: + X:(PARENT_RIGHT - WIDTH)/2 + Y:20 + Width:250 + Height:25 + Text:Diplomacy + Align:Center + Font:Bold + Button@CLOSE_DIPLOMACY: + X:(PARENT_RIGHT - WIDTH)/2 + Y:350 + Width:160 + Height:25 + Text:Close + Font:Bold + Key:escape \ No newline at end of file diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml index 450626e20a..afc3e46fa9 100644 --- a/mods/ra/chrome/ingame.yaml +++ b/mods/ra/chrome/ingame.yaml @@ -158,30 +158,6 @@ Container@PLAYER_WIDGETS: ReadyText: READY HoldText: ON HOLD RequiresText: Requires - Background@DIPLOMACY_BG: - Logic:DiplomacyLogic - X:(WINDOW_RIGHT - WIDTH)/2 - Y:(WINDOW_BOTTOM - HEIGHT)/2 - Width:450 - Height:400 - Visible:false - Children: - Label@LABEL_TITLE: - X:(PARENT_RIGHT - WIDTH)/2 - Y:20 - Width:250 - Height:25 - Text:Diplomacy - Align:Center - Font:Bold - Button@CLOSE_DIPLOMACY: - X:(PARENT_RIGHT - WIDTH)/2 - Y:350 - Width:160 - Height:25 - Text:Close - Font:Bold - Key:escape Container@OBSERVER_WIDGETS: Children: diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index dc6175d4e8..531c12857f 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -62,6 +62,7 @@ ChromeLayout: mods/ra/chrome/gameinit.yaml mods/ra/chrome/ingame.yaml mods/ra/chrome/ingame-chat.yaml + mods/ra/chrome/ingame-diplomacy.yaml mods/ra/chrome/ingame-fmvplayer.yaml mods/ra/chrome/ingame-menu.yaml mods/ra/chrome/ingame-objectives.yaml