Ejemplo n.º 1
0
 public void MajorEmpireUntameKaiju(Kaiju kaiju, int instigatorEmpireIndex, bool clearMilitias = false)
 {
     if (kaiju.MajorEmpire == null || !(kaiju.MajorEmpire is MajorEmpire))
     {
         Diagnostics.LogError("Kaiju has an invalid owner.");
     }
     if (this.KaijuEmpire.Index != kaiju.KaijuEmpire.Index)
     {
         Diagnostics.LogError("KaijuCouncil KaijuEmpire must be the same as Kaiju KaijuEmpire!");
     }
     if (clearMilitias)
     {
         kaiju.ClearMilitias();
     }
     kaiju.RemoveOwner(instigatorEmpireIndex);
     this.departmentOfDefense.AddArmy(kaiju.KaijuArmy);
     kaiju.ChangeToWildState();
     this.KaijuEmpire.AddChild(kaiju.KaijuGarrison);
     if (kaiju.KaijuArmy != null)
     {
         this.KaijuEmpire.AddChild(kaiju.KaijuArmy);
     }
     this.KaijuEmpire.AddKaiju(kaiju);
     this.KaijuEmpire.Refresh(false);
     this.Kaiju = kaiju;
 }
Ejemplo n.º 2
0
    public void SpawnKaiju(WorldPosition targetPosition, GameEntityGUID kaijuGUID, GameEntityGUID garrisonGUID, GameEntityGUID armyGUID, GameEntityGUID monsterGUID, GameEntityGUID[] licesGUIDs)
    {
        Kaiju kaiju = new Kaiju(base.Empire as KaijuEmpire, kaijuGUID);

        string[] kaijuDescriptors = this.KaijuEmpire.KaijuFaction.KaijuDescriptors;
        for (int i = 0; i < kaijuDescriptors.Length; i++)
        {
            SimulationDescriptor descriptor = null;
            if (this.descriptorsDatabase.TryGetValue(kaijuDescriptors[i], out descriptor))
            {
                kaiju.AddDescriptor(descriptor, false);
            }
        }
        KaijuGarrison        kaijuGarrison = new KaijuGarrison(garrisonGUID, targetPosition);
        SimulationDescriptor value         = this.descriptorsDatabase.GetValue(Kaiju.ClassKaijuGarrison);

        kaijuGarrison.AddDescriptor(value, false);
        kaijuGarrison.SetPropertyBaseValue(SimulationProperties.MaximumUnitSlotCount, (float)(licesGUIDs.Length + 1));
        kaiju.SetGarrison(kaijuGarrison);
        KaijuArmy            kaijuArmy = this.departmentOfDefense.CreateKaijuArmy(armyGUID, targetPosition, true);
        SimulationDescriptor value2    = this.descriptorsDatabase.GetValue(Kaiju.ClassKaijuArmy);

        kaijuArmy.AddDescriptor(value2, false);
        kaijuArmy.SetPropertyBaseValue(SimulationProperties.MaximumUnitSlotCount, (float)(licesGUIDs.Length + 1));
        kaiju.SetArmy(kaijuArmy);
        this.gameEntityRepositoryService.Register(kaijuArmy);
        this.gameEntityRepositoryService.Register(kaiju);
        kaiju.ChangeToWildState();
        kaiju.ChangeToGarrisonMode(false);
        Unit unit = DepartmentOfDefense.CreateUnitByDesign(monsterGUID, this.KaijuEmpire.FindMonsterDesign(true));

        kaiju.AddUnit(unit);
        for (int j = 0; j < licesGUIDs.Length; j++)
        {
            Unit unit2 = DepartmentOfDefense.CreateUnitByDesign(licesGUIDs[j], this.KaijuEmpire.FindLiceDesign(true));
            kaiju.AddUnit(unit2);
        }
        this.lastLiceArmySpawnTurn = (this.gameService.Game as global::Game).Turn;
        this.Kaiju = kaiju;
        this.KaijuEmpire.AddKaiju(kaiju);
        kaiju.Refresh(false);
        foreach (global::Empire empire in (this.gameService.Game as global::Game).Empires)
        {
            if (empire is MajorEmpire)
            {
                this.eventService.Notify(new EventKaijuSpawned(empire, this.Kaiju));
            }
        }
    }