Ejemplo n.º 1
0
		public ProductionTabsLogic(Widget widget, World world)
		{
			this.world = world;
			tabs = widget.Get<ProductionTabsWidget>("PRODUCTION_TABS");
			world.ActorAdded += tabs.ActorChanged;
			world.ActorRemoved += tabs.ActorChanged;
			Game.BeforeGameStart += UnregisterEvents;

			var typesContainer = Ui.Root.Get(tabs.TypesContainer);
			foreach (var i in typesContainer.Children)
				SetupProductionGroupButton(i as ProductionTypeButtonWidget);
		}
Ejemplo n.º 2
0
        public void InitPlayerWidgets(World world, Widget playerRoot)
        {
            // Real player
            var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
            playerWidgets.IsVisible = () => true;

            var sidebarRoot = playerWidgets.Get("SIDEBAR_BACKGROUND");

            BindOrderButton<SellOrderGenerator>(world, sidebarRoot, "SELL_BUTTON", "sell");
            BindOrderButton<RepairOrderGenerator>(world, sidebarRoot, "REPAIR_BUTTON", "repair");

            var playerResources = world.LocalPlayer.PlayerActor.Trait<PlayerResources>();
            sidebarRoot.Get<LabelWidget>("CASH").GetText = () =>
                "${0}".F(playerResources.DisplayCash + playerResources.DisplayOre);

            queueTabs = playerWidgets.Get<ProductionTabsWidget>("PRODUCTION_TABS");
            world.ActorAdded += queueTabs.ActorChanged;
            world.ActorRemoved += queueTabs.ActorChanged;

            var queueTypes = sidebarRoot.Get("PRODUCTION_TYPES");
            SetupProductionGroupButton(queueTypes.Get<ToggleButtonWidget>("BUILDING"), "Building");
            SetupProductionGroupButton(queueTypes.Get<ToggleButtonWidget>("DEFENSE"), "Defense");
            SetupProductionGroupButton(queueTypes.Get<ToggleButtonWidget>("INFANTRY"), "Infantry");
            SetupProductionGroupButton(queueTypes.Get<ToggleButtonWidget>("VEHICLE"), "Vehicle");
            SetupProductionGroupButton(queueTypes.Get<ToggleButtonWidget>("AIRCRAFT"), "Aircraft");

            playerWidgets.Get<ButtonWidget>("OPTIONS_BUTTON").OnClick = OptionsClicked;

            var cheatsButton = playerWidgets.Get<ButtonWidget>("CHEATS_BUTTON");
            cheatsButton.OnClick = () =>
            {
                if (menu != MenuType.None)
                    Ui.CloseWindow();

                menu = MenuType.Cheats;
                Game.OpenWindow("CHEATS_PANEL", new WidgetArgs() {{"onExit", () => menu = MenuType.None }});
            };
            cheatsButton.IsVisible = () => world.LocalPlayer != null && world.LobbyInfo.GlobalSettings.AllowCheats;

            var winLossWatcher = playerWidgets.Get<LogicTickerWidget>("WIN_LOSS_WATCHER");
            winLossWatcher.OnTick = () =>
            {
                if (world.LocalPlayer.WinState != WinState.Undefined)
                    Game.RunAfterTick(() =>
                    {
                        playerRoot.RemoveChildren();
                        InitObserverWidgets(world, playerRoot);
                    });
            };
        }
Ejemplo n.º 3
0
        public ProductionTabsLogic(Widget widget, World world)
        {
            this.world            = world;
            tabs                  = widget.Get <ProductionTabsWidget>("PRODUCTION_TABS");
            world.ActorAdded     += tabs.ActorChanged;
            world.ActorRemoved   += tabs.ActorChanged;
            Game.BeforeGameStart += UnregisterEvents;

            var typesContainer = Ui.Root.Get(tabs.TypesContainer);

            foreach (var i in typesContainer.Children)
            {
                SetupProductionGroupButton(i as ProductionTypeButtonWidget);
            }
        }
Ejemplo n.º 4
0
        public ProductionTabsLogic(Widget widget, World world)
        {
            this.world            = world;
            tabs                  = widget.Get <ProductionTabsWidget>("PRODUCTION_TABS");
            world.ActorAdded     += tabs.ActorChanged;
            world.ActorRemoved   += tabs.ActorChanged;
            Game.BeforeGameStart += UnregisterEvents;

            var typesContainer = Ui.Root.Get(tabs.TypesContainer);

            foreach (var i in typesContainer.Children)
            {
                SetupProductionGroupButton(i as ProductionTypeButtonWidget);
            }

            var background = Ui.Root.GetOrNull(tabs.BackgroundContainer);

            if (background != null)
            {
                var palette      = tabs.Parent.Get <ProductionPaletteWidget>(tabs.PaletteWidget);
                var icontemplate = background.Get("ICON_TEMPLATE");

                Action <int, int> updateBackground = (oldCount, newCount) =>
                {
                    background.RemoveChildren();

                    for (var i = 0; i < newCount; i++)
                    {
                        var x = i % palette.Columns;
                        var y = i / palette.Columns;

                        var bg = icontemplate.Clone();
                        bg.Bounds.X = palette.IconSize.X * x;
                        bg.Bounds.Y = palette.IconSize.Y * y;
                        background.AddChild(bg);
                    }
                };

                palette.OnIconCountChanged += updateBackground;

                // Set the initial palette state
                updateBackground(0, 0);
            }
        }
Ejemplo n.º 5
0
        public void InitPlayerWidgets(World world, Widget playerRoot)
        {
            // Real player
            var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
            playerWidgets.IsVisible = () => true;

            var sidebarRoot = playerWidgets.GetWidget("SIDEBAR_BACKGROUND");

            var sellButton = sidebarRoot.GetWidget<ToggleButtonWidget>("SELL_BUTTON");
            sellButton.OnClick = () => world.ToggleInputMode<SellOrderGenerator>();
            sellButton.IsToggled = () => world.OrderGenerator is SellOrderGenerator;
            var sellIcon = sellButton.GetWidget<ImageWidget>("ICON");
            sellIcon.GetImageName = () => world.OrderGenerator is SellOrderGenerator ? "sell-active" : "sell";

            var repairButton = sidebarRoot.GetWidget<ToggleButtonWidget>("REPAIR_BUTTON");
            repairButton.IsDisabled = () => !RepairOrderGenerator.PlayerIsAllowedToRepair( world );
            repairButton.OnClick = () => world.ToggleInputMode<RepairOrderGenerator>();
            repairButton.IsToggled = () => world.OrderGenerator is RepairOrderGenerator;
            var repairIcon = repairButton.GetWidget<ImageWidget>("ICON");
            repairIcon.GetImageName = () => repairButton.IsDisabled() ? "repair-disabled" :
                world.OrderGenerator is RepairOrderGenerator ? "repair-active" : "repair";

            var playerResources = world.LocalPlayer.PlayerActor.Trait<PlayerResources>();
            sidebarRoot.GetWidget<LabelWidget>("CASH_DISPLAY").GetText = () =>
                "${0}".F(playerResources.DisplayCash + playerResources.DisplayOre);

            queueTabs = playerWidgets.GetWidget<ProductionTabsWidget>("PRODUCTION_TABS");
            world.ActorAdded += queueTabs.ActorChanged;
            world.ActorRemoved += queueTabs.ActorChanged;

            var queueTypes = sidebarRoot.GetWidget("PRODUCTION_TYPES");
            SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("BUILDING"), "Building");
            SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("DEFENSE"), "Defense");
            SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("INFANTRY"), "Infantry");
            SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("VEHICLE"), "Vehicle");
            SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("AIRCRAFT"), "Aircraft");

            playerWidgets.GetWidget<ButtonWidget>("OPTIONS_BUTTON").OnClick = OptionsClicked;

            var cheatsButton = playerWidgets.GetWidget<ButtonWidget>("CHEATS_BUTTON");
            cheatsButton.OnClick = () =>
            {
                if (menu != MenuType.None)
                    Widget.CloseWindow();

                menu = MenuType.Cheats;
                Game.OpenWindow("CHEATS_PANEL", new WidgetArgs() {{"onExit", () => menu = MenuType.None }});
            };
            cheatsButton.IsVisible = () => world.LocalPlayer != null && world.LobbyInfo.GlobalSettings.AllowCheats;

            var winLossWatcher = playerWidgets.GetWidget<LogicTickerWidget>("WIN_LOSS_WATCHER");
            winLossWatcher.OnTick = () =>
            {
                if (world.LocalPlayer.WinState != WinState.Undefined)
                    Game.RunAfterTick(() =>
                    {
                        playerRoot.RemoveChildren();
                        InitObserverWidgets(world, playerRoot);
                    });
            };
        }
Ejemplo n.º 6
0
        public void InitPlayerWidgets(World world, Widget playerRoot)
        {
            // Real player
            var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());

            playerWidgets.IsVisible = () => true;

            var sidebarRoot = playerWidgets.Get("SIDEBAR_BACKGROUND");

            BindOrderButton <SellOrderGenerator>(world, sidebarRoot, "SELL_BUTTON", "sell");
            BindOrderButton <RepairOrderGenerator>(world, sidebarRoot, "REPAIR_BUTTON", "repair");

            var powerManager    = world.LocalPlayer.PlayerActor.Trait <PowerManager>();
            var playerResources = world.LocalPlayer.PlayerActor.Trait <PlayerResources>();

            sidebarRoot.Get <LabelWidget>("CASH").GetText = () =>
                                                            "${0}".F(playerResources.DisplayCash + playerResources.DisplayOre);

            queueTabs           = playerWidgets.Get <ProductionTabsWidget>("PRODUCTION_TABS");
            world.ActorAdded   += queueTabs.ActorChanged;
            world.ActorRemoved += queueTabs.ActorChanged;

            var queueTypes = sidebarRoot.Get("PRODUCTION_TYPES");

            SetupProductionGroupButton(queueTypes.Get <ToggleButtonWidget>("BUILDING"), "Building");
            SetupProductionGroupButton(queueTypes.Get <ToggleButtonWidget>("DEFENSE"), "Defense");
            SetupProductionGroupButton(queueTypes.Get <ToggleButtonWidget>("INFANTRY"), "Infantry");
            SetupProductionGroupButton(queueTypes.Get <ToggleButtonWidget>("VEHICLE"), "Vehicle");
            SetupProductionGroupButton(queueTypes.Get <ToggleButtonWidget>("AIRCRAFT"), "Aircraft");

            playerWidgets.Get <ButtonWidget>("OPTIONS_BUTTON").OnClick = OptionsClicked;

            var cheatsButton = playerWidgets.Get <ButtonWidget>("CHEATS_BUTTON");

            cheatsButton.OnClick = () =>
            {
                if (menu != MenuType.None)
                {
                    Ui.CloseWindow();
                }

                menu = MenuType.Cheats;
                Game.OpenWindow("CHEATS_PANEL", new WidgetArgs()
                {
                    { "onExit", () => menu = MenuType.None }
                });
            };
            cheatsButton.IsVisible = () => world.LocalPlayer != null && world.LobbyInfo.GlobalSettings.AllowCheats;

            var winLossWatcher = playerWidgets.Get <LogicTickerWidget>("WIN_LOSS_WATCHER");

            winLossWatcher.OnTick = () =>
            {
                if (world.LocalPlayer.WinState != WinState.Undefined)
                {
                    Game.RunAfterTick(() =>
                    {
                        playerRoot.RemoveChildren();
                        InitObserverWidgets(world, playerRoot);
                    });
                }
            };

            var siloBar = playerWidgets.Get <ResourceBarWidget>("SILOBAR");

            siloBar.GetProvided    = () => playerResources.OreCapacity;
            siloBar.GetUsed        = () => playerResources.Ore;
            siloBar.TooltipFormat  = "Silo Usage: {0}/{1}";
            siloBar.RightIndicator = true;
            siloBar.GetBarColor    = () =>
            {
                if (playerResources.Ore == playerResources.OreCapacity)
                {
                    return(Color.Red);
                }
                if (playerResources.Ore >= 0.8 * playerResources.OreCapacity)
                {
                    return(Color.Orange);
                }
                return(Color.LimeGreen);
            };

            var powerBar = playerWidgets.Get <ResourceBarWidget>("POWERBAR");

            powerBar.GetProvided    = () => powerManager.PowerProvided;
            powerBar.GetUsed        = () => powerManager.PowerDrained;
            powerBar.TooltipFormat  = "Power Usage: {0}/{1}";
            powerBar.RightIndicator = false;
            powerBar.GetBarColor    = () =>
            {
                if (powerManager.PowerState == PowerState.Critical)
                {
                    return(Color.Red);
                }
                if (powerManager.PowerState == PowerState.Low)
                {
                    return(Color.Orange);
                }
                return(Color.LimeGreen);
            };
        }