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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
		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);
		}
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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));
                };
            }
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
		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);
		}
Esempio n. 19
0
		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);
		}
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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);
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
        }
Esempio n. 27
0
        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);
        }
Esempio n. 28
0
        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);
        }
Esempio n. 29
0
        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);
        }
Esempio n. 30
0
        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);
        }
Esempio n. 31
0
		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();
		}
Esempio n. 32
0
        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();
        }
Esempio n. 33
0
        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);
        }
Esempio n. 34
0
        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);
        }
Esempio n. 35
0
        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);
        }
Esempio n. 36
0
        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);
        }
Esempio n. 37
0
        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);
        }
Esempio n. 38
0
        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);
        }
Esempio n. 39
0
		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);
		}
Esempio n. 40
0
        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);
        }
Esempio n. 41
0
        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);
        }
Esempio n. 42
0
        // 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;
            }
        }
Esempio n. 43
0
        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;
        }
Esempio n. 44
0
		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();
			};
		}
Esempio n. 45
0
        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;
        }
Esempio n. 46
0
        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);
        }
Esempio n. 47
0
        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;
        }
Esempio n. 48
0
        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;
        }
Esempio n. 49
0
        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;
        }
Esempio n. 50
0
        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);
        }
Esempio n. 51
0
        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);
        }
Esempio n. 52
0
        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;
        }
Esempio n. 53
0
        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;
        }
Esempio n. 54
0
        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;
        }
Esempio n. 55
0
        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;
        }
Esempio n. 56
0
		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();
				};
		}
Esempio n. 57
0
        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;
        }
Esempio n. 58
0
        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);
        }
Esempio n. 59
0
        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);
                };
            }
        }
Esempio n. 60
0
        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;
        }