public MainMenuState(DwarfGame game, GameStateManager stateManager) : base(game, "MainMenuState", stateManager) { ResourceLibrary library = new ResourceLibrary(); Embarkment.Initialize(); VoxelChunk.InitializeStatics(); IsGameRunning = false; MaintainState = false; }
public LoadState(DwarfGame game, Overworld settings, LoadTypes LoadType) : base(game) { this.LoadType = LoadType; Settings = settings; EnableScreensaver = true; InitialEmbarkment = settings.InstanceSettings.InitalEmbarkment; InitialCell = settings.InstanceSettings.Cell; Runner = new DwarfRunner(game); }
public override void Construct() { PopupDestructionType = PopupDestructionType.Keep; Padding = new Margin(2, 2, 2, 2); //Set size and center on screen. Rect = Root.RenderData.VirtualScreen; Border = "border-fancy"; ValidationLabel = AddChild(new Widget { MinimumSize = new Point(0, 48), AutoLayout = AutoLayout.DockBottom, Font = "font16" }); ValidationLabel.AddChild(new Gui.Widget { Text = "Okay", Border = "border-button", ChangeColorOnHover = true, TextColor = new Vector4(0, 0, 0, 1), Font = "font16", AutoLayout = Gui.AutoLayout.FloatBottomRight, OnClick = (sender, args) => { foreach (var resource in ResourceColumns.SelectedResources) { Settings.InstanceSettings.InitalEmbarkment.Resources.Add(resource); } var message = ""; var valid = Embarkment.ValidateEmbarkment(Settings, out message); if (valid == InstanceSettings.ValidationResult.Pass) { this.Close(); } else if (valid == InstanceSettings.ValidationResult.Query) { var popup = new Gui.Widgets.Confirm() { Text = message, OnClose = (_sender) => { if ((_sender as Gui.Widgets.Confirm).DialogResult == Gui.Widgets.Confirm.Result.OKAY) { this.Close(); } } }; Root.ShowModalPopup(popup); } else if (valid == InstanceSettings.ValidationResult.Reject) { var popup = new Gui.Widgets.Confirm() { Text = message, CancelText = "" }; Root.ShowModalPopup(popup); } } }); var columns = AddChild(new Gui.Widgets.Columns { ColumnCount = 2, AutoLayout = AutoLayout.DockFill }); var employeeStack = columns.AddChild(new Widget { MinimumSize = new Point(256, 0) }); employeeStack.AddChild(new Widget { Text = "Employees", Font = "font16", AutoLayout = AutoLayout.DockTop }); employeeStack.AddChild(new Widget { Text = "+ new employee", Font = "font16", ChangeColorOnHover = true, AutoLayout = AutoLayout.DockTop, OnClick = (sender, args) => { var dialog = Root.ConstructWidget( new ChooseEmployeeTypeDialog() { Settings = Settings, OnClose = (_s) => { RebuildEmployeeList(); UpdateCost(); } }); Root.ShowModalPopup(dialog); } }); var costPanel = employeeStack.AddChild(new Widget { MinimumSize = new Point(0, 128), AutoLayout = AutoLayout.DockBottom }); var availableFunds = costPanel.AddChild(CreateBar("Funds Available:")); availableFunds.AddChild(new Widget { AutoLayout = AutoLayout.DockRight, Text = FundsAvailable.ToString(), MinimumSize = new Point(128, 0), TextHorizontalAlign = HorizontalAlign.Right }); var moneyBar = costPanel.AddChild(CreateBar("Ready Cash:")); Cash = moneyBar.AddChild(new Gui.Widgets.MoneyEditor { MaximumValue = (int)FundsAvailable, MinimumSize = new Point(128, 33), AutoLayout = AutoLayout.DockRight, OnValueChanged = (sender) => { Settings.InstanceSettings.InitalEmbarkment.Funds = (sender as Gui.Widgets.MoneyEditor).CurrentValue; UpdateCost(); }, Tooltip = "Money to take.", TextHorizontalAlign = HorizontalAlign.Right }) as Gui.Widgets.MoneyEditor; var employeeCostBar = costPanel.AddChild(CreateBar("Signing Bonuses:")); EmployeeCost = employeeCostBar.AddChild(new Widget { AutoLayout = AutoLayout.DockRight, Text = "$0", MinimumSize = new Point(128, 0), TextHorizontalAlign = HorizontalAlign.Right }); var totalBar = costPanel.AddChild(CreateBar("Total Cost:")); TotalCost = totalBar.AddChild(new Widget { AutoLayout = AutoLayout.DockRight, Text = "$0", MinimumSize = new Point(128, 0), TextHorizontalAlign = HorizontalAlign.Right }); EmployeeList = employeeStack.AddChild(new Gui.Widgets.WidgetListView { AutoLayout = Gui.AutoLayout.DockFill, SelectedItemForegroundColor = new Vector4(0, 0, 0, 1) }) as Gui.Widgets.WidgetListView; RebuildEmployeeList(); ResourceColumns = columns.AddChild(new EmbarkmentResourceColumns { ComputeValue = (resourceType) => { var r = Library.GetResourceType(resourceType); return(r.MoneyValue); }, SourceResources = Settings.PlayerCorporationResources.Enumerate().ToList(), SelectedResources = Settings.InstanceSettings.InitalEmbarkment.Resources.Enumerate().ToList(), LeftHeader = "Available", RightHeader = "Taking" }) as EmbarkmentResourceColumns; Layout(); UpdateCost(); base.Construct(); }
public void buildBoard() { //looks f****d but builds the track Track nexttrack; Track currentTrack = new Rail(); Track PreviousTrack; for (int i = 0; i < 12; i++) { Embarkment rail = new Embarkment(); board[i + "-0"] = rail; Debug.WriteLine(i + "-0"); if (i != 0) { rail.NextTrack = (Track)board[(i - 1) + "-0"]; } } for (int i = 10; i > -1; i--) { Track rail = (Track)board[i + "-0"]; rail.PreviousTrack = (Track)board[(i + 1) + "-0"]; } currentTrack = (Track)board["11-0"]; PreviousTrack = new Rail(); PreviousTrack.NextTrack = currentTrack; currentTrack.PreviousTrack = PreviousTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["11-1"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["11-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["11-3"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["10-3"] = currentTrack; Rail primaryPrev = new Rail(); Rail SecondaryPrev = new Rail(); Switch newSwitch = new Switch(currentTrack, null, primaryPrev, SecondaryPrev); switches.Add(newSwitch); currentTrack.PreviousTrack = newSwitch; primaryPrev.NextTrack = newSwitch; SecondaryPrev.NextTrack = newSwitch; board["9-3"] = newSwitch; currentTrack = SecondaryPrev; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["9-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["8-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["7-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["6-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["5-2"] = currentTrack; Track primaryNext = currentTrack; Track secondaryNext = new Rail(); PreviousTrack = new Rail(); newSwitch = new Switch(primaryNext, secondaryNext, PreviousTrack, null); switches.Add(newSwitch); primaryNext.PreviousTrack = newSwitch; secondaryNext.PreviousTrack = newSwitch; PreviousTrack.NextTrack = newSwitch; board["5-3"] = newSwitch; currentTrack = PreviousTrack; board["4-3"] = currentTrack; primaryPrev = new Rail(); SecondaryPrev = new Rail(); newSwitch = new Switch(currentTrack, null, primaryPrev, SecondaryPrev); switches.Add(newSwitch); currentTrack.PreviousTrack = newSwitch; primaryPrev.NextTrack = newSwitch; SecondaryPrev.NextTrack = newSwitch; board["3-3"] = newSwitch; currentTrack = SecondaryPrev; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["3-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["2-2"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["1-2"] = currentTrack; Silo silo = new Silo { NextTrack = currentTrack }; silos.Add(silo); board["0-2"] = silo; newSwitch = (Switch)board["3-3"]; currentTrack = newSwitch.PrimaryPrevious; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["3-4"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["2-4"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["1-4"] = currentTrack; silo = new Silo { NextTrack = currentTrack }; silos.Add(silo); board["0-4"] = silo; newSwitch = (Switch)board["9-3"]; currentTrack = newSwitch.PrimaryPrevious; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["9-4"] = currentTrack; currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["8-4"] = currentTrack; primaryNext = currentTrack; secondaryNext = new Rail(); PreviousTrack = new Rail(); newSwitch = new Switch(primaryNext, secondaryNext, PreviousTrack, null); switches.Add(newSwitch); primaryNext.PreviousTrack = newSwitch; secondaryNext.PreviousTrack = newSwitch; PreviousTrack.NextTrack = newSwitch; board["8-5"] = newSwitch; currentTrack = PreviousTrack; board["7-5"] = currentTrack; newSwitch = new Switch(currentTrack, null, primaryPrev, SecondaryPrev); switches.Add(newSwitch); currentTrack.PreviousTrack = newSwitch; primaryPrev.NextTrack = newSwitch; SecondaryPrev.NextTrack = newSwitch; board["6-5"] = newSwitch; currentTrack = SecondaryPrev; newSwitch = (Switch)board["3-3"]; PreviousTrack = newSwitch.SecondaryPrevious; currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["6-4"] = currentTrack; board["5-4"] = PreviousTrack; newSwitch = (Switch)board["6-5"]; currentTrack = newSwitch.PrimaryPrevious; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board["6-6"] = currentTrack; for (int i = 5; i > 0; i--) { currentTrack = PreviousTrack; PreviousTrack = new Rail(); currentTrack.PreviousTrack = PreviousTrack; PreviousTrack.NextTrack = currentTrack; board[i + "-6"] = currentTrack; } silo = new Silo { NextTrack = currentTrack }; silos.Add(silo); board["0-6"] = silo; newSwitch = (Switch)board["8-5"]; currentTrack = newSwitch.SecondaryNext; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["8-6"] = currentTrack; currentTrack = nexttrack; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["9-6"] = currentTrack; currentTrack = nexttrack; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["10-6"] = currentTrack; currentTrack = nexttrack; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["11-6"] = currentTrack; currentTrack = nexttrack; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["11-7"] = currentTrack; currentTrack = nexttrack; nexttrack = new Rail(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board["10-7"] = currentTrack; for (int i = 9; i > 0; i--) { currentTrack = nexttrack; nexttrack = new Yard(); currentTrack.NextTrack = nexttrack; nexttrack.PreviousTrack = currentTrack; board[i + "-7"] = currentTrack; } }