public static void ShowUIScaleDropdown(DropDownButtonWidget dropdown, GraphicSettings gs) { Func <float, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => gs.UIScale == o, () => { Game.RunAfterTick(() => { var oldScale = gs.UIScale; gs.UIScale = o; Game.Renderer.SetUIScale(o); RecalculateWidgetLayout(Ui.Root); Viewport.LastMousePos = (Viewport.LastMousePos.ToFloat2() * oldScale / gs.UIScale).ToInt2(); }); }); var label = $"{(int)(100 * o)}%"; item.Get <LabelWidget>("LABEL").GetText = () => label; return(item); }; var viewportSizes = Game.ModData.Manifest.Get <WorldViewportSizes>(); var maxScales = new float2(Game.Renderer.NativeResolution) / new float2(viewportSizes.MinEffectiveResolution); var maxScale = Math.Min(maxScales.X, maxScales.Y); var validScales = new[] { 1f, 1.25f, 1.5f, 1.75f, 2f }.Where(x => x <= maxScale); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, validScales, setupItem); }
static void ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s, ScrollPanelWidget scrollPanel) { var options = new Dictionary <string, WindowMode>() { { "Fullscreen", WindowMode.PseudoFullscreen }, { "Fullscreen (Legacy)", WindowMode.Fullscreen }, { "Windowed", WindowMode.Windowed }, }; Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.Mode == options[o], () => { s.Mode = options[o]; SettingsUtils.AdjustSettingsScrollPanelLayout(scrollPanel); }); item.Get <LabelWidget>("LABEL").GetText = () => o; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); }
void ShowLightDiffuseColorDropDown(DropDownButtonWidget color, ColorPreviewManagerWidget preview, World world) { Action onExit = () => { System.Drawing.Color c = preview.Color.RGB; lightDiffuseColor[0] = float.Parse((Convert.ToSingle(c.R) / 255).ToString("0.0")); lightDiffuseColor[1] = float.Parse((Convert.ToSingle(c.G) / 255).ToString("0.0")); lightDiffuseColor[2] = float.Parse((Convert.ToSingle(c.B) / 255).ToString("0.0")); lightDiffuseColorBlock.GetColor = () => c; lightDiffuseColorValue.GetText = () => string.Format("{0}, {1}, {2}", lightDiffuseColor[0].ToString(), lightDiffuseColor[1].ToString(), lightDiffuseColor[2].ToString()); }; color.RemovePanel(); Action <HSLColor> onChange = c => preview.Color = c; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onChange", onChange }, { "initialColor", HSLColor.FromRGB( Convert.ToInt32(lightDiffuseColor[0] * 255), Convert.ToInt32(lightDiffuseColor[1] * 255), Convert.ToInt32(lightDiffuseColor[2] * 255) ) }, { "initialFaction", null } }); color.AttachPanel(colorChooser, onExit); }
public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, OrderManager orderManager, ColorPickerPaletteModifier preview) { Action <ColorRamp> onSelect = c => { if (client.Bot == null) { Game.Settings.Player.ColorRamp = c; Game.Settings.Save(); } color.RemovePanel(); orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, c))); }; Action <ColorRamp> onChange = c => preview.Ramp = c; var colorChooser = Game.LoadWidget(orderManager.world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onSelect", onSelect }, { "onChange", onChange }, { "initialRamp", client.ColorRamp } }); color.AttachPanel(colorChooser); }
static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s, bool rightMouse) { var options = new Dictionary <string, MouseScrollType>() { { "Disabled", MouseScrollType.Disabled }, { "Standard", MouseScrollType.Standard }, { "Inverted", MouseScrollType.Inverted }, { "Joystick", MouseScrollType.Joystick }, }; Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => (rightMouse ? s.RightMouseScroll : s.MiddleMouseScroll) == options[o], () => { if (rightMouse) { s.RightMouseScroll = options[o]; } else { s.MiddleMouseScroll = options[o]; } }); item.Get <LabelWidget>("LABEL").GetText = () => o; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return(true); }
public static void ShowSlotDropDown(Ruleset rules, DropDownButtonWidget dropdown, Session.Slot slot, Session.Client client, OrderManager orderManager) { var options = new Dictionary<string, IEnumerable<SlotDropDownOption>>() {{"Slot", new List<SlotDropDownOption>() { new SlotDropDownOption("Open", "slot_open "+slot.PlayerReference, () => (!slot.Closed && client == null)), new SlotDropDownOption("Closed", "slot_close "+slot.PlayerReference, () => slot.Closed) }}}; var bots = new List<SlotDropDownOption>(); if (slot.AllowBots) { foreach (var b in rules.Actors["player"].Traits.WithInterface<IBotInfo>().Select(t => t.Name)) { var bot = b; var botController = orderManager.LobbyInfo.Clients.FirstOrDefault(c => c.IsAdmin); bots.Add(new SlotDropDownOption(bot, "slot_bot {0} {1} {2}".F(slot.PlayerReference, botController.Index, bot), () => client != null && client.Bot == bot)); } } options.Add(bots.Any() ? "Bots" : "Bots Disabled", bots); Func<SlotDropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, o.Selected, () => orderManager.IssueOrder(Order.Command(o.Order))); item.Get<LabelWidget>("LABEL").GetText = () => o.Title; return item; }; dropdown.ShowDropDown<SlotDropDownOption>("LABEL_DROPDOWN_TEMPLATE", 167, options, setupItem); }
public static void ShowSlotDropDown(DropDownButtonWidget dropdown, Session.Slot slot, Session.Client client, OrderManager orderManager) { var options = new List <SlotDropDownOption>() { new SlotDropDownOption("Open", "slot_open " + slot.PlayerReference, () => (!slot.Closed && client == null)), new SlotDropDownOption("Closed", "slot_close " + slot.PlayerReference, () => slot.Closed) }; if (slot.AllowBots) { foreach (var b in Rules.Info["player"].Traits.WithInterface <IBotInfo>().Select(t => t.Name)) { var bot = b; var botController = orderManager.LobbyInfo.Clients.Where(c => c.IsAdmin).FirstOrDefault(); options.Add(new SlotDropDownOption("Bot: {0}".F(bot), "slot_bot {0} {1} {2}".F(slot.PlayerReference, botController.Index, bot), () => client != null && client.Bot == bot)); } } Func <SlotDropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, o.Selected, () => orderManager.IssueOrder(Order.Command(o.Order))); item.Get <LabelWidget>("LABEL").GetText = () => o.Title; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, options, setupItem); }
public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, OrderManager orderManager, ColorPickerPaletteModifier preview) { Action<ColorRamp> onSelect = c => { if (client.Bot == null) { Game.Settings.Player.ColorRamp = c; Game.Settings.Save(); } color.RemovePanel(); orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, c))); }; Action<ColorRamp> onChange = c => preview.Ramp = c; var colorChooser = Game.LoadWidget(orderManager.world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onSelect", onSelect }, { "onChange", onChange }, { "initialRamp", client.ColorRamp } }); color.AttachPanel(colorChooser); }
public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, OrderManager orderManager, World world, ColorPreviewManagerWidget preview) { Action onExit = () => { if (client.Bot == null) { Game.Settings.Player.Color = preview.Color; Game.Settings.Save(); } color.RemovePanel(); orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, preview.Color))); }; Action <Color> onChange = c => preview.Color = c; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onChange", onChange }, { "initialColor", client.Color }, { "initialFaction", client.Faction } }); color.AttachPanel(colorChooser, onExit); }
public static void ShowFactionDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary <string, LobbyFaction> factions) { Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (factionId, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Faction == factionId, () => orderManager.IssueOrder(Order.Command("faction {0} {1}".F(client.Index, factionId)))); var faction = factions[factionId]; item.Get <LabelWidget>("LABEL").GetText = () => faction.Name; var flag = item.Get <ImageWidget>("FLAG"); flag.GetImageCollection = () => "flags"; flag.GetImageName = () => factionId; var tooltip = SplitOnFirstToken(faction.Description); item.GetTooltipText = () => tooltip.First; item.GetTooltipDesc = () => tooltip.Second; return(item); }; var options = factions.Where(f => f.Value.Selectable).GroupBy(f => f.Value.Side) .ToDictionary(g => g.Key ?? "", g => g.Select(f => f.Key)); dropdown.ShowDropDown("FACTION_DROPDOWN_TEMPLATE", 154, options, setupItem); }
public static void ShowSlotDropDown(DropDownButtonWidget dropdown, Session.Slot slot, Session.Client client, OrderManager orderManager) { var options = new List<SlotDropDownOption>() { new SlotDropDownOption("Open", "slot_open "+slot.PlayerReference, () => (!slot.Closed && client == null)), new SlotDropDownOption("Closed", "slot_close "+slot.PlayerReference, () => slot.Closed) }; if (slot.AllowBots) foreach (var b in Rules.Info["player"].Traits.WithInterface<IBotInfo>().Select(t => t.Name)) { var bot = b; options.Add(new SlotDropDownOption("Bot: {0}".F(bot), "slot_bot {0} {1}".F(slot.PlayerReference, bot), () => client != null && client.Bot == bot)); } Func<SlotDropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, o.Selected, () => orderManager.IssueOrder(Order.Command(o.Order))); item.GetWidget<LabelWidget>("LABEL").GetText = () => o.Title; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, options, setupItem); }
public static void ShowPlayerActionDropDown(DropDownButtonWidget dropdown, Session.Slot slot, Session.Client c, OrderManager orderManager, Widget lobby, Action before, Action after) { Action <bool> okPressed = tempBan => { orderManager.IssueOrder(Order.Command("kick {0} {1}".F(c.Index, tempBan))); after(); }; var onClick = new Action(() => { before(); Game.LoadWidget(null, "KICK_CLIENT_DIALOG", lobby.Get("TOP_PANELS_ROOT"), new WidgetArgs { { "clientName", c.Name }, { "okPressed", okPressed }, { "cancelPressed", after } }); }); var options = new List <DropDownOption> { new DropDownOption { Title = "Kick", OnClick = onClick }, }; if (orderManager.LobbyInfo.GlobalSettings.Dedicated) { options.Add(new DropDownOption { Title = "Transfer Admin", OnClick = () => orderManager.IssueOrder(Order.Command("make_admin {0}".F(c.Index))) }); } if (!c.IsObserver && orderManager.LobbyInfo.GlobalSettings.AllowSpectators) { options.Add(new DropDownOption { Title = "Move to Spectator", OnClick = () => orderManager.IssueOrder(Order.Command("make_spectator {0}".F(c.Index))) }); } Func <DropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, o.IsSelected, o.OnClick); var labelWidget = item.Get <LabelWidget>("LABEL"); labelWidget.GetText = () => o.Title; return(item); }; dropdown.ShowDropDown("PLAYERACTION_DROPDOWN_TEMPLATE", 167, options, setupItem); }
static void ShowModsDropDown(DropDownButtonWidget dropdown) { Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (m, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => m == Game.CurrentMods.Keys.First(), () => LoadMod(m)); item.GetWidget<LabelWidget>("LABEL").GetText = () => Mod.AllMods[m].Title; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, Mod.AllMods.Keys.ToList(), setupItem); }
public static void ShowColorDropDown(DropDownButtonWidget color, ColorPickerManagerInfo colorManager, WorldRenderer worldRenderer, Action onExit = null) { color.RemovePanel(); var colorChooser = Game.LoadWidget(worldRenderer.World, "COLOR_CHOOSER", null, new WidgetArgs() { { "onChange", (Action <Color>)(c => colorManager.Color = c) }, { "initialColor", colorManager.Color }, { "initialFaction", null } }); color.AttachPanel(colorChooser, onExit); }
void SetupGameModeDropdown(MapClassification tab, DropDownButtonWidget gameModeDropdown, ScrollItemWidget itemTemplate) { if (gameModeDropdown != null) { var categoryDict = new Dictionary <string, int>(); foreach (var map in tabMaps[tab]) { foreach (var category in map.Categories) { var count = 0; categoryDict.TryGetValue(category, out count); categoryDict[category] = count + 1; } } // Order categories alphabetically var categories = categoryDict .Select(kv => Pair.New(kv.Key, kv.Value)) .OrderBy(p => p.First) .ToList(); // 'all game types' extra item categories.Insert(0, Pair.New(null as string, tabMaps[tab].Count())); Func <Pair <string, int>, string> showItem = x => "{0} ({1})".F(x.First ?? "All Maps", x.Second); Func <Pair <string, int>, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, template) => { var item = ScrollItemWidget.Setup(template, () => category == ii.First, () => { category = ii.First; EnumerateMaps(tab, itemTemplate); }); item.Get <LabelWidget>("LABEL").GetText = () => showItem(ii); return(item); }; gameModeDropdown.OnClick = () => gameModeDropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 210, categories, setupItem); gameModeDropdown.GetText = () => { var item = categories.FirstOrDefault(m => m.First == category); if (item == default(Pair <string, int>)) { item.First = "No matches"; } return(showItem(item)); }; } }
public static void ShowSpawnDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, IEnumerable <int> spawnPoints) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.SpawnPoint == ii, () => SetSpawnPoint(orderManager, client, ii)); item.Get <LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : Convert.ToChar('A' - 1 + ii).ToString(); return(item); }; dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, spawnPoints, setupItem); }
static void ShowLanguageDropdown(DropDownButtonWidget dropdown, IEnumerable <string> languages) { Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => Game.Settings.Graphics.Language == o, () => Game.Settings.Graphics.Language = o); item.Get <LabelWidget>("LABEL").GetText = () => FieldLoader.Translate(o); return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, languages, setupItem); }
public static void ShowTeamDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, int teamCount) { Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Team == ii, () => orderManager.IssueOrder(Order.Command("team {0} {1}".F(client.Index, ii)))); item.Get<LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); return item; }; var options = Exts.MakeArray(teamCount + 1, i => i).ToList(); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); }
void ShowDropDown(Player p, DropDownButtonWidget dropdown) { var stances = Enum<Stance>.GetValues(); Func<Stance, ScrollItemWidget, ScrollItemWidget> setupItem = (s, template) => { var item = ScrollItemWidget.Setup(template, () => s == world.LocalPlayer.Stances[p], () => SetStance(dropdown, p, s)); item.Get<LabelWidget>("LABEL").GetText = () => s.ToString(); return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, stances, setupItem); }
static void ShowDisplaySelectionDropdown(DropDownButtonWidget dropdown, GraphicSettings s) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.VideoDisplay == o, () => s.VideoDisplay = o); var label = $"Display {o + 1}"; item.Get <LabelWidget>("LABEL").GetText = () => label; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, Enumerable.Range(0, Game.Renderer.DisplayCount), setupItem); }
bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { Action <ColorRamp> onSelect = c => { s.ColorRamp = c; color.RemovePanel(); }; Action <ColorRamp> onChange = c => { playerPalettePreview.Ramp = c; }; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onSelect", onSelect }, { "onChange", onChange }, { "initialRamp", s.ColorRamp } }); color.AttachPanel(colorChooser); return(true); }
bool ShowPaletteDropdown(DropDownButtonWidget dropdown) { Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (name, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => currentPalette == name, () => currentPalette = name); item.Get <LabelWidget>("LABEL").GetText = () => name; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem); return(true); }
void ShowDropDown(Player p, DropDownButtonWidget dropdown) { var stances = Enum.GetValues(typeof(Stance)).OfType <Stance>(); Func <Stance, ScrollItemWidget, ScrollItemWidget> setupItem = (s, template) => { var item = ScrollItemWidget.Setup(template, () => s == world.LocalPlayer.Stances[p], () => SetStance(dropdown, p, s)); item.GetWidget <LabelWidget>("LABEL").GetText = () => s.ToString(); return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, stances, setupItem); }
bool ShowPaletteDropdown(DropDownButtonWidget dropdown, World world) { Func <PaletteFromFile, ScrollItemWidget, ScrollItemWidget> setupItem = (palette, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => currentPalette.Name == palette.Name, () => { currentPalette = palette; spriteWidget.Palette = currentPalette.Name; }); item.Get <LabelWidget>("LABEL").GetText = () => palette.Name; return(item); }; var palettes = world.WorldActor.TraitsImplementing <PaletteFromFile>(); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem); return(true); }
public static void ShowTeamDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Map map) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Team == ii, () => orderManager.IssueOrder(Order.Command("team {0} {1}".F(client.Index, ii)))); item.GetWidget <LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); return(item); }; var options = Graphics.Util.MakeArray(map.GetSpawnPoints().Length + 1, i => i).ToList(); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); }
public static void ShowTeamDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, int teamCount) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Team == ii, () => orderManager.IssueOrder(Order.Command("team {0} {1}".F(client.Index, ii)))); item.Get <LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); return(item); }; var options = Enumerable.Range(0, teamCount + 1); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); }
public static void ShowRaceDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary<string, string> countryNames) { Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (race, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Country == race, () => orderManager.IssueOrder(Order.Command("race {0} {1}".F(client.Index, race)))); item.GetWidget<LabelWidget>("LABEL").GetText = () => countryNames[race]; var flag = item.GetWidget<ImageWidget>("FLAG"); flag.GetImageCollection = () => "flags"; flag.GetImageName = () => race; return item; }; dropdown.ShowDropDown("RACE_DROPDOWN_TEMPLATE", 150, countryNames.Keys.ToList(), setupItem); }
public static void ShowSpawnDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, IEnumerable <int> spawnPoints) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var spawnPoint = spawnPoints.ToList()[ii]; var item = ScrollItemWidget.Setup(itemTemplate, () => client.SpawnPoint == spawnPoint, () => SetSpawnPoint(orderManager, client, spawnPoint)); item.Get <LabelWidget>("LABEL").GetText = () => spawnPoint == 0 ? "-" : Convert.ToChar('A' - 1 + spawnPoint).ToString(); return(item); }; var options = Exts.MakeArray(spawnPoints.Count(), i => i).ToList(); dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, options, setupItem); }
public static void ShowRaceDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary <string, string> countryNames) { Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (race, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Country == race, () => orderManager.IssueOrder(Order.Command("race {0} {1}".F(client.Index, race)))); item.Get <LabelWidget>("LABEL").GetText = () => countryNames[race]; var flag = item.Get <ImageWidget>("FLAG"); flag.GetImageCollection = () => "flags"; flag.GetImageName = () => race; return(item); }; dropdown.ShowDropDown("RACE_DROPDOWN_TEMPLATE", 150, countryNames.Keys, setupItem); }
static void ShowGLProfileDropdown(DropDownButtonWidget dropdown, GraphicSettings s) { Func <GLProfile, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.GLProfile == o, () => s.GLProfile = o); var label = o.ToString(); item.Get <LabelWidget>("LABEL").GetText = () => label; return(item); }; var profiles = new[] { GLProfile.Automatic }.Concat(Game.Renderer.SupportedGLProfiles); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, profiles, setupItem); }
public ActorSelectorLogic(Widget widget, World world, WorldRenderer worldRenderer, Ruleset modRules) { this.modRules = modRules; this.world = world; this.worldRenderer = worldRenderer; editor = widget.Parent.Get<EditorViewportControllerWidget>("MAP_EDITOR"); ownersDropDown = widget.Get<DropDownButtonWidget>("OWNERS_DROPDOWN"); panel = widget.Get<ScrollPanelWidget>("ACTORTEMPLATE_LIST"); itemTemplate = panel.Get<ScrollItemWidget>("ACTORPREVIEW_TEMPLATE"); panel.Layout = new GridLayout(panel); var editorLayer = world.WorldActor.Trait<EditorActorLayer>(); selectedOwner = editorLayer.Players.Players.Values.First(); Func<PlayerReference, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) => { var item = ScrollItemWidget.Setup(template, () => selectedOwner == option, () => { selectedOwner = option; ownersDropDown.Text = selectedOwner.Name; ownersDropDown.TextColor = selectedOwner.Color.RGB; IntializeActorPreviews(); }); item.Get<LabelWidget>("LABEL").GetText = () => option.Name; item.GetColor = () => option.Color.RGB; return item; }; ownersDropDown.OnClick = () => { var owners = editorLayer.Players.Players.Values.OrderBy(p => p.Name); ownersDropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 270, owners, setupItem); }; ownersDropDown.Text = selectedOwner.Name; ownersDropDown.TextColor = selectedOwner.Color.RGB; IntializeActorPreviews(); }
public ActorSelectorLogic(Widget widget, World world, WorldRenderer worldRenderer, Ruleset modRules) { this.modRules = modRules; this.world = world; this.worldRenderer = worldRenderer; editor = widget.Parent.Get <EditorViewportControllerWidget>("MAP_EDITOR"); ownersDropDown = widget.Get <DropDownButtonWidget>("OWNERS_DROPDOWN"); panel = widget.Get <ScrollPanelWidget>("ACTORTEMPLATE_LIST"); itemTemplate = panel.Get <ScrollItemWidget>("ACTORPREVIEW_TEMPLATE"); panel.Layout = new GridLayout(panel); var editorLayer = world.WorldActor.Trait <EditorActorLayer>(); selectedOwner = editorLayer.Players.Players.Values.First(); Func <PlayerReference, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) => { var item = ScrollItemWidget.Setup(template, () => selectedOwner == option, () => { selectedOwner = option; ownersDropDown.Text = selectedOwner.Name; ownersDropDown.TextColor = selectedOwner.Color.RGB; IntializeActorPreviews(); }); item.Get <LabelWidget>("LABEL").GetText = () => option.Name; item.GetColor = () => option.Color.RGB; return(item); }; ownersDropDown.OnClick = () => { var owners = editorLayer.Players.Players.Values.OrderBy(p => p.Name); ownersDropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 270, owners, setupItem); }; ownersDropDown.Text = selectedOwner.Name; ownersDropDown.TextColor = selectedOwner.Color.RGB; IntializeActorPreviews(); }
bool ShowSourceDropdown(DropDownButtonWidget dropdown) { var sourceName = new CachedTransform <IReadOnlyPackage, string>(GetSourceDisplayName); Func <IReadOnlyPackage, ScrollItemWidget, ScrollItemWidget> setupItem = (source, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => assetSource == source, () => { assetSource = source; PopulateAssetList(); }); item.Get <LabelWidget>("LABEL").GetText = () => sourceName.Update(source); return(item); }; var sources = new[] { (IReadOnlyPackage)null }.Concat(acceptablePackages); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, sources, setupItem); return(true); }
bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundDevice[] devices) { var i = 0; var options = devices.ToDictionary(d => (i++).ToString(), d => d); Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => soundDevice == options[o], () => soundDevice = options[o]); item.Get <LabelWidget>("LABEL").GetText = () => options[o].Label; return(item); }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return(true); }
bool ShowShadowPaletteDropdown(DropDownButtonWidget dropdown, World world) { Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (name, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => currentShadowPalette == name, () => currentShadowPalette = name); item.Get <LabelWidget>("LABEL").GetText = () => name; return(item); }; var palettes = world.WorldActor.TraitsImplementing <IProvidesAssetBrowserPalettes>() .SelectMany(p => p.PaletteNames); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem); return(true); }
public static void ShowHandicapDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager) { Func <int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Handicap == ii, () => orderManager.IssueOrder(Order.Command("handicap {0} {1}".F(client.Index, ii)))); var label = "{0}%".F(ii); item.Get <LabelWidget>("LABEL").GetText = () => label; return(item); }; // Handicaps may be set between 0 - 95% in steps of 5% var options = Enumerable.Range(0, 20).Select(i => 5 * i); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); }
bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { Action <HSLColor> onChange = c => colorPreview.Color = c; Action onExit = () => { s.Color = colorPreview.Color; color.RemovePanel(); }; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onExit", onExit }, { "onChange", onChange }, { "initialColor", s.Color } }); color.AttachPanel(colorChooser, onExit); return(true); }
bool ShowSourceDropdown(DropDownButtonWidget dropdown) { Func <IFolder, ScrollItemWidget, ScrollItemWidget> setupItem = (source, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => AssetSource == source, () => { AssetSource = source; PopulateAssetList(); }); item.Get <LabelWidget>("LABEL").GetText = () => source != null ? source.Name : "All Packages"; return(item); }; // TODO: Re-enable "All Packages" once list generation is done in a background thread //var sources = new[] { (IFolder)null }.Concat(FileSystem.MountedFolders); var sources = FileSystem.MountedFolders; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 250, sources, setupItem); return(true); }
public static void ShowColorDropDown(DropDownButtonWidget color, ColorPreviewManagerWidget preview, World world) { Action onExit = () => { Game.Settings.Player.Color = preview.Color; Game.Settings.Save(); }; color.RemovePanel(); Action<HSLColor> onChange = c => preview.Color = c; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onChange", onChange }, { "initialColor", Game.Settings.Player.Color } }); color.AttachPanel(colorChooser, onExit); }
public static void ShowSpawnDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, IEnumerable<int> spawnPoints) { Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.SpawnPoint == ii, () => SetSpawnPoint(orderManager, client, ii)); item.Get<LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : Convert.ToChar('A' - 1 + ii).ToString(); return item; }; dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, spawnPoints, setupItem); }
public static void ShowFactionDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary<string, LobbyFaction> factions) { Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (factionId, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.Faction == factionId, () => orderManager.IssueOrder(Order.Command("faction {0} {1}".F(client.Index, factionId)))); var faction = factions[factionId]; item.Get<LabelWidget>("LABEL").GetText = () => faction.Name; var flag = item.Get<ImageWidget>("FLAG"); flag.GetImageCollection = () => "flags"; flag.GetImageName = () => factionId; item.GetTooltipText = () => faction.Description; return item; }; var options = factions.Where(f => f.Value.Selectable).GroupBy(f => f.Value.Side) .ToDictionary(g => g.Key ?? "", g => g.Select(f => f.Key)); dropdown.ShowDropDown("FACTION_DROPDOWN_TEMPLATE", 150, options, setupItem); }
// This is shit void LayoutDialog(Widget bg) { foreach (var c in controls) bg.RemoveChild(c); controls.Clear(); var y = 50; var margin = 20; var labelWidth = (bg.Bounds.Width - 3 * margin) / 3; var ts = new LabelWidget { Font = "Bold", Bounds = new Rectangle(margin + labelWidth + 10, y, labelWidth, 25), Text = "Their Stance", Align = TextAlign.Left, }; bg.AddChild(ts); controls.Add(ts); var ms = new LabelWidget { Font = "Bold", Bounds = new Rectangle(margin + 2 * labelWidth + 20, y, labelWidth, 25), Text = "My Stance", Align = TextAlign.Left, }; bg.AddChild(ms); controls.Add(ms); y += 35; foreach (var p in world.Players.Where(a => a != world.LocalPlayer && !a.NonCombatant)) { var pp = p; var label = new LabelWidget { Bounds = new Rectangle(margin, y, labelWidth, 25), Text = p.PlayerName, Align = TextAlign.Left, Font = "Bold", Color = p.Color.RGB, }; bg.AddChild(label); controls.Add(label); var theirStance = new LabelWidget { Bounds = new Rectangle( margin + labelWidth + 10, y, labelWidth, 25), Text = p.PlayerName, Align = TextAlign.Left, GetText = () => pp.Stances[ world.LocalPlayer ].ToString(), }; bg.AddChild(theirStance); controls.Add(theirStance); var myStance = new DropDownButtonWidget { Bounds = new Rectangle( margin + 2 * labelWidth + 20, y, labelWidth, 25), GetText = () => world.LocalPlayer.Stances[ pp ].ToString(), }; if (!p.World.LobbyInfo.GlobalSettings.FragileAlliances) myStance.Disabled = true; myStance.OnMouseDown = mi => ShowDropDown(pp, myStance); bg.AddChild(myStance); controls.Add(myStance); y += 35; } }
public static bool ShowSoundTickDropdown(DropDownButtonWidget dropdown, SoundSettings audio) { var options = new Dictionary<string, SoundCashTicks>() { { "Extreme", SoundCashTicks.Extreme }, { "Normal", SoundCashTicks.Normal }, { "Disabled", SoundCashTicks.Disabled }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => audio.SoundCashTickType == options[o], () => audio.SoundCashTickType = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
public MissionBrowserLogic(Widget widget, World world, Action onStart, Action onExit) { this.onStart = onStart; missionList = widget.Get<ScrollPanelWidget>("MISSION_LIST"); headerTemplate = widget.Get<ScrollItemWidget>("HEADER"); template = widget.Get<ScrollItemWidget>("TEMPLATE"); var title = widget.GetOrNull<LabelWidget>("MISSIONBROWSER_TITLE"); if (title != null) title.GetText = () => playingVideo != PlayingVideo.None ? selectedMapPreview.Title : title.Text; widget.Get("MISSION_INFO").IsVisible = () => selectedMapPreview != null; var previewWidget = widget.Get<MapPreviewWidget>("MISSION_PREVIEW"); previewWidget.Preview = () => selectedMapPreview; previewWidget.IsVisible = () => playingVideo == PlayingVideo.None; videoPlayer = widget.Get<VqaPlayerWidget>("MISSION_VIDEO"); widget.Get("MISSION_BIN").IsVisible = () => playingVideo != PlayingVideo.None; fullscreenVideoPlayer = Ui.LoadWidget<BackgroundWidget>("FULLSCREEN_PLAYER", Ui.Root, new WidgetArgs { { "world", world } }); descriptionPanel = widget.Get<ScrollPanelWidget>("MISSION_DESCRIPTION_PANEL"); description = descriptionPanel.Get<LabelWidget>("MISSION_DESCRIPTION"); descriptionFont = Game.Renderer.Fonts[description.Font]; difficultyButton = widget.Get<DropDownButtonWidget>("DIFFICULTY_DROPDOWNBUTTON"); gameSpeedButton = widget.GetOrNull<DropDownButtonWidget>("GAMESPEED_DROPDOWNBUTTON"); startBriefingVideoButton = widget.Get<ButtonWidget>("START_BRIEFING_VIDEO_BUTTON"); stopBriefingVideoButton = widget.Get<ButtonWidget>("STOP_BRIEFING_VIDEO_BUTTON"); stopBriefingVideoButton.IsVisible = () => playingVideo == PlayingVideo.Briefing; stopBriefingVideoButton.OnClick = () => StopVideo(videoPlayer); startInfoVideoButton = widget.Get<ButtonWidget>("START_INFO_VIDEO_BUTTON"); stopInfoVideoButton = widget.Get<ButtonWidget>("STOP_INFO_VIDEO_BUTTON"); stopInfoVideoButton.IsVisible = () => playingVideo == PlayingVideo.Info; stopInfoVideoButton.OnClick = () => StopVideo(videoPlayer); var allMaps = new List<Map>(); missionList.RemoveChildren(); // Add a group for each campaign if (Game.ModData.Manifest.Missions.Any()) { var yaml = Game.ModData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal); foreach (var kv in yaml) { var missionMapPaths = kv.Value.Nodes.Select(n => Path.GetFullPath(n.Key)); var maps = Game.ModData.MapCache .Where(p => p.Status == MapStatus.Available && missionMapPaths.Contains(Path.GetFullPath(p.Map.Path))) .Select(p => p.Map); CreateMissionGroup(kv.Key, maps); allMaps.AddRange(maps); } } // Add an additional group for loose missions var looseMissions = Game.ModData.MapCache .Where(p => p.Status == MapStatus.Available && p.Map.Visibility.HasFlag(MapVisibility.MissionSelector) && !allMaps.Contains(p.Map)) .Select(p => p.Map); if (looseMissions.Any()) { CreateMissionGroup("Missions", looseMissions); allMaps.AddRange(looseMissions); } if (allMaps.Any()) SelectMap(allMaps.First()); var startButton = widget.Get<ButtonWidget>("STARTGAME_BUTTON"); startButton.OnClick = StartMissionClicked; startButton.IsDisabled = () => selectedMapPreview == null || selectedMapPreview.RuleStatus != MapRuleStatus.Cached; widget.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => { StopVideo(videoPlayer); Game.Disconnect(); Ui.CloseWindow(); onExit(); }; }
public static bool ShowRendererDropdown(DropDownButtonWidget dropdown, GraphicSettings s) { var options = new Dictionary<string, string>() { { "OpenGL", "Gl" }, { "Cg Toolkit", "Cg" }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.Renderer == options[o], () => s.Renderer = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
internal MapChooserLogic(Widget widget, string initialMap, MapClassification initialTab, Action onExit, Action<string> onSelect, MapVisibility filter) { this.widget = widget; this.onSelect = onSelect; var approving = new Action(() => { Ui.CloseWindow(); onSelect(selectedUid); }); var canceling = new Action(() => { Ui.CloseWindow(); onExit(); }); var okButton = widget.Get<ButtonWidget>("BUTTON_OK"); okButton.Disabled = this.onSelect == null; okButton.OnClick = approving; widget.Get<ButtonWidget>("BUTTON_CANCEL").OnClick = canceling; gameModeDropdown = widget.GetOrNull<DropDownButtonWidget>("GAMEMODE_FILTER"); var itemTemplate = widget.Get<ScrollItemWidget>("MAP_TEMPLATE"); widget.RemoveChild(itemTemplate); var mapFilterInput = widget.GetOrNull<TextFieldWidget>("MAPFILTER_INPUT"); if (mapFilterInput != null) { mapFilterInput.TakeKeyboardFocus(); mapFilterInput.OnEscKey = () => { if (mapFilterInput.Text.Length == 0) canceling(); else { mapFilter = mapFilterInput.Text = null; EnumerateMaps(currentTab, itemTemplate); } return true; }; mapFilterInput.OnEnterKey = () => { approving(); return true; }; mapFilterInput.OnTextEdited = () => { mapFilter = mapFilterInput.Text; EnumerateMaps(currentTab, itemTemplate); }; } var randomMapButton = widget.GetOrNull<ButtonWidget>("RANDOMMAP_BUTTON"); if (randomMapButton != null) { randomMapButton.OnClick = () => { var uid = visibleMaps.Random(Game.CosmeticRandom); selectedUid = uid; scrollpanels[currentTab].ScrollToItem(uid, smooth: true); }; randomMapButton.IsDisabled = () => visibleMaps == null || visibleMaps.Length == 0; } var deleteMapButton = widget.Get<ButtonWidget>("DELETE_MAP_BUTTON"); deleteMapButton.IsDisabled = () => Game.ModData.MapCache[selectedUid].Class != MapClassification.User; deleteMapButton.IsVisible = () => currentTab == MapClassification.User; deleteMapButton.OnClick = () => { DeleteOneMap(selectedUid, (string newUid) => { RefreshMaps(currentTab, filter); EnumerateMaps(currentTab, itemTemplate); if (!tabMaps[currentTab].Any()) SwitchTab(Game.ModData.MapCache[newUid].Class, itemTemplate); }); }; var deleteAllMapsButton = widget.Get<ButtonWidget>("DELETE_ALL_MAPS_BUTTON"); deleteAllMapsButton.IsVisible = () => currentTab == MapClassification.User; deleteAllMapsButton.OnClick = () => { DeleteAllMaps(visibleMaps, (string newUid) => { RefreshMaps(currentTab, filter); EnumerateMaps(currentTab, itemTemplate); SwitchTab(Game.ModData.MapCache[newUid].Class, itemTemplate); }); }; SetupMapTab(MapClassification.User, filter, "USER_MAPS_TAB_BUTTON", "USER_MAPS_TAB", itemTemplate); SetupMapTab(MapClassification.System, filter, "SYSTEM_MAPS_TAB_BUTTON", "SYSTEM_MAPS_TAB", itemTemplate); if (initialMap == null && tabMaps.Keys.Contains(initialTab) && tabMaps[initialTab].Any()) { selectedUid = WidgetUtils.ChooseInitialMap(tabMaps[initialTab].Select(mp => mp.Uid).First()); currentTab = initialTab; } else { selectedUid = WidgetUtils.ChooseInitialMap(initialMap); currentTab = tabMaps.Keys.FirstOrDefault(k => tabMaps[k].Select(mp => mp.Uid).Contains(selectedUid)); } SwitchTab(currentTab, itemTemplate); }
static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary<string, MouseScrollType>() { { "Disabled", MouseScrollType.Disabled }, { "Standard", MouseScrollType.Standard }, { "Inverted", MouseScrollType.Inverted }, { "Joystick", MouseScrollType.Joystick }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.MouseScroll == options[o], () => s.MouseScroll = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
static bool ShowStatusBarsDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary<string, StatusBarsType>() { { "Standard", StatusBarsType.Standard }, { "Show On Damage", StatusBarsType.DamageShow }, { "Always Show", StatusBarsType.AlwaysShow }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.StatusBars == options[o], () => s.StatusBars = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
static bool ShowZoomModifierDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary<string, Modifiers>() { { "Alt", Modifiers.Alt }, { "Ctrl", Modifiers.Ctrl }, { "Meta", Modifiers.Meta }, { "Shift", Modifiers.Shift }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.ZoomModifier == options[o], () => s.ZoomModifier = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
void ShowSpawnDropDown(DropDownButtonWidget dropdown, Session.Client client) { Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => client.SpawnPoint == ii, () => orderManager.IssueOrder(Order.Command("spawn {0} {1}".F(client.Index, ii)))); item.GetWidget<LabelWidget>("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); return item; }; var taken = orderManager.LobbyInfo.Clients .Where(c => c.SpawnPoint != 0 && c.SpawnPoint != client.SpawnPoint && c.Slot != null) .Select(c => c.SpawnPoint).ToList(); var options = Graphics.Util.MakeArray(Map.SpawnPoints.Count() + 1, i => i).Except(taken).ToList(); dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); }
void ShowColorDropDown(DropDownButtonWidget color, Session.Client client) { var colorChooser = Game.modData.WidgetLoader.LoadWidget( new WidgetArgs() { {"worldRenderer", worldRenderer} }, null, "COLOR_CHOOSER" ); var hueSlider = colorChooser.GetWidget<SliderWidget>("HUE_SLIDER"); hueSlider.Value = orderManager.LocalClient.ColorRamp.H / 255f; var satSlider = colorChooser.GetWidget<SliderWidget>("SAT_SLIDER"); satSlider.Value = orderManager.LocalClient.ColorRamp.S / 255f; var lumSlider = colorChooser.GetWidget<SliderWidget>("LUM_SLIDER"); lumSlider.Value = orderManager.LocalClient.ColorRamp.L / 255f; var rangeSlider = colorChooser.GetWidget<SliderWidget>("RANGE_SLIDER"); rangeSlider.Value = orderManager.LocalClient.ColorRamp.R / 255f; Action updateColorPreview = () => UpdateColorPreview(hueSlider.Value, satSlider.Value, lumSlider.Value, rangeSlider.Value); hueSlider.OnChange += _ => updateColorPreview(); satSlider.OnChange += _ => updateColorPreview(); lumSlider.OnChange += _ => updateColorPreview(); rangeSlider.OnChange += _ => updateColorPreview(); updateColorPreview(); colorChooser.GetWidget<ButtonWidget>("BUTTON_OK").OnClick = () => { updateColorPreview(); UpdatePlayerColor(hueSlider.Value, satSlider.Value, lumSlider.Value, rangeSlider.Value); color.RemovePanel(); }; color.AttachPanel(colorChooser); }
static bool ShowLanguageDropdown(DropDownButtonWidget dropdown, IEnumerable<string> languages) { Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => Game.Settings.Graphics.Language == o, () => Game.Settings.Graphics.Language = o); item.Get<LabelWidget>("LABEL").GetText = () => FieldLoader.Translate(o); return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, languages, setupItem); return true; }
bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { Action<HSLColor> onChange = c => colorPreview.Color = c; Action onExit = () => { s.Color = colorPreview.Color; color.RemovePanel(); }; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onExit", onExit }, { "onChange", onChange }, { "initialColor", s.Color } }); color.AttachPanel(colorChooser, onExit); return true; }
bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundSettings s, SoundDevice[] devices) { var i = 0; var options = devices.ToDictionary(d => (i++).ToString(), d => d); Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => soundDevice == options[o], () => soundDevice = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => options[o].Label; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
public static bool ShowSoundEngineDropdown(DropDownButtonWidget dropdown, SoundSettings s) { var options = new Dictionary<string, string>() { { "OpenAL", "AL" }, { "None", "Null" }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.Engine == options[o], () => s.Engine = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
public ObserverStatsLogic(World world, WorldRenderer worldRenderer, Widget widget, Action onExit) { this.world = world; this.worldRenderer = worldRenderer; players = world.Players.Where(p => !p.NonCombatant); basicStatsHeaders = widget.Get<ContainerWidget>("BASIC_STATS_HEADERS"); economyStatsHeaders = widget.Get<ContainerWidget>("ECONOMY_STATS_HEADERS"); productionStatsHeaders = widget.Get<ContainerWidget>("PRODUCTION_STATS_HEADERS"); combatStatsHeaders = widget.Get<ContainerWidget>("COMBAT_STATS_HEADERS"); earnedThisMinuteGraphHeaders = widget.Get<ContainerWidget>("EARNED_THIS_MIN_GRAPH_HEADERS"); playerStatsPanel = widget.Get<ScrollPanelWidget>("PLAYER_STATS_PANEL"); playerStatsPanel.Layout = new GridLayout(playerStatsPanel); basicPlayerTemplate = playerStatsPanel.Get<ScrollItemWidget>("BASIC_PLAYER_TEMPLATE"); economyPlayerTemplate = playerStatsPanel.Get<ScrollItemWidget>("ECONOMY_PLAYER_TEMPLATE"); productionPlayerTemplate = playerStatsPanel.Get<ScrollItemWidget>("PRODUCTION_PLAYER_TEMPLATE"); combatPlayerTemplate = playerStatsPanel.Get<ScrollItemWidget>("COMBAT_PLAYER_TEMPLATE"); earnedThisMinuteGraphTemplate = playerStatsPanel.Get<ContainerWidget>("EARNED_THIS_MIN_GRAPH_TEMPLATE"); teamTemplate = playerStatsPanel.Get<ScrollItemWidget>("TEAM_TEMPLATE"); statsDropDown = widget.Get<DropDownButtonWidget>("STATS_DROPDOWN"); statsDropDown.GetText = () => "Basic"; statsDropDown.OnMouseDown = _ => { var options = new List<StatsDropDownOption> { new StatsDropDownOption { Title = "Basic", IsSelected = () => basicStatsHeaders.Visible, OnClick = () => { ClearStats(); statsDropDown.GetText = () => "Basic"; DisplayStats(BasicStats); } }, new StatsDropDownOption { Title = "Economy", IsSelected = () => economyStatsHeaders.Visible, OnClick = () => { ClearStats(); statsDropDown.GetText = () => "Economy"; DisplayStats(EconomyStats); } }, new StatsDropDownOption { Title = "Production", IsSelected = () => productionStatsHeaders.Visible, OnClick = () => { ClearStats(); statsDropDown.GetText = () => "Production"; DisplayStats(ProductionStats); } }, new StatsDropDownOption { Title = "Combat", IsSelected = () => combatStatsHeaders.Visible, OnClick = () => { ClearStats(); statsDropDown.GetText = () => "Combat"; DisplayStats(CombatStats); } }, new StatsDropDownOption { Title = "Earnings (graph)", IsSelected = () => earnedThisMinuteGraphHeaders.Visible, OnClick = () => { ClearStats(); statsDropDown.GetText = () => "Earnings (graph)"; EarnedThisMinuteGraph(); } } }; Func<StatsDropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) => { var item = ScrollItemWidget.Setup(template, option.IsSelected, option.OnClick); item.Get<LabelWidget>("LABEL").GetText = () => option.Title; return item; }; statsDropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, options, setupItem); }; ClearStats(); DisplayStats(BasicStats); var close = widget.GetOrNull<ButtonWidget>("CLOSE"); if (close != null) close.OnClick = () => { Ui.CloseWindow(); Ui.Root.RemoveChild(widget); onExit(); }; }
public static bool ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s) { var options = new Dictionary<string, WindowMode>() { { "Pseudo-Fullscreen", WindowMode.PseudoFullscreen }, { "Fullscreen", WindowMode.Fullscreen }, { "Windowed", WindowMode.Windowed }, }; Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => s.Mode == options[o], () => s.Mode = options[o]); item.Get<LabelWidget>("LABEL").GetText = () => o; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }
public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, OrderManager orderManager, World world, ColorPreviewManagerWidget preview) { Action onExit = () => { if (client.Bot == null) { Game.Settings.Player.Color = preview.Color; Game.Settings.Save(); } color.RemovePanel(); orderManager.IssueOrder(Order.Command("color {0} {1}".F(client.Index, preview.Color))); }; Action<HSLColor> onChange = c => preview.Color = c; var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs() { { "onChange", onChange }, { "initialColor", client.Color } }); color.AttachPanel(colorChooser, onExit); }
void SetupGameModeDropdown(MapClassification tab, DropDownButtonWidget gameModeDropdown, ScrollItemWidget itemTemplate) { if (gameModeDropdown != null) { var gameModes = tabMaps[tab] .GroupBy(m => m.Type) .Select(g => Pair.New(g.Key, g.Count())).ToList(); // 'all game types' extra item gameModes.Insert(0, Pair.New(null as string, tabMaps[tab].Count())); Func<Pair<string, int>, string> showItem = x => "{0} ({1})".F(x.First ?? "All Game Types", x.Second); Func<Pair<string, int>, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, template) => { var item = ScrollItemWidget.Setup(template, () => gameMode == ii.First, () => { gameMode = ii.First; EnumerateMaps(tab, itemTemplate); }); item.Get<LabelWidget>("LABEL").GetText = () => showItem(ii); return item; }; gameModeDropdown.OnClick = () => gameModeDropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 210, gameModes, setupItem); gameModeDropdown.GetText = () => { var item = gameModes.FirstOrDefault(m => m.First == gameMode); if (item == default(Pair<string, int>)) item.First = "No matches"; return showItem(item); }; } }
bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundDevice[] devices) { var i = 0; var options = devices.ToDictionary(d => (i++).ToString(), d => d); Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, () => soundDevice == options[o], () => soundDevice = options[o]); var deviceLabel = item.Get<LabelWidget>("LABEL"); var font = Game.Renderer.Fonts[deviceLabel.Font]; var label = WidgetUtils.TruncateText(options[o].Label, deviceLabel.Bounds.Width, font); deviceLabel.GetText = () => label; return item; }; dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; }