public override void GetTextToShow(ArcenDoubleCharacterBuffer Buffer)
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                Buffer.Add("<sprite name=\"Hacking\">").Add(localSide.StoredHacking.IntValue.ToString("#,##0"));
                GameEntity hacker = localSide.Entities.GetFirstMatching(EntityRollupType.KingUnits);

                if (hacker == null || hacker.ActiveHack == null)
                {
                    return;
                }
                GameEntity target = World_AIW2.Instance.GetEntityByID(hacker.ActiveHack_Target);

                if (target == null)
                {
                    return;
                }
                int secondsSoFar  = hacker.ActiveHack_DurationThusFar;
                int totalDuration = hacker.ActiveHack.Implementation.GetTotalSecondsToHack(target, hacker);
                int secondsLeft   = totalDuration - secondsSoFar;

                Buffer.Add("\n").Add(Engine_Universal.ToHoursAndMinutesString(secondsLeft));
            }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet          elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameFormationMenu windowController = (Window_InGameFormationMenu)Element.Window.Controller;

                if (windowController.TimeOfLastRefresh < Engine_AIW2.Instance.TimeOfLastControlGroupChange)
                {
                    windowController.NeedRefresh = true;
                }

                if (windowController.LastControlGroupID != World_AIW2.Instance.CurrentActiveSelectionControlGroupPrimaryKeyID)
                {
                    windowController.NeedRefresh = true;
                }

                if (windowController.NeedRefresh)
                {
                    windowController.NeedRefresh        = false;
                    windowController.TimeOfLastRefresh  = DateTime.Now;
                    windowController.LastControlGroupID = World_AIW2.Instance.CurrentActiveSelectionControlGroupPrimaryKeyID;

                    elementAsType.ClearButtons();

                    int x = 0;

                    {
                        bClear  newButtonController = new bClear();
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    for (int i = 0; i < FormationTypeDataTable.Instance.Rows.Count; i++)
                    {
                        FormationTypeData item = FormationTypeDataTable.Instance.Rows[i];
                        bItem             newButtonController = new bItem(item);
                        Vector2           offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();
                }
            }
        public void SetStartingSideRelationships(WorldSide side)
        {
            for (int i = 0; i < World_AIW2.Instance.Sides.Count; i++)
            {
                WorldSide otherSide = World_AIW2.Instance.Sides[i];
                if (side == otherSide)
                {
                    continue;
                }
                switch (otherSide.Type)
                {
                case WorldSideType.Player:
                case WorldSideType.AI:
                    side.MakeFriendlyTo(otherSide);
                    otherSide.MakeFriendlyTo(side);
                    break;

                case WorldSideType.SpecialFaction:
                    if (otherSide.SpecialFactionData != null && otherSide.SpecialFactionData.Implementation == SpecialFaction_Devourer.Instance)
                    {
                        side.MakeHostileTo(otherSide);
                        otherSide.MakeHostileTo(side);
                    }
                    else
                    {
                        side.MakeFriendlyTo(otherSide);
                        otherSide.MakeFriendlyTo(side);
                    }
                    break;
                }
            }
        }
        public static Vector3Int ToVector(this WorldSide worldSide)
        {
            switch (worldSide)
            {
            case WorldSide.North:
                return(new Vector3Int(0, 0, 1));

            case WorldSide.South:
                return(new Vector3Int(0, 0, -1));

            case WorldSide.East:
                return(new Vector3Int(1, 0, 0));

            case WorldSide.West:
                return(new Vector3Int(-1, 0, 0));

            case WorldSide.Top:
                return(new Vector3Int(0, 1, 0));

            case WorldSide.Bottom:
                return(new Vector3Int(0, -1, 0));

            default:
                throw new ArgumentOutOfRangeException(nameof(worldSide), worldSide, null);
            }
        }
            public override void GetTextToShow(ArcenDoubleCharacterBuffer buffer)
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide == null)
                {
                    return;
                }
                buffer.Add("Metal: ");
                buffer.Add(localSide.StoredMetal.IntValue.ToString("#,##0"));
                if (localSide.LastFrame_TotalMetalFlowRequested > 0)
                {
                    buffer.Add("\n");
                    FInt percentProduced = localSide.LastFrame_MetalFlowRequestPortionMet * 100;
                    buffer.Add(percentProduced.IntValue);
                    buffer.Add("%");
                    if (localSide.LastFrame_MetalFlowRequestPortionMet < FInt.One &&
                        localSide.LastFrame_MetalProduced > FInt.Zero)
                    {
                        buffer.Add(" (");
                        int framesLeft  = (localSide.LastFrame_TotalMetalFlowProjectedRequests / localSide.LastFrame_MetalProduced).GetNearestIntPreferringHigher();
                        int secondsLeft = (framesLeft * World_AIW2.Instance.SimulationProfile.SecondsPerFrameSim).GetNearestIntPreferringHigher();
                        buffer.Add(Engine_Universal.ToHoursAndMinutesString(secondsLeft));
                        buffer.Add(")");
                        buffer.Add("\n").Add(localSide.LastFrame_TotalMetalFlowProjectedRequests.IntValue).Add(" / ").Add(localSide.LastFrame_MetalProduced.ReadableString);
                    }
                }
            }
Beispiel #6
0
            public override MouseHandlingResult HandleClick()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return(MouseHandlingResult.PlayClickDeniedSound);
                }
                GameEntity launcher = localSide.Entities.GetFirstMatching(EntityRollupType.KingUnits);

                if (launcher == null)
                {
                    return(MouseHandlingResult.PlayClickDeniedSound);
                }
                Planet planet = Engine_AIW2.Instance.NonSim_GetPlanetBeingCurrentlyViewed();

                if (planet == null || planet != launcher.Combat.Planet)
                {
                    return(MouseHandlingResult.PlayClickDeniedSound);
                }
                GameCommand command = GameCommand.Create(GameCommandType.LaunchWarhead);

                command.RelatedEntityType = this.Type;
                command.RelatedEntityIDs.Add(launcher.PrimaryKeyID);
                if (command.RelatedEntityIDs.Count > 0)
                {
                    World_AIW2.Instance.QueueGameCommand(command, true);
                }
                return(MouseHandlingResult.None);
            }
            public override void GetTextToShow(ArcenDoubleCharacterBuffer buffer)
            {
                base.GetTextToShow(buffer);

                if (this.Item == null)
                {
                    buffer.Add("NULL");
                    return;
                }
                buffer.Add(this.Item.Name);
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide.UnlockedTechs.Contains(this.Item))
                {
                    buffer.Add("\n").Add("(Unlocked)");
                }
                else
                {
                    buffer.Add("\n").Add("(").Add(this.Item.ScienceCost).Add(")");

                    if (localSide.GetCanResearch(this.Item, false, false) == ArcenRejectionReason.SideDoesNotHavePrerequisiteTech)
                    {
                        buffer.Add("\n").Add("(Locked)");
                    }
                }
            }
Beispiel #8
0
        private Vector2 GetBlockCornerUv(WorldSide side, Corner corner)
        {
            GetBlockCornerData(side, corner, out var textureSize, out var position);
            var uv = position / textureSize;

            return(uv);
        }
Beispiel #9
0
        private void GetBlockCornerData(WorldSide side, Corner corner, out Vector2Int textureSize, out Vector2 position)
        {
            Rect rect;

            (textureSize, rect) = _block.GetTextureData(side);

            switch (corner)
            {
            case Corner.LeftBottom:
                position = rect.min + Vector2.one * _bordersInPixels;
                break;

            case Corner.LeftTop:
                position    = new Vector2(rect.xMin, rect.yMax);
                position.x += _bordersInPixels;
                position.y -= _bordersInPixels;
                break;

            case Corner.RightTop:
                position = rect.max - Vector2.one * _bordersInPixels;
                break;

            case Corner.RightBottom:
                position    = new Vector2(rect.xMax, rect.yMin);
                position.x -= _bordersInPixels;
                position.y += _bordersInPixels;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(corner), corner, null);
            }
        }
Beispiel #10
0
        public BlockTerrainMeshBuilder AddSide(WorldSide side)
        {
            var vertices = WorldSideVertices[side];

            Quad(side, vertices[0], vertices[1], vertices[2], vertices[3]);
            return(this);
        }
Beispiel #11
0
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet elementAsType = (ArcenUI_ButtonSet)Element;

                //Window_InGameTracingMenu windowController = (Window_InGameTracingMenu)Element.Window.Controller;

                if (elementAsType.Buttons.Count <= 0)
                {
                    int x = 0;
                    for (int flagInt = 1; flagInt < (int)ArcenTracingFlags.Length; flagInt <<= 1, x++)
                    {
                        ArcenTracingFlags flag = (ArcenTracingFlags)flagInt;
                        bItem             newButtonController = new bItem(flag);
                        Vector2           offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                    }
                }
            }
        public void HandleDeathWithEffectApplied(GameEntity Entity, int ThisDeathEffectDamageSustained, WorldSide SideThatDidTheKilling, WorldSide SideResponsibleForTheDeathEffect, ArcenSimContext Context)
        {
            if (SideResponsibleForTheDeathEffect == null)
            {
                return;
            }
            if (!Entity.GetMatches(EntityRollupType.MobileCombatants))
            {
                return;
            }
            ISpecialFactionImplementation implementationToSearchFor = null;

            if (SideResponsibleForTheDeathEffect.Type == WorldSideType.AI)
            {
                implementationToSearchFor = SpecialFaction_AntiPlayerZombie.Instance;
            }
            else if (SideResponsibleForTheDeathEffect.Type == WorldSideType.Player)
            {
                implementationToSearchFor = SpecialFaction_AntiAIZombie.Instance;
            }
            else
            {
                implementationToSearchFor = SpecialFaction_AntiEveryoneZombie.Instance;
            }
            WorldSide destinationSide = World_AIW2.Instance.GetSideBySpecialFactionImplementation(implementationToSearchFor);

            if (destinationSide == null)
            {
                return;
            }
            CombatSide sideForNewEntity = Entity.Combat.GetSideForWorldSide(destinationSide);
            GameEntity zombie           = GameEntity.CreateNew(sideForNewEntity, Entity.TypeData, Entity.WorldLocation, Context);

            zombie.EntitySpecificOrders.Behavior = EntityBehaviorType.Attacker;
        }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet elementAsType = (ArcenUI_ButtonSet)Element;

                //Window_InGameGalaxyMapDisplayModeMenu windowController = (Window_InGameGalaxyMapDisplayModeMenu)Element.Window.Controller;

                if (elementAsType.Buttons.Count <= 0)
                {
                    int x = 0;
                    for (int i = 0; i < GalaxyMapDisplayModeTable.Instance.Rows.Count; i++)
                    {
                        GalaxyMapDisplayMode mode   = GalaxyMapDisplayModeTable.Instance.Rows[i];
                        bItem   newButtonController = new bItem(mode);
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }
                }
            }
Beispiel #14
0
        public void DoLongRangePlanning(WorldSide side, ArcenLongTermPlanningContext Context)
        {
            Galaxy galaxy = World_AIW2.Instance.SetOfGalaxies.Galaxies[0];

            side.Entities.DoForEntities(GameEntityCategory.Ship, delegate(GameEntity entity)
            {
                if (entity.LongRangePlanningData == null)
                {
                    return(DelReturn.Continue); // if created after the start of this planning cycle, skip
                }
                if (!entity.TypeData.GetHasTag(DEVOURER_TAG))
                {
                    return(DelReturn.Continue); // if not the Big D, skip (shouldn't happen, but if somebody mods in a reclamator gun for the thing, etc)
                }
                if (entity.LongRangePlanningData.FinalDestinationPlanetIndex != -1 &&
                    entity.LongRangePlanningData.FinalDestinationPlanetIndex != entity.LongRangePlanningData.CurrentPlanetIndex)
                {
                    return(DelReturn.Continue); // if heading somewhere else, skip
                }
                Planet planet = World_AIW2.Instance.GetPlanetByIndex(entity.LongRangePlanningData.CurrentPlanetIndex);

                List <GameEntity> threatShipsNotAssignedElsewhere = new List <GameEntity>();
                threatShipsNotAssignedElsewhere.Add(entity);
                FactionUtilityMethods.Helper_SendThreatOnRaid(threatShipsNotAssignedElsewhere, side, galaxy, planet, true, Context);

                return(DelReturn.Continue);
            });
        }
            public override void GetTextToShow(ArcenDoubleCharacterBuffer buffer)
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                buffer.Add("<sprite name=\"Metal\">");
                buffer.Add(localSide.StoredMetal.IntValue.ToString("#,##0"));

                if (localSide.LastFrame_TotalMetalFlowRequested > 0)
                {
                    buffer.Add("   (");
                    int amountSpentLastFrame = localSide.LastFrame_MetalSpent.IntValue;
                    int incomeLastFrame      = localSide.LastFrame_MetalProduced.GetNearestIntPreferringHigher();
                    int netIncome            = incomeLastFrame - amountSpentLastFrame;
                    if (netIncome > 0)
                    {
                        buffer.Add("+");
                    }
                    buffer.Add(netIncome);
                    buffer.Add(" net)");
                    if (localSide.LastFrame_MetalFlowRequestPortionMet < FInt.One &&
                        localSide.LastFrame_MetalProduced > FInt.Zero)
                    {
                        buffer.Add(" (");
                        int framesLeft  = (localSide.LastFrame_TotalMetalFlowProjectedRequests / localSide.LastFrame_MetalProduced).GetNearestIntPreferringHigher();
                        int secondsLeft = (framesLeft * World_AIW2.Instance.SimulationProfile.SecondsPerFrameSim).GetNearestIntPreferringHigher();
                        buffer.Add(Engine_Universal.ToHoursAndMinutesString(secondsLeft));
                        buffer.Add(" est)");   //estimated time left
                        buffer.Add("\n required: ").Add(localSide.LastFrame_TotalMetalFlowProjectedRequests.IntValue).Add("\nproduced: ").Add(localSide.LastFrame_MetalProduced.GetNearestIntPreferringHigher());
                    }
                }
            }
Beispiel #16
0
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide == null)
                {
                    return;
                }
                GameEntity launcher = localSide.Entities.GetFirstMatching(EntityRollupType.KingUnits);

                if (launcher == null)
                {
                    return;
                }
                ArcenUI_ButtonSet        elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameWarheadMenu windowController = (Window_InGameWarheadMenu)Element.Window.Controller;

                if (windowController.PlanetChangedSinceLastButtonSetUpdate)
                {
                    elementAsType.ClearButtons();

                    int x = 0;
                    for (int i = 0; i < GameEntityTypeDataTable.Instance.Rows.Count; i++)
                    {
                        GameEntityTypeData type = GameEntityTypeDataTable.Instance.Rows[i];
                        if (type.SpecialType != SpecialEntityType.Warhead)
                        {
                            continue;
                        }
                        bool foundIt = false;
                        for (int j = 0; j < launcher.WarheadContents.Count; j++)
                        {
                            if (launcher.WarheadContents[j].ContainedType != type)
                            {
                                continue;
                            }
                            foundIt = true;
                            break;
                        }
                        if (!foundIt)
                        {
                            continue;
                        }
                        bItem   newButtonController = new bItem(type);
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();

                    windowController.PlanetChangedSinceLastButtonSetUpdate = false;
                }
            }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide == null)
                {
                    return;
                }
                Planet                 planet           = Engine_AIW2.Instance.NonSim_GetPlanetBeingCurrentlyViewed();
                ArcenUI_ButtonSet      elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameBuildMenu windowController = (Window_InGameBuildMenu)Element.Window.Controller;

                if (windowController.EntityChangedSinceLastButtonSetUpdate_Menu)
                {
                    elementAsType.ClearButtons();

                    GameEntity entity = World_AIW2.Instance.GetEntityByID(windowController.EntityID);
                    if (entity != null)
                    {
                        List <BuildMenu> menus = entity.TypeData.BuildMenus;
                        int x = 0;
                        for (int i = 0; i < menus.Count; i++)
                        {
                            BuildMenu item = menus[i];
                            if (item.RequiresPresenceOf != null)
                            {
                                bool foundIt = false;
                                planet.Combat.DoForEntities(EntityRollupType.SpecialBuildMenuEnablers, delegate(GameEntity enabler)
                                {
                                    if (enabler.TypeData != item.RequiresPresenceOf)
                                    {
                                        return(DelReturn.Continue);
                                    }
                                    foundIt = true;
                                    return(DelReturn.Break);
                                });
                                if (!foundIt)
                                {
                                    continue;
                                }
                            }
                            bMenuSelectionItem newButtonController = new bMenuSelectionItem(entity.TypeData, i);
                            Vector2            offset;
                            offset.x = x * elementAsType.ButtonWidth;
                            offset.y = 0;
                            Vector2 size;
                            size.x = elementAsType.ButtonWidth;
                            size.y = elementAsType.ButtonHeight;
                            elementAsType.AddButton(newButtonController, size, offset);
                            x++;
                        }
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();

                    windowController.EntityChangedSinceLastButtonSetUpdate_Menu = false;
                    windowController.MenuIndexChangedSinceLastButtonSetUpdate   = true;
                }
            }
Beispiel #18
0
        public FInt GetRaidTraversalDifficulty(WorldSide AISide, Planet planet)
        {
            FInt result = (FInt)ExternalConstants.Instance.Balance_StrengthPerCap / 20; // basic difficulty cost of travelling a hop

            result += planet.HumanTotalStrength;

            return(result);
        }
Beispiel #19
0
        public FInt GetRaidTraversalDifficulty(WorldSide AISide, Planet planet)
        {
            FInt result = (FInt)ExternalConstants.Instance.Balance_StrengthPerCap / 20; // basic difficulty cost of travelling a hop

            result += planet.Combat.GetSideForWorldSide(AISide).DataByStance[SideStance.Hostile].TotalStrength;

            return(result);
        }
Beispiel #20
0
        public ArcenEnumIndexedArray_AIBudgetType <FInt> GetSpendingRatios(WorldSide side)
        {
            ArcenEnumIndexedArray_AIBudgetType <FInt> result = new ArcenEnumIndexedArray_AIBudgetType <FInt>();

            result[AIBudgetType.Reinforcement] = FInt.One;

            return(result);
        }
Beispiel #21
0
        public (Vector2Int textureSize, Rect rect) GetTextureData(WorldSide side)
        {
            var sprite      = GetSprite(side);
            var texture     = sprite.texture;
            var textureSize = new Vector2Int(texture.width, texture.height);

            return(textureSize, sprite.rect);
        }
        public override MouseHandlingResult HandleClick()
        {
            if (this.TypeToBuild == null)
            {
                return(MouseHandlingResult.PlayClickDeniedSound);
            }
            else
            {
                if (Window_InGameTechTypeIconMenu.Instance.IsOpen)
                {
                    WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();
                    if (localSide.GetCanResearch(this.TypeToBuild.TechPrereq, false, false) != ArcenRejectionReason.Unknown)
                    {
                        return(MouseHandlingResult.PlayClickDeniedSound);
                    }
                    GameCommand command = GameCommand.Create(GameCommandType.UnlockTech);
                    command.RelatedSide = World_AIW2.Instance.GetLocalPlayerSide();
                    command.RelatedTech = this.TypeToBuild.TechPrereq;
                    World_AIW2.Instance.QueueGameCommand(command, true);
                    return(MouseHandlingResult.None);
                }
                else
                {
                    if (this.TypeToBuild.MetalFlows[MetalFlowPurpose.SelfConstruction] != null)
                    {
                        Engine_AIW2.Instance.PlacingEntityType = this.TypeToBuild;
                    }
                    else
                    {
                        GameCommand command = GameCommand.Create(GameCommandType.AlterBuildQueue);
                        command.RelatedEntityType = this.TypeToBuild;
                        command.RelatedMagnitude  = 1;
                        if (Engine_AIW2.Instance.PresentationLayer.GetAreInputFlagsActive(ArcenInputFlags.Subtractive))
                        {
                            command.RelatedMagnitude = -command.RelatedMagnitude;
                        }

                        Engine_AIW2.Instance.DoForSelected(SelectionCommandScope.CurrentPlanet_UnlessViewingGalaxy, delegate(GameEntity selected)
                        {
                            if (selected.TypeData != this.TypeDoingTheBuilding)
                            {
                                return(DelReturn.Continue);
                            }
                            command.RelatedEntityIDs.Add(selected.PrimaryKeyID);
                            return(DelReturn.Continue);
                        });

                        if (command.RelatedEntityIDs.Count > 0)
                        {
                            World_AIW2.Instance.QueueGameCommand(command, true);
                        }
                    }
                }
            }
            return(MouseHandlingResult.None);
        }
Beispiel #23
0
            private ControlGroup GetControlGroup()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (this.ControlGroupIndex < 0 || this.ControlGroupIndex >= localSide.ControlGroups.Count)
                {
                    return(null);
                }
                return(localSide.ControlGroups[this.ControlGroupIndex]);
            }
            public override void GetTextToShow(ArcenDoubleCharacterBuffer Buffer)
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide == null)
                {
                    return;
                }
                Buffer.Add("Science: ").Add(localSide.StoredScience.IntValue.ToString("#,##0"));
            }
            public override void GetTextToShow(ArcenDoubleCharacterBuffer Buffer)
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                Buffer.Add("<sprite name=\"Fuel\">").Add(localSide.NetFuel.ToString("#,##0"));
            }
            public override void HandleMouseover()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }

                Window_AtMouseTooltipPanel.bPanel.Instance.SetText("Available Fuel. Fuel is a global resource required to power fleetships and starships.\nUsed/Total: (" + localSide.FuelConsumption.ToString() + "/" + localSide.FuelProduction + ")");
            }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet      elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameRallyMenu windowController = (Window_InGameRallyMenu)Element.Window.Controller;

                if (windowController != null)
                {
                }                                   //prevent compiler warning

                if (windowController.NeedRefresh)
                {
                    windowController.NeedRefresh = false;
                    elementAsType.ClearButtons();

                    int x = 0;
                    for (int i = 0; i < localSide.ControlGroups.Count; i++)
                    {
                        ControlGroup controlGroup = localSide.ControlGroups[i];
                        if (controlGroup.EntityIDs.Count <= 0)
                        {
                            continue;
                        }
                        bItem   newButtonController = new bItem(controlGroup);
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    {
                        bClear  newButtonController = new bClear();
                        Vector2 offset;
                        offset.x = 9 * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();
                }
            }
Beispiel #28
0
        private void Quad(WorldSide side, Vector3 leftBottom, Vector3 leftTop, Vector3 rightTop, Vector3 rightBottom)
        {
            var initialVerticesCount = _vertices.Count;

            Vertex(side, leftBottom, Corner.LeftBottom);
            Vertex(side, leftTop, Corner.LeftTop);
            Vertex(side, rightTop, Corner.RightTop);
            Vertex(side, rightBottom, Corner.RightBottom);

            Triangle(initialVerticesCount, initialVerticesCount + 1, initialVerticesCount + 2);
            Triangle(initialVerticesCount, initialVerticesCount + 2, initialVerticesCount + 3);
        }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet elementAsType = (ArcenUI_ButtonSet)Element;

                if (Window_InGameBuildTabMenu.Instance.EntityChangedSinceLastButtonSetUpdate_QueueControls)
                {
                    elementAsType.ClearButtons();

                    GameEntity entity = World_AIW2.Instance.GetEntityByID(Window_InGameBuildTabMenu.Instance.EntityID);
                    if (entity != null)
                    {
                        //float aspectRatioAdjustedButtonWidth = elementAsType.ButtonWidth;
                        //float aspectRatioAdjustedButtonHeight = elementAsType.ButtonHeight;
                        //if ( ArcenUI.Instance.PixelsPerPercent_X != ArcenUI.Instance.PixelsPerPercent_Y )
                        //    aspectRatioAdjustedButtonWidth *= ArcenUI.Instance.PixelsPerPercent_Y / ArcenUI.Instance.PixelsPerPercent_X;

                        float runningY = 0;
                        {
                            bTogglePause newButtonController = new bTogglePause();
                            Vector2      offset;
                            offset.x = 0;
                            offset.y = 0;
                            Vector2 size;
                            size.x = elementAsType.ButtonWidth;
                            size.y = elementAsType.ButtonHeight;
                            elementAsType.AddButton(newButtonController, size, offset);
                            runningY += size.y;
                        }
                        {
                            bToggleLoop newButtonController = new bToggleLoop();
                            Vector2     offset;
                            offset.x = 0;
                            offset.y = runningY;
                            Vector2 size;
                            size.x = elementAsType.ButtonWidth;
                            size.y = elementAsType.ButtonHeight;
                            elementAsType.AddButton(newButtonController, size, offset);
                            runningY += size.y;
                        }

                        elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();

                        Window_InGameBuildTabMenu.Instance.EntityChangedSinceLastButtonSetUpdate_QueueControls = false;
                        Window_InGameBuildTabMenu.Instance.MenuIndexChangedSinceLastButtonSetUpdate            = true;
                    }
                }
            }
Beispiel #30
0
        private Sprite GetSprite(WorldSide side)
        {
            foreach (var mapping in _mappings)
            {
                if (mapping.Side == side)
                {
                    return(mapping.Sprite);
                }
            }

            return(_fallbackSprite);
        }