Beispiel #1
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));
            }
        }
    }