Example #1
0
 private void Client_TurnBegin_CheckIndustryThreshold()
 {
     if (this.kaijuSpawnTurn == -1 && !this.KaijuEmpire.HasSpawnedAnyKaiju)
     {
         float totalIndustrySpent    = KaijuCouncil.GetTotalIndustrySpent();
         float industryNeededToSpawn = this.GetIndustryNeededToSpawn();
         Diagnostics.Log("[Kaiju] Total Industry Spent: [{0}]", new object[]
         {
             totalIndustrySpent
         });
         if (totalIndustrySpent >= industryNeededToSpawn)
         {
             this.kaijuSpawnTurn = (this.gameService.Game as global::Game).Turn + Amplitude.Unity.Runtime.Runtime.Registry.GetValue <int>(KaijuCouncil.TurnsToSpawnPath);
             if (this.KaijuEmpire.GetPropertyValue(SimulationProperties.SpawnedKaijusGlobalCounter) <= 0f)
             {
                 global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server;
                 if (server != null)
                 {
                     OrderAnnounceFirstKaiju order = new OrderAnnounceFirstKaiju();
                     server.PostOrder(order);
                 }
             }
         }
     }
 }
Example #2
0
 private void EventService_EventRaise(object sender, EventRaiseEventArgs e)
 {
     if (e.RaisedEvent.EventName == EventNewEraGlobal.Name)
     {
         KaijuCouncil.UpdateTameCosts();
     }
 }
Example #3
0
    public void TryRelocateKaijuOrResetETA()
    {
        global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server;
        Region validKaijuRegion         = KaijuCouncil.GetValidKaijuRegion();

        if (validKaijuRegion == null)
        {
            if (this.Kaiju != null)
            {
                this.ResetRelocationETA();
            }
            Diagnostics.LogWarning("Unable to find suitable region. Reset Kaiju ETA!");
            return;
        }
        WorldPosition validKaijuPosition = KaijuCouncil.GetValidKaijuPosition(validKaijuRegion, false);

        if (validKaijuPosition == WorldPosition.Zero)
        {
            if (this.Kaiju != null)
            {
                this.ResetRelocationETA();
            }
            Diagnostics.LogWarning("Unable to find suitable position in target region. Reset Kaiju ETA.");
            return;
        }
        if (server != null && this.Kaiju != null && this.Kaiju.OnGarrisonMode() && this.Kaiju.IsWild())
        {
            IPlayerControllerRepositoryService service = this.gameService.Game.Services.GetService <IPlayerControllerRepositoryService>();
            OrderRelocateKaiju order = new OrderRelocateKaiju(this.Kaiju.GUID, validKaijuPosition);
            server.PostOrder(order);
        }
    }
Example #4
0
 private void Client_TurnBegin_CheckKaijuStatus()
 {
     if (this.Kaiju != null)
     {
         if (this.Kaiju.IsStunned())
         {
             if (this.Kaiju.NextTurnToRecoverFromStun > 0 && (this.gameService.Game as global::Game).Turn == this.Kaiju.NextTurnToRecoverFromStun)
             {
                 this.Kaiju.ChangeToWildState();
             }
         }
         else if (this.Kaiju.IsWild() && this.Kaiju.OnArmyMode())
         {
             global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server;
             if (server != null)
             {
                 Region validKaijuRegion = KaijuCouncil.GetValidKaijuRegion();
                 if (validKaijuRegion == null)
                 {
                     Diagnostics.LogWarning("Unable to find suitable region");
                     return;
                 }
                 WorldPosition validKaijuPosition = KaijuCouncil.GetValidKaijuPosition(validKaijuRegion, false);
                 if (validKaijuPosition == WorldPosition.Zero)
                 {
                     Diagnostics.LogWarning("Unable to find suitable position in target region");
                     return;
                 }
                 OrderRelocateKaiju order = new OrderRelocateKaiju(this.Kaiju.GUID, validKaijuPosition);
                 server.PostOrder(order);
             }
         }
     }
 }
Example #5
0
    protected override IEnumerator OnInitialize()
    {
        this.descriptorsDatabase = Databases.GetDatabase <SimulationDescriptor>(false);
        Diagnostics.Assert(this.descriptorsDatabase != null);
        this.gameService = Services.GetService <IGameService>();
        Diagnostics.Assert(this.gameService != null);
        this.endTurnService = Services.GetService <IEndTurnService>();
        Diagnostics.Assert(this.endTurnService != null);
        this.eventService = Services.GetService <IEventService>();
        Diagnostics.Assert(this.eventService != null);
        this.eventService.EventRaise    += this.EventService_EventRaise;
        this.gameEntityRepositoryService = this.gameService.Game.Services.GetService <IGameEntityRepositoryService>();
        Diagnostics.Assert(this.gameEntityRepositoryService != null);
        this.gameEntityRepositoryService.GameEntityUnregistered += this.GameEntityRepositoryService_GameEntityUnregistered;
        this.seasonService = this.gameService.Game.Services.GetService <ISeasonService>();
        Diagnostics.Assert(this.seasonService != null);
        this.worldPositionningService = this.gameService.Game.Services.GetService <IWorldPositionningService>();
        Diagnostics.Assert(this.worldPositionningService != null);
        KaijuCouncil.StaticInitialize();
        KaijuCouncil.PreComputeAttractiveness();
        base.Empire.RegisterPass("GameServerState_Turn_Begin", "KaijuCouncilServerTurnBegin", new Agency.Action(this.GameServerState_Turn_Begin), new string[0]);
        base.Empire.RegisterPass("GameServerState_Turn_End", "KaijuCouncilServerTurnEnd", new Agency.Action(this.GameServerState_Turn_End), new string[0]);
        base.Empire.RegisterPass("GameClientState_Turn_Begin", "KaijuCouncilClientTurnBegin", new Agency.Action(this.GameClientState_Turn_Begin), new string[0]);
        base.Empire.RegisterPass("GameClientState_Turn_End", "KaijuCouncilClientTurnEnd", new Agency.Action(this.GameClientState_Turn_End), new string[0]);
        this.departmentOfDefense   = base.Empire.GetAgency <DepartmentOfDefense>();
        this.departmentOfEducation = base.Empire.GetAgency <DepartmentOfEducation>();
        this.ResetRelocationETA();
        yield return(base.OnInitialize());

        yield break;
    }
Example #6
0
    public void SetupPortrait(Kaiju kaiju, Empire playerEmpire)
    {
        this.Kaiju = kaiju;
        if (this.Portrait != null)
        {
            IGuiPanelHelper guiPanelHelper = Services.GetService <global::IGuiService>().GuiPanelHelper;
            Diagnostics.Assert(guiPanelHelper != null, "Unable to access GuiPanelHelper");
            Texture2D image;
            if (guiPanelHelper.TryGetTextureFromIcon(this.KaijuGuiElement, global::GuiPanel.IconSize.Large, out image))
            {
                this.Portrait.Image = image;
            }
        }
        Amplitude.Unity.Gui.IGuiService service = Services.GetService <global::IGuiService>();
        Diagnostics.Assert(service != null);
        KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost();

        this.CostGroup.Visible = this.Kaiju.IsWild();
        KaijuCouncil agency = this.Kaiju.KaijuEmpire.GetAgency <KaijuCouncil>();

        this.CostValue.Text = GuiFormater.FormatGui(kaijuTameCost.GetValue(playerEmpire), false, true, false, 0) + service.FormatSymbol(ELCPUtilities.UseELCPSymbiosisBuffs ? agency.ELCPResourceName : kaijuTameCost.ResourceName);
        if (this.Background != null)
        {
            this.Background.TintColor = this.Kaiju.Empire.Color;
        }
        this.AgeTransform.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString(KaijuTechPortrait.PortraitClickTooltip);
    }
    private WorldPosition GetBestDefensiveKaijuPosition(Region targetRegion)
    {
        Region[] neighbourRegionsWithCityOfEmpire = this.worldPositionningService.GetNeighbourRegionsWithCityOfEmpire(targetRegion, this.MajorEmpire, false);
        if (neighbourRegionsWithCityOfEmpire.Length == 0)
        {
            return(KaijuCouncil.GetValidKaijuPosition(targetRegion, false));
        }
        List <WorldPosition> list = (from position in targetRegion.WorldPositions
                                     where KaijuCouncil.IsPositionValidForSettleKaiju(position, null)
                                     select position).ToList <WorldPosition>();

        if (list.Count == 0)
        {
            return(WorldPosition.Invalid);
        }
        int num   = -1;
        int index = -1;

        for (int i = 0; i < list.Count; i++)
        {
            int num2 = 0;
            foreach (Region region in neighbourRegionsWithCityOfEmpire)
            {
                int distance = this.worldPositionningService.GetDistance(list[i], region.City.WorldPosition);
                num2 += ((distance > 5) ? Mathf.Max(15 - distance, 0) : ((15 - distance) * 3));
            }
            if (num2 > num)
            {
                num   = num2;
                index = i;
            }
        }
        return(list[index]);
    }
Example #8
0
    private List <Kaiju> GetFilterKaijuTargets(bool includeTamedKaijus)
    {
        List <Kaiju> list    = new List <Kaiju>();
        IGameService service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        foreach (global::Empire empire in (service.Game as global::Game).Empires)
        {
            if (empire is KaijuEmpire)
            {
                KaijuEmpire kaijuEmpire = empire as KaijuEmpire;
                if (kaijuEmpire != null && kaijuEmpire.Region != null)
                {
                    KaijuCouncil agency = kaijuEmpire.GetAgency <KaijuCouncil>();
                    if (agency != null && agency.Kaiju != null)
                    {
                        list.Add(agency.Kaiju);
                    }
                }
            }
            else if (includeTamedKaijus && empire is MajorEmpire && empire.Index != base.AIEntity.Empire.Index)
            {
                MajorEmpire majorEmpire = empire as MajorEmpire;
                foreach (Kaiju item in majorEmpire.TamedKaijus)
                {
                    if (!this.departmentOfForeignAffairs.IsFriend(majorEmpire))
                    {
                        list.Add(item);
                    }
                }
            }
        }
        return(list);
    }
    private List <Kaiju> ObtainKaijus()
    {
        List <Kaiju> list = new List <Kaiju>();

        MajorEmpire[] array = Array.ConvertAll <global::Empire, MajorEmpire>(Array.FindAll <global::Empire>((base.Game as global::Game).Empires, (global::Empire match) => match is MajorEmpire), (global::Empire empire) => empire as MajorEmpire);
        for (int i = 0; i < array.Length; i++)
        {
            List <Kaiju> tamedKaijus = array[i].TamedKaijus;
            if (tamedKaijus.Count > 0)
            {
                for (int j = 0; j < tamedKaijus.Count; j++)
                {
                    list.Add(tamedKaijus[j]);
                }
            }
        }
        KaijuEmpire[] array2 = Array.ConvertAll <global::Empire, KaijuEmpire>(Array.FindAll <global::Empire>((base.Game as global::Game).Empires, (global::Empire match) => match is KaijuEmpire), (global::Empire empire) => empire as KaijuEmpire);
        for (int k = 0; k < array2.Length; k++)
        {
            KaijuCouncil agency = array2[k].GetAgency <KaijuCouncil>();
            if (agency.Kaiju != null)
            {
                list.Add(agency.Kaiju);
            }
        }
        return(list);
    }
Example #10
0
    public WorldPosition GetRandomValidArmyPosition(Village village)
    {
        WorldOrientation orientation = (WorldOrientation)this.random.Next(0, 6);
        WorldPosition    result      = WorldPosition.Invalid;

        for (int i = 0; i < 6; i++)
        {
            WorldOrientation direction  = orientation.Rotate(i);
            WorldPosition    neighbourg = this.worldPositionningService.GetNeighbourTile(village.WorldPosition, direction, 1);
            int regionIndex             = (int)this.worldPositionningService.GetRegionIndex(neighbourg);
            if (regionIndex == village.Region.Index)
            {
                if (DepartmentOfDefense.CheckWhetherTargetPositionIsValidForUseAsArmySpawnLocation(neighbourg, PathfindingMovementCapacity.Ground | PathfindingMovementCapacity.Water))
                {
                    global::Empire[] empires = (this.GameService.Game as global::Game).Empires;
                    int j = 0;
                    while (j < empires.Length)
                    {
                        global::Empire empire = empires[j];
                        if (!(empire is KaijuEmpire))
                        {
                            goto IL_106;
                        }
                        KaijuEmpire kaijuEmpire = empire as KaijuEmpire;
                        if (kaijuEmpire == null)
                        {
                            goto IL_106;
                        }
                        KaijuCouncil agency = kaijuEmpire.GetAgency <KaijuCouncil>();
                        if (agency == null || agency.Kaiju == null || !(agency.Kaiju.WorldPosition == neighbourg))
                        {
                            goto IL_106;
                        }
IL_145:
                        j++;
                        continue;
IL_106:
                        if (!(empire is MajorEmpire))
                        {
                            goto IL_145;
                        }
                        MajorEmpire majorEmpire = empire as MajorEmpire;
                        if (majorEmpire == null || majorEmpire.TamedKaijus.Any((Kaiju m) => m.WorldPosition == neighbourg))
                        {
                            goto IL_145;
                        }
                        goto IL_145;
                    }
                    District district = this.worldPositionningService.GetDistrict(neighbourg);
                    if (district == null || !District.IsACityTile(district))
                    {
                        result = neighbourg;
                        break;
                    }
                }
            }
        }
        return(result);
    }
Example #11
0
    public static bool CanELCPTameKaiju(Kaiju kaiju, KaijuTameCost tameCost, global::Empire empire)
    {
        KaijuCouncil            agency  = kaiju.KaijuEmpire.GetAgency <KaijuCouncil>();
        float                   num     = -tameCost.GetValue(empire.SimulationObject);
        DepartmentOfTheTreasury agency2 = empire.GetAgency <DepartmentOfTheTreasury>();

        return(agency2 != null && agency2.IsTransferOfResourcePossible(empire, agency.ELCPResourceName, ref num));
    }
    private float GetTargetPower(IWorldPositionable worldPositionable, int size, global::Empire myEmpire, IGameService service)
    {
        DepartmentOfForeignAffairs agency = myEmpire.GetAgency <DepartmentOfForeignAffairs>();
        float num = 0f;

        if (worldPositionable is KaijuGarrison)
        {
            num += (worldPositionable as KaijuGarrison).GetPropertyValue(SimulationProperties.MilitaryPower);
        }
        else if (worldPositionable is Kaiju && (worldPositionable as Kaiju).OnGarrisonMode())
        {
            num += (worldPositionable as Kaiju).GetActiveTroops().GetPropertyValue(SimulationProperties.MilitaryPower);
        }
        if (size > 0)
        {
            foreach (global::Empire empire in (service.Game as global::Game).Empires)
            {
                if (empire is KaijuEmpire)
                {
                    KaijuEmpire kaijuEmpire = empire as KaijuEmpire;
                    if (kaijuEmpire != null && kaijuEmpire.Region != null)
                    {
                        KaijuCouncil agency2 = kaijuEmpire.GetAgency <KaijuCouncil>();
                        if (agency2 != null && agency2.Kaiju != null && agency2.Kaiju.IsTamed() && agency2.Kaiju.OnGarrisonMode() && this.worldPositionningService.GetDistance(worldPositionable.WorldPosition, agency2.Kaiju.WorldPosition) <= size && agency.IsEnnemy(agency2.Kaiju.MajorEmpire))
                        {
                            num += agency2.Kaiju.KaijuGarrison.GetPropertyValue(SimulationProperties.MilitaryPower);
                        }
                    }
                }
            }
            List <City> list = new List <City>();
            foreach (WorldPosition worldPosition in new WorldCircle(worldPositionable.WorldPosition, size).GetWorldPositions(this.worldPositionningService.World.WorldParameters))
            {
                Army armyAtPosition = this.worldPositionningService.GetArmyAtPosition(worldPosition);
                if (armyAtPosition != null && !armyAtPosition.IsFomorian && agency.IsEnnemy(armyAtPosition.Empire))
                {
                    num += armyAtPosition.GetPropertyValue(SimulationProperties.MilitaryPower);
                }
                District district = this.worldPositionningService.GetDistrict(worldPosition);
                if (district != null && district.Empire != null && district.City != null && agency.IsEnnemy(district.Empire))
                {
                    if (district.Type == DistrictType.Camp)
                    {
                        num += district.City.Camp.GetPropertyValue(SimulationProperties.MilitaryPower);
                    }
                    else if (!list.Contains(district.City))
                    {
                        num += district.City.GetPropertyValue(SimulationProperties.MilitaryPower);
                        list.Add(district.City);
                    }
                }
            }
        }
        return(num);
    }
Example #13
0
 public static Region GetValidKaijuRegion()
 {
     Region[] array = (from region in KaijuCouncil.world.Regions
                       where KaijuCouncil.IsRegionValidForSettleKaiju(region)
                       select region).ToArray <Region>();
     if (array.Length > 0)
     {
         return(array[KaijuCouncil.random.Next(0, array.Length)]);
     }
     return(null);
 }
    private WorldPosition GetValidKaijuSupportPosition(Region targetRegion, Army ArmyToSupport)
    {
        List <WorldPosition> list = (from position in targetRegion.WorldPositions
                                     where KaijuCouncil.IsPositionValidForSettleKaiju(position, null)
                                     select position).ToList <WorldPosition>();

        if (list.Count == 0)
        {
            return(WorldPosition.Invalid);
        }
        list.Sort((WorldPosition left, WorldPosition right) => this.worldPositionningService.GetDistance(left, ArmyToSupport.WorldPosition).CompareTo(this.worldPositionningService.GetDistance(right, ArmyToSupport.WorldPosition)));
        return(list[0]);
    }
Example #15
0
    public static bool IsPositionValidForSettleKaiju(WorldPosition worldPosition, Kaiju kaiju = null)
    {
        if (!KaijuCouncil.IgnoreRegionRequirements && !KaijuCouncil.IsRegionValidForSettleKaiju(KaijuCouncil.worldPositionService.GetRegion(worldPosition)))
        {
            return(false);
        }
        if (KaijuCouncil.worldPositionService.IsFrozenWaterTile(worldPosition) || KaijuCouncil.worldPositionService.IsWaterTile(worldPosition))
        {
            return(false);
        }
        Army armyAtPosition = KaijuCouncil.worldPositionService.GetArmyAtPosition(worldPosition);

        return(KaijuCouncil.attractivenessMap.GetValue(worldPosition) && (armyAtPosition == null || (kaiju != null && armyAtPosition.Empire.Index == kaiju.Empire.Index && armyAtPosition.GUID == kaiju.KaijuArmy.GUID)) && KaijuCouncil.worldPositionService.GetDistrict(worldPosition) == null);
    }
Example #16
0
    public static WorldPosition GetValidKaijuPosition(Region targetRegion, bool randomFallback = false)
    {
        IGameService service = Services.GetService <IGameService>();
        IWorldPositionningService service3 = service.Game.Services.GetService <IWorldPositionningService>();

        KaijuCouncil.attractivenessMap = (KaijuCouncil.world.Atlas.GetMap(WorldAtlas.Maps.KaijuAttractiveness) as GridMap <bool>);
        WorldPosition[] array = (from position in targetRegion.WorldPositions
                                 where KaijuCouncil.IsPositionValidForSettleKaiju(position, null)
                                 select position).ToArray <WorldPosition>();
        WorldPosition result = WorldPosition.Invalid;

        if (array.Length != 0)
        {
            result = array[KaijuCouncil.random.Next(0, array.Length)];
            if (!ELCPUtilities.UseELCPSymbiosisBuffs)
            {
                goto IL_185;
            }
            List <WorldPosition>   list  = array.ToList <WorldPosition>().Randomize(KaijuCouncil.random);
            List <PointOfInterest> list2 = targetRegion.PointOfInterests.ToList <PointOfInterest>().FindAll((PointOfInterest PointOfInterest) => PointOfInterest.Type == ELCPUtilities.QuestLocation);
            if (list2 == null || list2.Count <= 0)
            {
                goto IL_185;
            }
            using (List <WorldPosition> .Enumerator enumerator = list.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    WorldPosition position = enumerator.Current;
                    if (list2.Any((PointOfInterest poi) => service3.GetDistance(poi.WorldPosition, position) == 1))
                    {
                        result = position;
                        break;
                    }
                }
                goto IL_185;
            }
        }
        if (randomFallback)
        {
            Diagnostics.LogError("Could not find suitable position in starting region!... Picking a random one...");
            result = targetRegion.WorldPositions[KaijuCouncil.random.Next(0, targetRegion.WorldPositions.Length)];
        }
IL_185:
        if (!result.IsValid)
        {
            Diagnostics.LogError("Could not find a valid kaiju position!");
        }
        return(result);
    }
Example #17
0
    protected override IEnumerator OnLoadGame(Amplitude.Unity.Game.Game game)
    {
        yield return(base.OnLoadGame(game));

        KaijuCouncil.StaticInitialize();
        KaijuCouncil.PreComputeAttractiveness();
        if (this.Kaiju != null)
        {
            yield return(this.Kaiju.OnLoadGame(game));

            this.gameEntityRepositoryService.Register(this.Kaiju);
            base.Empire.AddChild(this.Kaiju);
            base.Empire.Refresh(false);
        }
        this.ComputeTameCosts(game as global::Game);
        KaijuCouncil.UpdateTameCosts();
        this.ELCPTameCostCooldown = this.ELCPCalculateTameCostCooldown();
        yield break;
    }
    private void GetClosestReachableNeutralRegion(Kaiju kaiju, int MaxDistance)
    {
        if (this.TriedToFindNeutralRegion)
        {
            return;
        }
        this.TriedToFindNeutralRegion = true;
        if (this.ClosestNeutralRegion != null && !this.ClosestNeutralRegion.IsRegionColonized())
        {
            return;
        }
        this.ClosestNeutralRegion = null;
        List <Region> list   = new List <Region>();
        Region        region = this.worldPositioningService.GetRegion(kaiju.KaijuArmy.WorldPosition);

        if (region != null && KaijuCouncil.IsRegionValidForSettleKaiju(region))
        {
            this.ClosestNeutralRegion = region;
            return;
        }
        for (int i = 0; i < this.worldPositioningService.World.Regions.Length; i++)
        {
            Region region2 = this.worldPositioningService.World.Regions[i];
            if (KaijuCouncil.IsRegionValidForSettleKaiju(region2) && this.worldPositioningService.GetDistance(region2.Barycenter, kaiju.KaijuArmy.WorldPosition) < MaxDistance)
            {
                list.Add(region2);
            }
        }
        if (list.Count == 0)
        {
            return;
        }
        list.Sort((Region left, Region right) => this.worldPositioningService.GetDistance(left.Barycenter, kaiju.KaijuArmy.WorldPosition).CompareTo(this.worldPositioningService.GetDistance(right.Barycenter, kaiju.KaijuArmy.WorldPosition)));
        foreach (Region region3 in list)
        {
            if (this.pathfindingService.FindPath(kaiju.KaijuArmy, kaiju.KaijuArmy.WorldPosition, region3.Barycenter, PathfindingManager.RequestMode.Default, null, PathfindingFlags.IgnoreArmies | PathfindingFlags.IgnoreFogOfWar | PathfindingFlags.IgnoreSieges | PathfindingFlags.IgnoreKaijuGarrisons, null) != null)
            {
                this.ClosestNeutralRegion = region3;
                break;
            }
        }
    }
    private bool IsRelocationMessageValid(KaijuRelocationMessage message)
    {
        Kaiju kaiju = null;

        if (!this.gameEntityRepositoryService.TryGetValue <Kaiju>(message.KaijuGUID, out kaiju) || !this.MajorEmpire.TamedKaijus.Contains(kaiju))
        {
            return(false);
        }
        if (kaiju.OnArmyMode())
        {
            return(false);
        }
        WorldPosition targetPosition = message.TargetPosition;

        if (!targetPosition.IsValid || !KaijuCouncil.IsPositionValidForSettleKaiju(targetPosition, null))
        {
            return(false);
        }
        Region region = this.worldPositionningService.GetRegion(message.TargetPosition);

        if (region == null || !KaijuCouncil.IsRegionValidForSettleKaiju(region))
        {
            return(false);
        }
        for (int i = 0; i < this.validatedRelocationMessages.Count; i++)
        {
            KaijuRelocationMessage kaijuRelocationMessage = this.validatedRelocationMessages[i];
            GameEntityGUID         kaijuGUID  = message.KaijuGUID;
            GameEntityGUID         kaijuGUID2 = kaijuRelocationMessage.KaijuGUID;
            if (kaijuGUID == kaijuGUID2)
            {
                return(false);
            }
            int regionIndex  = (int)this.worldPositionningService.GetRegionIndex(message.TargetPosition);
            int regionIndex2 = (int)this.worldPositionningService.GetRegionIndex(kaijuRelocationMessage.TargetPosition);
            if (regionIndex == regionIndex2)
            {
                return(false);
            }
        }
        return(true);
    }
Example #20
0
    public void FillTargets(Army army, List <IGameEntity> targets, ref List <StaticString> failureFlags)
    {
        if (targets == null)
        {
            targets = new List <IGameEntity>();
        }
        IGameService service = Services.GetService <IGameService>();

        if (service == null)
        {
            return;
        }
        IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>();

        Diagnostics.Assert(service2 != null);
        IPathfindingService service3 = service.Game.Services.GetService <IPathfindingService>();

        Diagnostics.Assert(service2 != null);
        base.ListNearbyVillages(army);
        if (base.PointsOfInterest.Count != 0)
        {
            for (int i = base.PointsOfInterest.Count - 1; i >= 0; i--)
            {
                PointOfInterest pointOfInterest = base.PointsOfInterest[i];
                if (pointOfInterest.PointOfInterestImprovement != null && (pointOfInterest.Empire == null || pointOfInterest.Empire.Index != army.Empire.Index))
                {
                    Region region = service2.GetRegion(pointOfInterest.WorldPosition);
                    if (region != null && region.MinorEmpire != null)
                    {
                        Village village = region.MinorEmpire.GetAgency <BarbarianCouncil>().Villages.FirstOrDefault((Village iterator) => iterator.WorldPosition == pointOfInterest.WorldPosition);
                        if (village != null)
                        {
                            targets.Add(village);
                        }
                    }
                }
            }
        }
        List <WorldPosition> list = new List <WorldPosition>();

        for (int j = 0; j < 6; j++)
        {
            WorldPosition neighbourTile = service2.GetNeighbourTile(army.WorldPosition, (WorldOrientation)j, 1);
            if (neighbourTile.IsValid && service3.IsTransitionPassable(army.WorldPosition, neighbourTile, army, PathfindingFlags.IgnoreArmies | PathfindingFlags.IgnoreOtherEmpireDistrict | PathfindingFlags.IgnoreDiplomacy | PathfindingFlags.IgnoreFogOfWar | PathfindingFlags.IgnoreZoneOfControl | PathfindingFlags.IgnorePOI | PathfindingFlags.IgnoreSieges | PathfindingFlags.IgnoreKaijuGarrisons, null))
            {
                list.Add(neighbourTile);
            }
        }
        List <int> list2 = new List <int>();

        for (int k = 0; k < list.Count; k++)
        {
            Region region2 = service2.GetRegion(list[k]);
            if (region2 != null && !list2.Contains(region2.Index))
            {
                list2.Add(region2.Index);
                KaijuEmpire kaijuEmpire = region2.KaijuEmpire;
                if (kaijuEmpire != null)
                {
                    KaijuCouncil agency = kaijuEmpire.GetAgency <KaijuCouncil>();
                    if (agency != null)
                    {
                        Kaiju kaiju = agency.Kaiju;
                        if (kaiju != null && kaiju.OnGarrisonMode())
                        {
                            KaijuGarrison kaijuGarrison = kaiju.KaijuGarrison;
                            if (kaijuGarrison != null && list.Contains(kaijuGarrison.WorldPosition))
                            {
                                targets.Add(kaijuGarrison);
                            }
                        }
                    }
                }
                if (region2.City != null && region2.City.Empire != null && region2.City.Empire.Index != army.Empire.Index)
                {
                    for (int l = 0; l < region2.City.Districts.Count; l++)
                    {
                        District district = region2.City.Districts[l];
                        if (list.Contains(district.WorldPosition) && district.Type != DistrictType.Exploitation)
                        {
                            targets.Add(district);
                        }
                    }
                    if (region2.City.Camp != null && list.Contains(region2.City.Camp.WorldPosition))
                    {
                        targets.Add(region2.City.Camp);
                    }
                }
            }
        }
        global::Game game = service.Game as global::Game;

        if (game == null)
        {
            return;
        }
        for (int m = 0; m < game.Empires.Length; m++)
        {
            if (m != army.Empire.Index)
            {
                DepartmentOfDefense agency2 = game.Empires[m].GetAgency <DepartmentOfDefense>();
                if (agency2 != null)
                {
                    for (int n = 0; n < agency2.Armies.Count; n++)
                    {
                        Army army2 = agency2.Armies[n];
                        if (list.Contains(army2.WorldPosition))
                        {
                            if (army2 is KaijuArmy)
                            {
                                KaijuArmy kaijuArmy = army2 as KaijuArmy;
                                if (kaijuArmy != null && !kaijuArmy.Kaiju.OnArmyMode())
                                {
                                    goto IL_389;
                                }
                            }
                            targets.Add(army2);
                        }
                        IL_389 :;
                    }
                }
                DepartmentOfTheInterior agency3 = game.Empires[m].GetAgency <DepartmentOfTheInterior>();
                if (agency3 != null)
                {
                    for (int num = 0; num < agency3.TamedKaijuGarrisons.Count; num++)
                    {
                        KaijuGarrison kaijuGarrison2 = agency3.TamedKaijuGarrisons[num];
                        if (kaijuGarrison2 != null)
                        {
                            Kaiju kaiju2 = kaijuGarrison2.Kaiju;
                            if (kaiju2 != null && kaiju2.OnGarrisonMode() && list.Contains(kaijuGarrison2.WorldPosition))
                            {
                                targets.Add(kaijuGarrison2);
                            }
                        }
                    }
                }
            }
        }
    }
Example #21
0
 public void RefreshCanExecute()
 {
     if (this.ArmyAction != null && !this.Army.IsEmpty)
     {
         this.failure.Clear();
         bool flag;
         if (this.ArmyAction is IArmyActionWithTargetSelection && this.ArmyAction is IArmyActionWithUnitSelection)
         {
             this.armyActionTargets.Clear();
             (this.ArmyAction as IArmyActionWithTargetSelection).FillTargets(this.Army, this.armyActionTargets, ref this.failure);
             flag = this.ArmyAction.CanExecute(this.Army, ref this.failure, new object[]
             {
                 this.unitListPanel.SelectUnits,
                 this.armyActionTargets
             });
         }
         else if (this.ArmyAction is IArmyActionWithTargetSelection)
         {
             this.armyActionTargets.Clear();
             (this.ArmyAction as IArmyActionWithTargetSelection).FillTargets(this.Army, this.armyActionTargets, ref this.failure);
             flag = this.ArmyAction.CanExecute(this.Army, ref this.failure, new object[]
             {
                 this.armyActionTargets
             });
         }
         else if (this.ArmyAction is IArmyActionWithUnitSelection)
         {
             flag = this.ArmyAction.CanExecute(this.Army, ref this.failure, new object[]
             {
                 this.unitListPanel.SelectUnits
             });
         }
         else
         {
             flag = this.ArmyAction.CanExecute(this.Army, ref this.failure, new object[0]);
         }
         flag &= (!this.failure.Contains(ArmyAction.NoCanDoWhileMoving) && !this.failure.Contains(ArmyAction.NoCanDoWhileTutorial));
         if (!this.failure.Contains(ArmyAction.NoCanDoWhileHidden))
         {
             this.AgeTransform.AgeTooltip.Content = string.Empty;
             GuiElement guiElement;
             if (Services.GetService <Amplitude.Unity.Gui.IGuiService>().GuiPanelHelper.TryGetGuiElement(this.ArmyAction.Name, out guiElement))
             {
                 if (this.failure.Count == 0)
                 {
                     this.AgeTransform.AgeTooltip.Content = "#50FF50#" + AgeLocalizer.Instance.LocalizeString(guiElement.Title).ToUpper() + "#REVERT#";
                 }
                 else
                 {
                     this.AgeTransform.AgeTooltip.Content = "#FF5050#" + AgeLocalizer.Instance.LocalizeString(guiElement.Title).ToUpper() + "#REVERT#";
                 }
             }
             if (this.ArmyAction is IArmyActionWithToggle)
             {
                 bool flag2 = this.failure.Contains(ArmyAction.NoCanDoWhileToggledOn);
                 if (flag2)
                 {
                     this.failure.RemoveAll((StaticString failureFlag) => failureFlag.Equals(ArmyAction.NoCanDoWhileToggledOn));
                 }
                 IArmyActionWithToggle armyActionWithToggle = this.ArmyAction as IArmyActionWithToggle;
                 this.ActionToggle.AgeTransform.Enable = flag;
                 this.ActionImage.AgeTransform.Alpha   = ((this.ActionToggle.AgeTransform.Enable && !flag2) ? 1f : 0.5f);
                 this.ActionToggle.State = ((flag || flag2) && armyActionWithToggle.IsToggled(this.Army));
                 if (this.ActionToggle.State && !this.ModifierSector.IsStarted())
                 {
                     this.ModifierSector.StartAnimation();
                 }
                 else if (!this.ActionToggle.State && this.ModifierSector.IsStarted())
                 {
                     this.ModifierSector.Reset();
                 }
                 if (this.failure.Count == 0)
                 {
                     if (this.ActionToggle.State)
                     {
                         StaticString toggledOnDescriptionOverride = armyActionWithToggle.ToggledOnDescriptionOverride;
                         if (!StaticString.IsNullOrEmpty(toggledOnDescriptionOverride))
                         {
                             AgeTooltip ageTooltip = this.AgeTransform.AgeTooltip;
                             ageTooltip.Content = ageTooltip.Content + " : " + AgeLocalizer.Instance.LocalizeString("%" + toggledOnDescriptionOverride);
                         }
                         else
                         {
                             AgeTooltip ageTooltip2 = this.AgeTransform.AgeTooltip;
                             ageTooltip2.Content = ageTooltip2.Content + " : " + AgeLocalizer.Instance.LocalizeString(this.ArmyAction.FormatDescription("%" + this.ArmyAction.Name + "OffDescription"));
                         }
                     }
                     else
                     {
                         StaticString toggledOffDescriptionOverride = armyActionWithToggle.ToggledOffDescriptionOverride;
                         if (!StaticString.IsNullOrEmpty(toggledOffDescriptionOverride))
                         {
                             AgeTooltip ageTooltip3 = this.AgeTransform.AgeTooltip;
                             ageTooltip3.Content = ageTooltip3.Content + " : " + AgeLocalizer.Instance.LocalizeString("%" + toggledOffDescriptionOverride);
                         }
                         else
                         {
                             AgeTooltip ageTooltip4 = this.AgeTransform.AgeTooltip;
                             ageTooltip4.Content = ageTooltip4.Content + " : " + AgeLocalizer.Instance.LocalizeString(this.ArmyAction.FormatDescription("%" + this.ArmyAction.Name + "OnDescription"));
                         }
                     }
                 }
             }
             else
             {
                 this.ActionButton.AgeTransform.Enable = flag;
                 this.ActionImage.AgeTransform.Alpha   = ((!this.ActionButton.AgeTransform.Enable) ? 0.5f : 1f);
                 if (this.failure.Count == 0)
                 {
                     AgeTooltip ageTooltip5 = this.AgeTransform.AgeTooltip;
                     ageTooltip5.Content = ageTooltip5.Content + " : " + AgeLocalizer.Instance.LocalizeString(this.ArmyAction.FormatDescription("%" + this.ArmyAction.Name + "Description"));
                     if (this.ArmyAction is ArmyActionWithCooldown)
                     {
                         float num = (this.ArmyAction as ArmyActionWithCooldown).ComputeCooldownDuration(this.Army);
                         this.AgeTransform.AgeTooltip.Content = this.AgeTransform.AgeTooltip.Content.Replace("$CooldownDuration", num.ToString());
                     }
                 }
             }
             if (this.failure.Count > 0)
             {
                 AgeTooltip ageTooltip6 = this.AgeTransform.AgeTooltip;
                 ageTooltip6.Content = ageTooltip6.Content + " : " + AgeLocalizer.Instance.LocalizeString(this.ArmyAction.FormatDescription("%" + this.failure[0] + "Description"));
                 if (this.ArmyAction is ArmyActionWithCooldown)
                 {
                     float num2 = (this.ArmyAction as ArmyActionWithCooldown).ComputeRemainingCooldownDuration(this.Army);
                     this.AgeTransform.AgeTooltip.Content = this.AgeTransform.AgeTooltip.Content.Replace("$RemainingCooldownDuration", num2.ToString());
                 }
             }
         }
         float costInActionPoints = this.ArmyAction.GetCostInActionPoints();
         if (costInActionPoints > 0f)
         {
             AgeTooltip ageTooltip7 = this.AgeTransform.AgeTooltip;
             ageTooltip7.Content = ageTooltip7.Content + "\n \n" + AgeLocalizer.Instance.LocalizeString("%ArmyActionPointRequirementFormat").Replace("$Value", costInActionPoints.ToString());
         }
         for (int i = 0; i < this.ArmyAction.Costs.Length; i++)
         {
             string text  = this.ArmyAction.Costs[i].ResourceName;
             bool   flag3 = false;
             if (ELCPUtilities.UseELCPSymbiosisBuffs && this.ArmyAction is ArmyAction_TameUnstunnedKaiju)
             {
                 foreach (IGameEntity gameEntity in this.armyActionTargets)
                 {
                     Kaiju kaiju = gameEntity as Kaiju;
                     if (kaiju != null)
                     {
                         KaijuCouncil agency = kaiju.KaijuEmpire.GetAgency <KaijuCouncil>();
                         if (agency != null)
                         {
                             text  = agency.ELCPResourceName;
                             flag3 = true;
                             break;
                         }
                     }
                 }
             }
             if (!string.IsNullOrEmpty(text) && !text.Equals(DepartmentOfTheTreasury.Resources.ActionPoint))
             {
                 float num3 = this.ArmyAction.GetCostForResource(text, this.Army.Empire);
                 if (flag3)
                 {
                     num3 = KaijuCouncil.GetKaijuTameCost().GetValue(this.Army.Empire);
                 }
                 if (num3 != 0f)
                 {
                     DepartmentOfTheTreasury agency2 = this.Army.Empire.GetAgency <DepartmentOfTheTreasury>();
                     float f = 0f;
                     if (agency2.TryGetResourceStockValue(this.Army.Empire.SimulationObject, text, out f, false))
                     {
                         GuiElement guiElement2;
                         if (Services.GetService <global::IGuiService>().GuiPanelHelper.TryGetGuiElement(text, out guiElement2) && guiElement2 is ExtendedGuiElement)
                         {
                             ExtendedGuiElement extendedGuiElement = guiElement2 as ExtendedGuiElement;
                             if (extendedGuiElement == null)
                             {
                                 Diagnostics.LogError("Resource extended gui is 'null'.");
                             }
                             string text2        = AgeLocalizer.Instance.LocalizeString(extendedGuiElement.Title);
                             string symbolString = extendedGuiElement.SymbolString;
                             string arg          = string.Format(AgeLocalizer.Instance.LocalizeString("%ArmyActionResourceRequirementFormat"), new object[]
                             {
                                 num3,
                                 text2,
                                 symbolString,
                                 Mathf.Ceil(f)
                             });
                             this.AgeTransform.AgeTooltip.Content = string.Format("{0}\n\n\n{1}", this.AgeTransform.AgeTooltip.Content, arg);
                         }
                         else
                         {
                             Diagnostics.LogError("Could not retrieve the resource gui element.");
                         }
                     }
                 }
             }
         }
     }
 }
    public Region GetMostProfitableRegionForKaiju(Kaiju kaiju, List <Region> excludedRegions = null)
    {
        List <Region> list = new List <Region>();

        for (int i = 0; i < this.worldPositionningService.World.Regions.Length; i++)
        {
            Region region2 = this.worldPositionningService.World.Regions[i];
            if ((excludedRegions == null || !excludedRegions.Contains(region2)) && (region2 == kaiju.Region || KaijuCouncil.IsRegionValidForSettleKaiju(region2)))
            {
                list.Add(region2);
            }
        }
        if (list.Count == 0)
        {
            return(null);
        }
        if (this.departmentOfTheInterior.Cities != null && this.departmentOfTheInterior.NonInfectedCities.Count == 1)
        {
            List <Region> list2 = this.worldPositionningService.GetNeighbourRegions(this.departmentOfTheInterior.NonInfectedCities[0].Region, false, false).ToList <Region>();
            for (int j = 0; j < list2.Count; j++)
            {
                if ((excludedRegions != null && excludedRegions.Contains(list2[j])) || (list2[j] != kaiju.Region && !KaijuCouncil.IsRegionValidForSettleKaiju(list2[j])))
                {
                    list2.RemoveAt(j);
                    j--;
                }
            }
            if (list2.Count > 0)
            {
                list = list2;
            }
        }
        if (this.departmentOfTheInterior.Cities != null && this.departmentOfTheInterior.Cities.Count > 0)
        {
            return((from region in list
                    orderby this.worldPositionningService.GetNeighbourRegionsWithCityOfEmpire(region, kaiju.MajorEmpire, false).Length descending, GuiSimulation.Instance.FilterRegionResources(region).Count descending, this.worldPositionningService.GetDistance(region.Barycenter, this.departmentOfTheInterior.Cities[0].WorldPosition)
                    select region).First <Region>());
        }
        return((from region in list
                orderby GuiSimulation.Instance.FilterRegionResources(region).Count descending
                select region).First <Region>());
    }
Example #23
0
    private void Client_TurnBegin_RecalculateELCPTameResource()
    {
        if (this.ELCPTameCostCooldown < 1)
        {
            return;
        }
        int num  = (this.gameService.Game as global::Game).Turn + 1;
        int num2 = num % this.ELCPTameCostCooldown;

        if (num2 != 0 && this.eLCPResourceName != StaticString.Empty)
        {
            return;
        }
        num -= num2;
        System.Random random        = new System.Random(World.Seed + base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index + num * num);
        int           maxEraNumber  = DepartmentOfScience.GetMaxEraNumber();
        KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost();
        Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(this.gameService.Game as global::Game);
        List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>();
        List <string> list2 = new List <string>();

        for (int i = 0; i < kaijuTameCost.CostDefinitions.Length; i++)
        {
            KaijuTameCost.CostDefinition costDefinition = kaijuTameCost.CostDefinitions[i];
            if (!list2.Contains(costDefinition.LuxuryTier))
            {
                string[] array = costDefinition.EraNumber.Split(new char[]
                {
                    ','
                });
                bool flag = false;
                for (int j = 0; j < array.Length; j++)
                {
                    int num3 = 0;
                    if (int.TryParse(array[j], out num3) && num3 <= maxEraNumber)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    list.AddRange(dictionary[costDefinition.LuxuryTier]);
                    list2.Add(costDefinition.LuxuryTier);
                }
            }
        }
        PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)];
        string empty = string.Empty;

        if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty))
        {
            Diagnostics.Log("ELCP {0} Client_TurnBegin_RecalculateELCPTameResource rolled Resource {1} instead of {2}", new object[]
            {
                base.Empire.Index.ToString() + "/" + this.KaijuEmpire.KaijuFaction.LocalizedName,
                empty,
                kaijuTameCost.ResourceName
            });
            this.eLCPResourceName = new StaticString(empty);
        }
    }
    public Region GetBestSupportRegionForKaiju(Kaiju kaiju, Army ArmyToSupport, List <Region> excludedRegions = null)
    {
        List <Region> list     = new List <Region>();
        int           distance = this.worldPositionningService.GetDistance(kaiju.WorldPosition, ArmyToSupport.WorldPosition);

        for (int i = 0; i < this.worldPositionningService.World.Regions.Length; i++)
        {
            Region region = this.worldPositionningService.World.Regions[i];
            if ((excludedRegions == null || !excludedRegions.Contains(region)) && (region == kaiju.Region || (KaijuCouncil.IsRegionValidForSettleKaiju(region) && this.worldPositionningService.GetDistance(region.Barycenter, ArmyToSupport.WorldPosition) < distance)))
            {
                list.Add(region);
            }
        }
        if (list.Count == 0)
        {
            return(null);
        }
        list.Sort((Region left, Region right) => this.worldPositionningService.GetDistance(left.Barycenter, ArmyToSupport.WorldPosition).CompareTo(this.worldPositionningService.GetDistance(right.Barycenter, ArmyToSupport.WorldPosition)));
        return(list[0]);
    }
 protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
 {
     if (this.ticket != null)
     {
         if (!this.orderExecuted)
         {
             return(State.Running);
         }
         if (this.ticket.PostOrderResponse == PostOrderResponse.PreprocessHasFailed)
         {
             this.orderExecuted       = false;
             this.ticket              = null;
             aiBehaviorTree.ErrorCode = 1;
             return(State.Failure);
         }
         this.orderExecuted = false;
         this.ticket        = null;
         return(State.Success);
     }
     else
     {
         Army army;
         if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
         {
             return(State.Failure);
         }
         if (!(army is KaijuArmy))
         {
             return(State.Failure);
         }
         Kaiju kaiju = (army as KaijuArmy).Kaiju;
         if (kaiju == null || !(army.Empire is MajorEmpire) || kaiju.OnGarrisonMode() || !KaijuCouncil.IsPositionValidForSettleKaiju(army.WorldPosition, kaiju))
         {
             return(State.Failure);
         }
         this.failuresFlags.Clear();
         if (!this.armyAction_SettleKaiju.CanExecute(army, ref this.failuresFlags, new object[0]))
         {
             return(State.Failure);
         }
         this.orderExecuted = false;
         this.armyAction_SettleKaiju.Execute(army, aiBehaviorTree.AICommander.Empire.PlayerControllers.AI, out this.ticket, new EventHandler <TicketRaisedEventArgs>(this.Order_TicketRaised), new object[0]);
         return(State.Running);
     }
 }
Example #26
0
    public void RefreshContent()
    {
        if (this.KaijuGarrison == null)
        {
            return;
        }
        if (this.KaijuGarrison.Owner != null)
        {
            if (this.KaijuGarrison.Kaiju.OnArmyMode())
            {
                this.AgeTransform.Visible = false;
                return;
            }
            this.AgeTransform.Visible             = true;
            this.FactionIcon.AgeTransform.Visible = true;
            this.StatusImage.AgeTransform.Visible = false;
            this.StatusTurns.AgeTransform.Visible = false;
            this.TameCost.AgeTransform.Visible    = false;
            GuiEmpire guiEmpire = new GuiEmpire(this.KaijuGarrison.Owner);
            this.FactionIcon.Image              = guiEmpire.GuiFaction.GetImageTexture(global::GuiPanel.IconSize.LogoSmall, false);
            this.FactionIcon.TintColor          = guiEmpire.Color;
            this.Frame.TintColor                = guiEmpire.Color;
            this.PinLine.TintColor              = guiEmpire.Color;
            this.KaijuIcon.TintColor            = guiEmpire.Color;
            this.StatusPanel.AgeTooltip.Content = string.Empty;
        }
        else
        {
            this.AgeTransform.Visible             = true;
            this.FactionIcon.AgeTransform.Visible = false;
            this.StatusImage.AgeTransform.Visible = true;
            this.StatusTurns.AgeTransform.Visible = true;
            this.Frame.TintColor     = this.KaijuGarrison.Empire.Color;
            this.PinLine.TintColor   = this.KaijuGarrison.Empire.Color;
            this.KaijuIcon.TintColor = this.KaijuGarrison.Empire.Color;
            KaijuCouncil agency = this.KaijuGarrison.KaijuEmpire.GetAgency <KaijuCouncil>();
            if (this.KaijuGarrison.Kaiju.IsWild())
            {
                this.StatusTurns.Text  = agency.RelocationETA.ToString();
                this.StatusImage.Image = AgeManager.Instance.FindDynamicTexture("Gui/DynamicBitmaps/Icons/kaijuMoveIcon", false);
                this.StatusPanel.AgeTooltip.Content = "%KaijuTurnsToMoveDescription";
            }
            else if (this.KaijuGarrison.Kaiju.IsStunned())
            {
                this.StatusTurns.Text  = this.KaijuGarrison.Kaiju.GetRemainingTurnBeforeStunFinish().ToString();
                this.StatusImage.Image = AgeManager.Instance.FindDynamicTexture("Gui/DynamicBitmaps/Icons/kaijuStunnedIcon", false);
                this.StatusPanel.AgeTooltip.Content = "%KaijuStunnedDescription";
            }
            KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost();
            this.TameCost.AgeTransform.Visible = true;
            this.TameCost.Text = GuiFormater.FormatGui(kaijuTameCost.GetValue(this.empire), false, true, false, 0) + this.GuiService.FormatSymbol((ELCPUtilities.UseELCPSymbiosisBuffs ? agency.ELCPResourceName.ToString() : kaijuTameCost.ResourceName.ToString()) + "Dark");
        }
        if (this.statusPanelTooltip != null)
        {
            this.statusPanelTooltip.Content = "%KaijuSpawnedProperties";
        }
        if (this.panelTooltip != null)
        {
            GuiElement kaijuFactionGuiElement = this.KaijuFactionGuiElement;
            if (kaijuFactionGuiElement != null)
            {
                this.panelTooltip.Content = kaijuFactionGuiElement.Description;
            }
        }
        this.UnitNumber.Text = this.KaijuGarrison.UnitsCount.ToString();
        string text = (this.KaijuGuiUnit == null) ? this.KaijuGarrison.Kaiju.Name.ToString() : GuiUnitDesign.GetTruncatedTitle(this.KaijuGuiUnit.UnitDesign, this.KaijuName);

        this.KaijuName.Text = text;
    }
Example #27
0
    private void RefreshCosts()
    {
        IConstructionCost[] array              = this.ArmyAction.Costs;
        ArmyAction_Bribe    armyAction_Bribe   = this.ArmyAction as ArmyAction_Bribe;
        ArmyAction_Convert  armyAction_Convert = this.ArmyAction as ArmyAction_Convert;

        if (armyAction_Bribe != null || armyAction_Convert != null)
        {
            Village village = this.Target as Village;
            if (village != null)
            {
                IConstructionCost[] array2 = null;
                if (armyAction_Bribe != null)
                {
                    IConstructionCost[] array3 = armyAction_Bribe.GetBribeCosts(this.Army, village);
                    array2 = array3;
                }
                else if (armyAction_Convert != null)
                {
                    IConstructionCost[] array3 = armyAction_Convert.GetConvertionCost(this.Army, village);
                    array2 = array3;
                }
                if (array2 != null && array2.Length != 0)
                {
                    if (array == null)
                    {
                        array = array2;
                    }
                    else
                    {
                        Array.Resize <IConstructionCost>(ref array, array.Length + array2.Length);
                        Array.Copy(array2, 0, array, array.Length - array2.Length, array2.Length);
                    }
                }
            }
        }
        if (this.Army != null && this.Army.Empire != null && array != null && array.Length != 0)
        {
            this.ActionCostLabel.AgeTransform.Visible = true;
            if (ELCPUtilities.UseELCPSymbiosisBuffs && this.ArmyAction is ArmyAction_TameUnstunnedKaiju)
            {
                KaijuGarrison kaijuGarrison = this.Target as KaijuGarrison;
                if (kaijuGarrison != null)
                {
                    KaijuCouncil agency = kaijuGarrison.KaijuEmpire.GetAgency <KaijuCouncil>();
                    if (agency != null)
                    {
                        ConstructionCost constructionCost = new ConstructionCost(agency.ELCPResourceName, KaijuCouncil.GetKaijuTameCost().GetValue(this.Army.Empire), true, true);
                        array = new IConstructionCost[]
                        {
                            constructionCost
                        };
                    }
                }
            }
            this.ActionCostLabel.Text = GuiFormater.FormatCost(this.Army.Empire, array, false, 1, this.Army);
            this.ActionDescription.AgeTransform.PixelMarginBottom = this.ActionCostLabel.AgeTransform.PixelMarginBottom + this.ActionCostLabel.AgeTransform.Height;
            return;
        }
        this.ActionCostLabel.AgeTransform.Visible = false;
        this.ActionCostLabel.Text = string.Empty;
        this.ActionDescription.AgeTransform.PixelMarginBottom = this.ActionCostLabel.AgeTransform.PixelMarginBottom;
    }