public void RemoveTamedKaiju(Kaiju kaiju) { if (this.TamedKaijus.Contains(kaiju)) { IDatabase<SimulationDescriptor> database = Databases.GetDatabase<SimulationDescriptor>(false); SimulationDescriptor descriptor = null; if (database.TryGetValue(kaiju.KaijuEmpire.KaijuFaction.EmpireTamedKaijuDescriptor, out descriptor)) { base.SimulationObject.RemoveDescriptor(descriptor); } this.TamedKaijus.Remove(kaiju); base.RemoveChild(kaiju); if (kaiju.KaijuGarrison != null) { base.RemoveChild(kaiju.KaijuGarrison); } if (kaiju.KaijuArmy != null) { base.RemoveChild(kaiju.KaijuArmy); base.GetAgency<DepartmentOfDefense>().RemoveArmy(kaiju.KaijuArmy, false); } kaiju.Refresh(false); this.Refresh(false); if (this.TamedKaijusCollectionChanged != null) { this.TamedKaijusCollectionChanged(this, new CollectionChangeEventArgs(CollectionChangeAction.Remove, kaiju)); } } }
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)); } } }