public MatchLobbyScreen( Vector2f WindowSize, bool Host, MatchLobby Lobby, Chat Chat, Player Player, IEnumerable <Scenario> Scenarios) : base(WindowSize) { _Host = Host; _Lobby = Lobby; _Lobby.OnActionApplied += (sender, e) => _Dirty = true; _Player = Player; _Scenarios = Scenarios.ToList(); ChatView = new ChatView( Chat, "match-lobby-chat-display", "match-lobby-chat", "match-lobby-chat-message", "text-input"); ChatView.Position = new Vector2f(_Display.Size.X + 16, 0); _LaunchButton.Position = new Vector2f(0, _Pane.Size.Y - _LaunchButton.Size.Y - 32); _LaunchButton.Enabled = Host; _LaunchButton.OnClick += HandleLaunched; _ScenarioSelect.Enabled = Host; _ScenarioSelect.OnChange += HandleScenarioSelected; _Pane.Position = .5f * (WindowSize - _Pane.Size); _Pane.Add(_Display); _Pane.Add(_LaunchButton); _Pane.Add(ChatView); DisplayPlayers(); }
public MatchRecordSelectScreen(Vector2f WindowSize, string Path) : base(WindowSize) { if (Directory.Exists(Path)) { foreach (FileInfo file in Directory.EnumerateFiles(Path).Select(i => new FileInfo(i))) { var option = new SelectionOption <FileInfo>("match-record-selection-option") { DisplayedString = file.Name, Value = file }; _MatchRecordSelect.Add(option); } } _MatchRecordSelect.OnChange += HandleSelect; _ScenarioView.Position = new Vector2f(_MatchRecordSelect.Size.X + 16, 0); _StartButton.OnClick += HandleStart; _StartButton.Position = new Vector2f(0, _Display.Size.Y - _StartButton.Size.Y - 32); _Display.Position = .5f * (WindowSize - _Display.Size); _Display.Add(_MatchRecordSelect); _Display.Add(_ScenarioView); _Display.Add(_StartButton); _Items.Add(_Display); }
public LibraryState() : base("Library") { Util.Assert(CoM.AllDataLoaded, "Data must be loaded before LibraryState can be created."); MainWindow.Width = 600; MainWindow.Height = 480; // -------------------------------------- ItemsWindow = new LibraryItemsView(); MonstersWindow = new LibraryMonstersView(); RecordsWindow = new LibraryRecordsView(); // -------------------------------------- var buttonGroup = new GuiRadioButtonGroup(); buttonGroup.EnableBackground = true; buttonGroup.OnValueChanged += delegate { ItemsWindow.Visible = buttonGroup.SelectedIndex == 0; MonstersWindow.Visible = buttonGroup.SelectedIndex == 1; RecordsWindow.Visible = buttonGroup.SelectedIndex == 2; }; buttonGroup.AddItem("Items"); buttonGroup.AddItem("Monsters"); buttonGroup.AddItem("Records"); buttonGroup.ButtonSize = new Vector2(120, 28); buttonGroup.Height = 45; buttonGroup.Style = Engine.GetStyleCopy("Solid"); buttonGroup.Color = Color.black.Faded(0.5f); buttonGroup.Width = MainWindow.Width; buttonGroup.Height = 45; MainWindow.Add(buttonGroup); buttonGroup.SelectedIndex = 0; // -------------------------------------- var BodySection = new GuiContainer(MainWindow.Width, MainWindow.Height - buttonGroup.Height) { Y = buttonGroup.Height }; MainWindow.Add(BodySection); BodySection.Add(ItemsWindow); BodySection.Add(MonstersWindow); BodySection.Add(RecordsWindow); // -------------------------------------- RepositionControls(); MainWindow.Background.Sprite = ResourceManager.GetSprite("Gui/InnerWindow"); MainWindow.Background.Color = new Color(0.4f, 0.42f, 0.62f); }
public void SetScenario( Scenario Scenario, UnitConfigurationRenderer UnitRenderer, FactionRenderer FactionRenderer) { _ScenarioDisplay.Clear(); foreach (ArmyConfiguration army in Scenario.ArmyConfigurations) { _ScenarioDisplay.Add( new Button("scenario-army-header") { DisplayedString = ObjectDescriber.Describe(army.Faction) }); var factionMount = new GuiContainer <GuiItem>("scenario-faction-mount"); Vector2f size = factionMount.Size - factionMount.LeftPadding * 2; var faction = new FactionView(army.Faction, FactionRenderer, Math.Min(size.X, size.Y)); faction.Position = .5f * (factionMount.Size - faction.Size) - factionMount.LeftPadding; factionMount.Add(faction); _ScenarioDisplay.Add(factionMount); foreach (DeploymentConfiguration deployment in army.DeploymentConfigurations) { _ScenarioDisplay.Add(new DeploymentRow(deployment, army.Faction, UnitRenderer)); } foreach (ObjectiveSuccessTrigger trigger in army.VictoryCondition.Triggers) { _ScenarioDisplay.Add(new VictoryConditionRow(trigger)); } } _DetailDisplay.Clear(); AddDetail("Environment", ObjectDescriber.Describe(Scenario.Environment)); AddDetail("Turns", Scenario.TurnConfiguration.Turns.ToString()); AddSequence("Deploy Order", Scenario.TurnConfiguration.DeploymentOrder, Scenario.ArmyConfigurations.ToArray()); AddSequence("Turn Order", Scenario.TurnConfiguration.TurnOrder, Scenario.ArmyConfigurations.ToArray()); AddDetail("Strength", Scenario.ArmyConfigurations.Select(i => DescribeStrength(i)).ToArray()); }
public VictoryConditionPane(Match Match, FactionRenderer FactionRenderer) : base("victory-condition-pane") { _CloseButton.Position = new Vector2f(Size.X - _CloseButton.Size.X - LeftPadding.X * 2, 0); _CloseButton.OnClick += HandleClose; _VictoryConditionDisplay.Position = new Vector2f(0, _CloseButton.Size.Y + 24); foreach (ArmyConfiguration army in Match.Scenario.ArmyConfigurations) { _VictoryConditionDisplay.Add( new Button("scenario-army-header") { DisplayedString = ObjectDescriber.Describe(army.Faction) }); var factionMount = new GuiContainer <GuiItem>("scenario-faction-mount"); Vector2f size = factionMount.Size - factionMount.LeftPadding * 2; var faction = new FactionView(army.Faction, FactionRenderer, Math.Min(size.X, size.Y)); faction.Position = .5f * (factionMount.Size - faction.Size) - factionMount.LeftPadding; factionMount.Add(faction); _VictoryConditionDisplay.Add(factionMount); foreach (ObjectiveSuccessTrigger trigger in army.VictoryCondition.Triggers) { _VictoryConditionDisplay.Add(new VictoryConditionRow(trigger)); } } Add(_CloseButton); Add(_VictoryConditionDisplay); }
public TownBuildingState(string name) : base(name) { int uiMargin = 10; GuiImage Background = new GuiImage(0, 0, ResourceManager.GetSprite("Backgrounds/Town")); Background.BestFit(ContentsFrame); Add(Background, 0, 0); LeftTwoThirds = new GuiContainer(Width - 340, Height); Add(LeftTwoThirds); LowerSection = new GuiWindow(0, 0); LowerSection.Background.Color = new Color(0.4f, 0.4f, 0.4f); LeftTwoThirds.Add(LowerSection); MainWindow = new GuiWindow(600, 500, name); LeftTwoThirds.Add(MainWindow, 0, 0); BackButton = new GuiButton("Back"); BackButton.OnMouseClicked += delegate { Engine.PopState(); }; LowerSection.Add(BackButton); // UI Party = new GuiPartyInfo(0, 0); Party.Party = CoM.Party; Add(Party, -uiMargin, -uiMargin); CharacterInfo = new GuiCharacterTabControl(); Add(CharacterInfo, -uiMargin, uiMargin); ItemInventory = new GuiItemInventory(); Add(ItemInventory, -uiMargin, CharacterInfo.Height + uiMargin); RepositionControls(); }
private void createButons() { buttonsGroup = new GuiContainer(Width, 200); Add(buttonsGroup, 0, 250); // Sell var sellFrame = new GuiContainer(300, 50); sellFrame.Style = Engine.GetStyleCopy("Frame"); buttonsGroup.Add(sellFrame, 0, 1); sellButton = new GuiButton("Sell", 80); sellFrame.Add(sellButton, 10, 0); sellPrice = new GuiCoinAmount(); sellFrame.Add(sellPrice, 150, 0); // ID var IDFrame = new GuiContainer(300, 50); IDFrame.Style = Engine.GetStyleCopy("Frame"); buttonsGroup.Add(IDFrame, 0, 1 + 48); idButton = new GuiButton("ID", 80); IDFrame.Add(idButton, 10, 0); idPrice = new GuiCoinAmount(); IDFrame.Add(idPrice, 150, 0); sellButton.OnMouseClicked += delegate { SellItem(); }; idButton.OnMouseClicked += delegate { IdItem(); }; buttonsGroup.FitToChildren(); }
void MakeSection(string SectionName, GuiItem Input, SingleColumnTable Display) { var header = new Button("header-2") { DisplayedString = SectionName }; var container = new GuiContainer <Pod>("scenario-builder-parameters-section"); container.Add(Input); Display.Add(header); Display.Add(container); }
public ScenarioSelectScreen(Vector2f WindowSize, IEnumerable <Scenario> Scenarios) : base(WindowSize) { _Renderer = new UnitConfigurationRenderer( Scenarios.SelectMany(i => i.UnitConfigurations).Distinct(), GameData.UnitRenderDetails, 128, 1024, ClassLibrary.Instance.GetFont("compacta")); _FactionRenderer = new FactionRenderer( Scenarios.SelectMany(i => i.ArmyConfigurations.Select(j => j.Faction)).Distinct(), GameData.FactionRenderDetails, 512, 1024); foreach (Scenario s in Scenarios) { var option = new SelectionOption <Scenario>("scenario-selection-option") { DisplayedString = s.Name, Value = s }; _ScenarioSelect.Add(option); } _ScenarioSelect.OnChange += HandleSelect; _ScenarioView.Position = new Vector2f(_ScenarioSelect.Size.X + 16, 0); _StartButton.OnClick += HandleStart; _StartButton.Position = new Vector2f(0, _Display.Size.Y - _StartButton.Size.Y - 32); _Display.Position = .5f * (WindowSize - _Display.Size); _Display.Add(_ScenarioSelect); _Display.Add(_ScenarioView); _Display.Add(_StartButton); _Items.Add(_Display); }
public LogInPlayerScreen(Vector2f WindowSize) : base(WindowSize) { _Display.Add(new Button("join-server-header-1") { DisplayedString = "Log In" }); _Display.Add(new Button("join-server-header-2") { DisplayedString = "Server IP" }); _Display.Add(_ServerInput); _Display.Add(new Button("join-server-header-2") { DisplayedString = "Username" }); _Display.Add(_UsernameInput); _Display.Add(new Button("join-server-header-2") { DisplayedString = "Password" }); _Display.Add(_PasswordInput); _RegisterButton.Position = new Vector2f(0, _Pane.Size.Y - _RegisterButton.Size.Y - 32); _RegisterButton.OnClick += HandleRegister; _LogInButton.Position = new Vector2f(0, _RegisterButton.Position.Y - _LogInButton.Size.Y - 4); _LogInButton.OnClick += HandleLogIn; _Pane.Position = .5f * (WindowSize - _Pane.Size); _Pane.Add(_Display); _Pane.Add(_LogInButton); _Pane.Add(_RegisterButton); _Items.Add(_Pane); }
public GuildState() : base("Guild") { Util.Assert(CoM.AllDataLoaded, "Data must be loaded before GuildState can be created."); MainWindow.Width = 600; MainWindow.Height = 450; // -------------------------------------- MainWindow.InnerShadow = true; MainWindow.Background.Align = GuiAlignment.None; MainWindow.Background.Sprite = ResourceManager.GetSprite("Backgrounds/TownGuild"); MainWindow.Background.Color = Color.white; MainWindow.Background.BestFit(MainWindow.ContentsFrame, true); MainWindow.PositionComponent(MainWindow.Background, 0, 0); GuildInfoSection = new GuiContainer((int)MainWindow.ContentsBounds.width - 200, (int)MainWindow.ContentsBounds.height); MainWindow.Add(GuildInfoSection, -1, 0); GuildListSection = new GuiContainer(205, (int)MainWindow.ContentsBounds.height + 10); GuildListSection.X = -5; GuildListSection.Y = -5; GuildListSection.Style = Engine.GetStyleCopy("Frame"); GuildListSection.EnableBackground = true; GuildListSection.Color = new Color(1f, 1f, 1f, 0.75f); MainWindow.Add(GuildListSection); GuildList = new GuiListBox <MDRGuild>(0, 0, 180, 300); GuildListSection.Add(GuildList, 15, 15); GuildTitle = new GuiLabel(-5, -5, "", GuildInfoSection.Width, 50); GuildTitle.Align = GuiAlignment.Top; GuildTitle.TextAlign = TextAnchor.MiddleCenter; GuildTitle.FontSize = 22; GuildInfoSection.Add(GuildTitle); GuildInfo = new GuiLabel(10, 50, "", (int)GuildInfoSection.ContentsFrame.width - 10); GuildInfo.WordWrap = true; GuildInfoSection.Add(GuildInfo); // -------------------------------------- JoinButton = new GuiButton("Join", 120); GuildInfoSection.Add(JoinButton, 0, -20); LevelButton = new GuiButton("Level", 120); GuildInfoSection.Add(LevelButton, 0, -20); GuildList.OnSelectedChanged += delegate { updateGuildInfo(); }; JoinButton.OnMouseClicked += delegate { JoinGuild(); }; LevelButton.OnMouseClicked += delegate { LevelUp(); }; GuildList.DoConvertItemToString = delegate(MDRGuild guild) { bool hasPrereq = (guild.RequiredGuild != null); bool couldJoin = guild.CanAccept(Character); bool isMemeber = Character.Membership[guild].IsMember; bool currentMember = (guild == Character.CurrentGuild); string levelInfo = isMemeber ? "(" + Character.Membership[guild].CurrentLevel + ")" : ""; string guildDescription = guild.Name + levelInfo; if (hasPrereq) { guildDescription = " " + guildDescription; } if (currentMember) { guildDescription = Util.Colorise(guildDescription, Color.yellow, true); } else if (isMemeber) { guildDescription = Util.Colorise(guildDescription, new Color(0.9f, 0.9f, 0.9f)); } else if (couldJoin) { guildDescription = Util.Colorise(guildDescription, new Color(0.9f, 0.9f, 0.9f)); } else { guildDescription = Util.Colorise(guildDescription, new Color(0.7f, 0.7f, 0.7f)); } return(guildDescription); }; CoM.Party.OnSelectedChanged += delegate { RefreshUI(); }; RepositionControls(); RefreshUI(); }
/** Create the store ui */ //todo: remove sizes public GuiStore(MDRStore store, int width = 800, int height = 600) : base(width, height) { int splitWidth = (width / 2) + 50; const int HEADER_HEIGHT = 50; WindowStyle = GuiWindowStyle.ThinTransparent; StoreSelectedItemID = -1; Store = store; CanReceiveFocus = true; DragDropEnabled = true; // ----------------------------------------- // Main areas var mainArea = new GuiContainer(0, (int)ContentsBounds.height - HEADER_HEIGHT); mainArea.Align = GuiAlignment.Bottom; // ----------------------------------------- // Header var headerArea = new GuiContainer((int)ContentsBounds.width, HEADER_HEIGHT); headerArea.EnableBackground = true; headerArea.Style = Engine.GetStyleCopy("Frame"); headerArea.Y -= 4; headerArea.X -= 4; headerArea.Width += 8; modeButtons = new GuiRadioButtonGroup(); modeButtons.AddItem("Buy"); modeButtons.AddItem("Sell"); modeButtons.ButtonSize = new Vector2(120, 30); modeButtons.ButtonSpacing = 50; modeButtons.EnableBackground = false; headerArea.Add(modeButtons, 0, 0, true); modeButtons.OnValueChanged += delegate { _mode = (StoreMode)modeButtons.SelectedIndex; updateStoreMode(); }; Add(headerArea); Add(mainArea); // ----------------------------------------- // Item Info Area GuiPanel itemInfoPanel = new GuiPanel((int)ContentsBounds.width - splitWidth); itemInfoPanel.Align = GuiAlignment.Right; itemInfoPanel.EnableBackground = false; mainArea.Add(itemInfoPanel, -1, 1, true); itemInfoBackground = new GuiImage(0, 0, ResourceManager.GetSprite("Gui/InnerWindow")); itemInfoBackground.Align = GuiAlignment.Full; itemInfoBackground.Color = Colors.StoreItemInfoBackgroundColor; itemInfoPanel.Add(itemInfoBackground); SelectedItemInfo = new GuiItemToolTip(); SelectedItemInfo.EnableBackground = false; SelectedItemInfo.Align = GuiAlignment.Full; SelectedItemInfo.ShowAllInfo = true; itemInfoPanel.Add(SelectedItemInfo); // ----------------------------------------- // Item Buy Area buyItemArea = new GuiContainer(splitWidth, (int)ContentsBounds.height); buyItemArea.Align = GuiAlignment.Left; mainArea.Add(buyItemArea); itemListingScrollArea = new GuiScrollableArea(buyItemArea.Width, buyItemArea.Height, ScrollMode.VerticalOnly); buyItemArea.Add(itemListingScrollArea); filterItemsToggle = new GuiToggleButton(); filterItemsToggle.OnValueChanged += delegate { ShowOnlyUsableItems = filterItemsToggle.Value; }; mainArea.Add(filterItemsToggle, -10, -10); filterItemsToggle.Visible = false; buyButton = new GuiButton("Buy"); buyButton.OnMouseClicked += DoBuy; itemInfoPanel.Add(buyButton, 0, -30); notEnoughGold = new GuiLabel("No enough coins"); notEnoughGold.FontColor = new Color(0.5f, 0.5f, 0.5f, 0.9f); notEnoughGold.Visible = false; itemInfoPanel.Add(notEnoughGold, 0, -56); // ----------------------------------------- // item Sell area sellItemArea = new GuiSellItemArea((int)mainArea.ContentsBounds.width - splitWidth, (int)mainArea.ContentsBounds.height, store); sellItemArea.Align = GuiAlignment.Right; sellItemArea.OnSell += delegate { Mode = StoreMode.Buy; }; mainArea.Add(sellItemArea); // ----------------------------------------- CoM.Party.OnSelectedChanged += createStoreListings; store.OnInventoryChanged += createStoreListings; updateStoreMode(); createStoreListings(); }
public ArmyBuilderScreen( Vector2f WindowSize, IEnumerable <UnitConfigurationLink> UnitConfigurations, ArmyParameters Parameters, UnitConfigurationRenderer Renderer) : base(WindowSize) { _Parameters = Parameters; _Links = UnitConfigurations; _Pane.Position = .5f * (WindowSize - _Pane.Size); var header = new Button("army-builder-header") { DisplayedString = string.Format( "{0} - {1} - {2}", ObjectDescriber.Describe(Parameters.Faction), ObjectDescriber.Describe(Parameters.Parameters.Setting.Front), Parameters.Parameters.Year) }; _UnitClassSelect.Position = new Vector2f(0, header.Size.Y); _AvailableUnits = new UnitConfigurationTable( "army-builder-table", "army-builder-table-row", "army-builder-table-cell", _Parameters.Faction, Renderer, false); _AvailableUnits.Position = new Vector2f(0, _UnitClassSelect.Position.Y + _UnitClassSelect.Size.Y + 16); _AvailableUnits.OnUnitClicked += HandleAddUnit; _AvailableUnits.OnUnitRightClicked += HandleUnitInfoRequested; _PointTotalButton = new Button("army-builder-point-total"); _PointTotalButton.Position = new Vector2f(_AvailableUnits.Size.X + 16, header.Size.Y); SetPointTotal(0); _SelectedUnits = new UnitConfigurationTable( "army-builder-table", "army-builder-table-row", "army-builder-table-cell", _Parameters.Faction, Renderer, true); _SelectedUnits.Position = new Vector2f(_AvailableUnits.Size.X + 16, _PointTotalButton.Position.Y + _PointTotalButton.Size.Y + 16); _SelectedUnits.OnUnitRightClicked += HandleRemoveUnit; foreach (UnitClass c in Enum.GetValues(typeof(UnitClass))) { _UnitClassSelect.Add( new SelectionOption <UnitClass>("army-builder-select-option") { DisplayedString = ObjectDescriber.Describe(c), Value = c }); } _UnitClassSelect.OnChange += FilterUnits; FilterUnits(); var finishedButton = new Button("army-builder-large-button") { DisplayedString = "Finished" }; finishedButton.Position = _Pane.Size - finishedButton.Size - new Vector2f(32, 32); finishedButton.OnClick += HandleFinished; _Pane.Add(header); _Pane.Add(_AvailableUnits); _Pane.Add(_SelectedUnits); _Pane.Add(_PointTotalButton); _Pane.Add(_UnitClassSelect); _Pane.Add(finishedButton); _Items.Add(_Pane); }
public ScenarioBuilderScreen(Vector2f WindowSize, ScenarioBuilder ScenarioBuilder) : base(WindowSize, true) { this.ScenarioBuilder = ScenarioBuilder; var header = new Button("scenario-builder-header") { DisplayedString = "Custom Scenario" }; _Pane.Add(header); _LeftDisplay.Position = new Vector2f(0, header.Size.Y); _ArmiesTable.Position = new Vector2f(_LeftDisplay.Size.X + 32, header.Size.Y); MakeSection("Year", _YearSelect, _LeftDisplay); _YearSelect.OnChange += HandleParametersChanged; for (uint i = 1939; i < 1946; ++i) { _YearSelect.Add( new SelectionOption <uint>( "scenario-builder-parameters-section-select-option") { DisplayedString = i.ToString(), Value = i }); } _YearSelect.SetValue(i => i.Value == ScenarioBuilder.Parameters.Year); MakeSection("Setting", _SettingSelect, _LeftDisplay); _SettingSelect.OnChange += HandleParametersChanged; foreach (MatchSetting setting in GameData.MatchSettings.Values) { _SettingSelect.Add( new SelectionOption <MatchSetting>("scenario-builder-parameters-section-select-option") { DisplayedString = ObjectDescriber.Describe(setting), Value = setting }); } _SettingSelect.SetValue(i => i.Value == ScenarioBuilder.Parameters.Setting); MakeSection("Turns", _TurnsSelect, _LeftDisplay); _TurnsSelect.OnChange += HandleParametersChanged; for (byte i = 6; i <= 16; i += 2) { _TurnsSelect.Add( new SelectionOption <byte>("scenario-builder-parameters-section-select-option") { DisplayedString = i.ToString(), Value = i }); } _TurnsSelect.SetValue(i => i.Value == ScenarioBuilder.Parameters.Turns); MakeSection("Fog of War", _FogOfWarCheckbox, _LeftDisplay); _FogOfWarCheckbox.OnChange += HandleParametersChanged; _FogOfWarCheckbox.Value = ScenarioBuilder.Parameters.FogOfWar; MakeSection("Map Width", _MapWidthInput, _LeftDisplay); _MapWidthInput.OnChange += HandleParametersChanged; _MapWidthInput.Value = ScenarioBuilder.Parameters.MapSize.X.ToString(); MakeSection("Map Height", _MapHeightInput, _LeftDisplay); _MapHeightInput.OnChange += HandleParametersChanged; _MapHeightInput.Value = ScenarioBuilder.Parameters.MapSize.Y.ToString(); _Pane.Position = .5f * (WindowSize - _Pane.Size); var addArmyButton = new Button("scenario-builder-army-section-add-button") { DisplayedString = "+" }; addArmyButton.OnClick += HandleArmyAdded; _ArmiesTable.Add( new TableRow("scenario-builder-army-section-header") { new Button("scenario-builder-army-section-faction-header") { DisplayedString = "Faction" }, new Button("scenario-builder-army-section-points-header") { DisplayedString = "Points" }, new Button("scenario-builder-army-section-team-header") { DisplayedString = "Team" }, addArmyButton }); var finishedButton = new Button("large-button") { DisplayedString = "Finished" }; finishedButton.Position = new Vector2f(0, _Pane.Size.Y - finishedButton.Size.Y - 32); finishedButton.OnClick += HandleFinished; _Pane.Add(finishedButton); _Pane.Add(_LeftDisplay); _Pane.Add(_ArmiesTable); _Items.Add(_Pane); }