separate diplomacy

into it's own container and yaml file
control IsVisible from IngameChrome
This commit is contained in:
Matthias Mailänder
2013-08-09 11:15:53 +02:00
parent 35370afa19
commit fea8dc11cf
7 changed files with 49 additions and 63 deletions

View File

@@ -21,28 +21,19 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{
static List<Widget> controls = new List<Widget>();
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<ButtonWidget>("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<ButtonWidget>("CLOSE_DIPLOMACY").OnClick = () => { diplomacyBG.Visible = false; };
var close = widget.GetOrNull<ButtonWidget>("CLOSE_DIPLOMACY");
if (close != null)
close.OnClick = () => { Ui.CloseWindow(); onExit(); };
}
// This is shit

View File

@@ -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<ButtonWidget>("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
{

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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