Пример #1
0
 private void UpdateColumn(Gui.Widgets.WidgetListView ListView, List <TradeableItem> selectedResources)
 {
     for (var i = 0; i < SelectedResources.Count; ++i)
     {
         UpdateLineItemText(ListView.GetChild(i + 1), selectedResources[i]);
     }
 }
Пример #2
0
        public override void Construct()
        {
            var left  = AddChild(new Widget());
            var right = AddChild(new EmployeeInfo
            {
                OnFireClicked = (sender) =>
                {
                    Root.ShowModalPopup(Root.ConstructWidget(new Gui.Widgets.Confirm
                    {
                        OkayText   = "Fire this dwarf!",
                        CancelText = "Keep this dwarf.",
                        Padding    = new Margin(32, 10, 10, 10),
                        OnClose    = (confirm) =>
                        {
                            if ((confirm as Gui.Widgets.Confirm).DialogResult == Gui.Widgets.Confirm.Result.OKAY)
                            {
                                SoundManager.PlaySound(ContentPaths.Audio.change, 0.5f);
                                var selectedEmployee = (sender as EmployeeInfo).Employee;
                                selectedEmployee.GetRoot().Delete();

                                Faction.Minions.Remove(selectedEmployee);
                                Faction.SelectedMinions.Remove(selectedEmployee);

                                RebuildEmployeeList();
                            }
                        }
                    }));
                }
            }) as EmployeeInfo;

            var bottomBar = left.AddChild(new Widget
            {
                AutoLayout  = AutoLayout.DockBottom,
                MinimumSize = new Point(0, 30)
            });

            EmployeeList = left.AddChild(new Gui.Widgets.WidgetListView
            {
                AutoLayout             = AutoLayout.DockFill,
                Font                   = "font16",
                ItemHeight             = 48,
                OnSelectedIndexChanged = (sender) =>
                {
                    if ((sender as Gui.Widgets.WidgetListView).SelectedIndex >= 0 &&
                        (sender as Gui.Widgets.WidgetListView).SelectedIndex < Faction.Minions.Count)
                    {
                        right.Hidden   = false;
                        right.Employee = Faction.Minions[(sender as Gui.Widgets.WidgetListView).SelectedIndex];
                    }
                    else
                    {
                        right.Hidden = true;
                    }
                }
            }) as Gui.Widgets.WidgetListView;

            RebuildEmployeeList();
        }
Пример #3
0
        public override void Construct()
        {
            var left = AddChild(new Widget
            {
                Background = new TileReference("basic", 0)
            });

            var right = AddChild(new Play.EmployeeInfo.OverviewPanel
            {
                OnFireClicked = (sender) =>
                {
                    RebuildEmployeeList();
                }
            }) as Play.EmployeeInfo.OverviewPanel;

            var bottomBar = left.AddChild(new Widget
            {
                AutoLayout  = AutoLayout.DockBottom,
                MinimumSize = new Point(0, 30)
            });

            var topBar = left.AddChild(new Widget
            {
                AutoLayout  = AutoLayout.DockTop,
                MinimumSize = new Point(0, 32),
                Padding     = new Margin(2, 2, 2, 2)
            });

            topBar.AddChild(new Widget
            {
                MinimumSize       = new Point(64, 0),
                AutoLayout        = AutoLayout.DockLeft,
                Text              = "Filter:",
                TextVerticalAlign = VerticalAlign.Center
            });

            FilterTextField = topBar.AddChild(new EditableTextField
            {
                AutoLayout   = AutoLayout.DockFill,
                OnTextChange = (sender) => RebuildEmployeeList()
            }) as EditableTextField;

            EmployeeList = left.AddChild(new Gui.Widgets.WidgetListView
            {
                AutoLayout             = AutoLayout.DockFill,
                Font                   = "font10",
                ItemHeight             = 64,
                OnSelectedIndexChanged = (sender) =>
                {
                    if (sender is Gui.Widgets.WidgetListView list && list.SelectedIndex > 0 && list.SelectedItem.Tag is CreatureAI creature)
                    {
                        right.Hidden   = false;
                        right.Employee = creature;
                    }
Пример #4
0
        public override void Construct()
        {
            base.Construct();

            OwnerState.OnSystemChanges += () =>
            {
                RefreshModList();
                RebuildModListGUI();
            };

            this.Padding = new Margin(4, 4, 4, 4);
            this.Font    = "font10";

            var top = AddChild(new Widget
            {
                Transparent = true,
                MinimumSize = new Point(0, 32),
                AutoLayout  = AutoLayout.DockTop,
                Padding     = new Margin(2, 2, 2, 2)
            });

            // Todo: Find subscribed but not installed mods.
            // - Will require lazy loading of mod details.

            //if (AssetManagement.Steam.Steam.SteamAvailable)
            //{
            //    var subscribedCount = Steamworks.SteamUGC.GetNumSubscribedItems();
            //    var subscribedFileIds = new Steamworks.PublishedFileId_t[subscribedCount];
            //    Steamworks.SteamUGC.GetSubscribedItems(subscribedFileIds, subscribedCount);

            //    foreach (var fileId in subscribedFileIds.Where(id => !r.Any(m => m.SteamID == (ulong)id)))
            //    {

            //    }
            //}



            ModListGUI = AddChild(new WidgetListView
            {
                ItemHeight = 32,
                AutoLayout = AutoLayout.DockFill,
                Border     = null,
                SelectedItemBackgroundColor = new Vector4(0.5f, 0.5f, 0.5f, 1.0f),
                Padding = new Margin(2, 2, 2, 2)
            }) as WidgetListView;

            RefreshModList();
            RebuildModListGUI();
        }
Пример #5
0
        public override void Construct()
        {
            var left  = AddChild(new Widget());
            var right = AddChild(new EmployeeInfo
            {
                OnFireClicked = (sender) =>
                {
                    RebuildEmployeeList();
                }
            }) as EmployeeInfo;

            var bottomBar = left.AddChild(new Widget
            {
                AutoLayout  = AutoLayout.DockBottom,
                MinimumSize = new Point(0, 30)
            });

            EmployeeList = left.AddChild(new Gui.Widgets.WidgetListView
            {
                AutoLayout             = AutoLayout.DockFill,
                Font                   = "font10",
                ItemHeight             = 64,
                OnSelectedIndexChanged = (sender) =>
                {
                    if ((sender as Gui.Widgets.WidgetListView).SelectedIndex > 0 &&
                        (sender as Gui.Widgets.WidgetListView).SelectedIndex <= World.PlayerFaction.Minions.Count)
                    {
                        right.Hidden   = false;
                        right.Employee = World.PlayerFaction.Minions[(sender as Gui.Widgets.WidgetListView).SelectedIndex - 1];
                    }
                    else
                    {
                        right.Hidden = true;
                    }
                }
            }) as Gui.Widgets.WidgetListView;

            RebuildEmployeeList();
        }
Пример #6
0
        private void UpdateColumn(Gui.Widgets.WidgetListView ListView, List <TradeableItem> selectedResources)
        {
            var lineItems = ListView.GetItems();

            ListView.ClearItems();
            for (var i = 0; i < SelectedResources.Count; ++i)
            {
                Widget lineItem = null;
                if (i >= lineItems.Count)
                {
                    lineItem = CreateLineItem(selectedResources[i]);
                }
                else
                {
                    lineItem = lineItems[i];
                }

                UpdateLineItemText(lineItem, selectedResources[i]);

                ListView.AddItem(lineItem);
            }
        }
Пример #7
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();
        }
Пример #8
0
 private void UpdateRightColumn(Gui.Widgets.WidgetListView ListView)
 {
     UpdateColumn(ListView, SelectedResources);
 }
Пример #9
0
        public override void OnEnter()
        {
            if (ItemSource != null)
            {
                foreach (var path in ItemSource())
                {
                    var meta = path.GetFiles("meta.txt");

                    Items.Add(new ChooserItem
                    {
                        Name  = GetItemName(path.FullName),
                        Path  = path.FullName,
                        Valid = ValidateItem == null ? "" : ValidateItem(path.FullName),
                        Age   = meta.Length > 0 ? DateTime.Now - meta[0].LastWriteTime : DateTime.Now - path.LastWriteTime
                    });
                }
            }

            foreach (var item in Items)
            {
                item.Screenshot = ScreenshotSource(item.Path);
            }

            DwarfGame.GumInputMapper.GetInputQueue();

            GuiRoot = new Gui.Root(DwarfGame.GuiSkin);
            GuiRoot.MousePointer            = new Gui.MousePointer("mouse", 4, 0);
            GuiRoot.RootItem.Transparent    = false;
            GuiRoot.RootItem.InteriorMargin = new Gui.Margin(16, 16, 32, 32);

            BottomBar = GuiRoot.RootItem.AddChild(new Gui.Widget
            {
                AutoLayout          = Gui.AutoLayout.DockBottom,
                MinimumSize         = new Point(0, 60),
                TextHorizontalAlign = Gui.HorizontalAlign.Center,
                TextVerticalAlign   = Gui.VerticalAlign.Center,
                Background          = new Gui.TileReference("basic", 0),
                Font           = "font10",
                InteriorMargin = new Gui.Margin(10, 10, 10, 10)
            });

            if (Items.Count == 0)
            {
                BottomBar.Text = NoItemsText;
            }


            BottomBar.AddChild(new Gui.Widgets.Button
            {
                AutoLayout = Gui.AutoLayout.FloatBottomLeft,
                Border     = "border-button",
                Text       = "< Back",
                Tooltip    = "Back to the main screen",
                OnClick    = (sender, args) =>
                {
                    GameStateManager.PopState();
                }
            });

            Grid = GuiRoot.RootItem.AddChild(new Gui.Widgets.WidgetListView
            {
                AutoLayout                  = Gui.AutoLayout.DockFill,
                Border                      = "border-one",
                Font                        = "font10",
                InteriorMargin              = new Gui.Margin(32, 0, 0, 0),
                TextHorizontalAlign         = HorizontalAlign.Center,
                TextVerticalAlign           = VerticalAlign.Top,
                SelectedItemBackgroundColor = Color.LightBlue.ToVector4(),
                SelectedItemForegroundColor = Color.Black.ToVector4()
            }) as Gui.Widgets.WidgetListView;

            GuiRoot.RootItem.Layout();

            GuiRoot.RootItem.Layout();

            // Must be true or Render will not be called.
            IsInitialized = true;

            base.OnEnter();
        }
Пример #10
0
        public override void Construct()
        {
            base.Construct();

            SubscribedItems = Steam.GetSubscribedMods();

            this.Padding = new Margin(4, 4, 4, 4);
            this.Font    = "font10";

            var top = AddChild(new Widget
            {
                Transparent = true,
                MinimumSize = new Point(0, 32),
                AutoLayout  = AutoLayout.DockTop,
                Padding     = new Margin(2, 2, 2, 2)
            });

            var searchText = top.AddChild(new Gui.Widgets.EditableTextField
            {
                PromptText  = "Enter text to search for",
                AutoLayout  = AutoLayout.DockLeft,
                MinimumSize = new Point(256, 0),
            }) as Gui.Widgets.EditableTextField;

            var button = top.AddChild(new Gui.Widgets.Button
            {
                Text = "Search",
                Font = "font10",
                TextHorizontalAlign = HorizontalAlign.Center,
                TextVerticalAlign   = VerticalAlign.Center,
                Border  = "border-button",
                OnClick = (sender, args) =>
                {
                    if (!Steam.SteamAvailable)
                    {
                        List.ClearItems();
                        List.AddItem(new Widget()
                        {
                            Text       = "Error: Can't connect to steam!",
                            Background = new TileReference("basic", 0),
                            TextColor  = new Vector4(0, 0, 0, 1),
                        });
                        return;
                    }

                    if (!Steam.HasTransactionOfType <UGCQuery>())
                    {
                        Steam.AddTransaction(new UGCTransactionProcessor
                        {
                            Transaction = new UGCQuery
                            {
                                SearchString = searchText.Text
                            },
                            StatusMessageDisplay = QueryStatusMessage,
                            OnSuccess            = (query) => RefreshList((query.Transaction as UGCQuery).Results)
                        });
                    }
                },
                AutoLayout = AutoLayout.DockRight
            });

            searchText.OnEnter = (sender) =>
            {
                button.OnClick.Invoke(button, null);
            };


            QueryStatusMessage = top.AddChild(new Widget
            {
                AutoLayout = AutoLayout.DockFill
            });

            List = AddChild(new WidgetListView
            {
                ItemHeight = 32,
                AutoLayout = AutoLayout.DockFill,
                Border     = null,
                SelectedItemBackgroundColor = new Vector4(0.5f, 0.5f, 0.5f, 1.0f),
                Padding = new Margin(2, 2, 2, 2)
            }) as WidgetListView;
        }