Beispiel #1
0
        public MainMenuState(DwarfGame game, GameStateManager stateManager) :
            base(game, "MainMenuState", stateManager)
        {
            ResourceLibrary library = new ResourceLibrary();

            Embarkment.Initialize();
            VoxelChunk.InitializeStatics();
            IsGameRunning = false;
            MaintainState = false;
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
        }
    }