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]); } }
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(); }
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; }
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(); }
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(); }
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); } }
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(); }
private void UpdateRightColumn(Gui.Widgets.WidgetListView ListView) { UpdateColumn(ListView, SelectedResources); }
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(); }
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; }