public void Unbind() { this.EmpireIndex = -1; this.Session = null; }
private void Server_TurnBegin_CheckLiceArmySpawn() { global::Game game = this.gameService.Game as global::Game; Diagnostics.Assert(game != null); ISessionService service = Services.GetService <ISessionService>(); Diagnostics.Assert(service != null); global::Session session = service.Session as global::Session; Diagnostics.Assert(session != null); KaijuCouncil.WildLiceArmyPreferences.LoadRegistryValues(session); if (this.LiceArmies.Length >= KaijuCouncil.WildLiceArmyPreferences.MaxArmiesAlive) { return; } int turn = game.Turn; int num = (int)Math.Ceiling((double)((float)KaijuCouncil.WildLiceArmyPreferences.SpawningCooldown * base.Empire.GetPropertyValue(SimulationProperties.GameSpeedMultiplier))); if (turn < this.lastLiceArmySpawnTurn + num) { return; } int num2 = this.Kaiju.OnGarrisonMode() ? KaijuCouncil.WildLiceArmyPreferences.ArmiesToSpawnCount : 0; if (num2 <= 0) { return; } List <WorldPosition> list = new List <WorldPosition>(); for (int i = 0; i < this.Kaiju.Region.WorldPositions.Length; i++) { WorldPosition worldPosition = this.Kaiju.Region.WorldPositions[i]; if (DepartmentOfDefense.CheckWhetherTargetPositionIsValidForUseAsArmySpawnLocation(worldPosition, PathfindingMovementCapacity.Ground) && worldPosition != this.Kaiju.WorldPosition) { list.Add(worldPosition); } } if (list.Count == 0) { return; } System.Random randomizer = new System.Random(World.Seed + turn); list = (from position in list orderby this.worldPositionningService.GetDistance(this.Kaiju.WorldPosition, position), randomizer.NextDouble() select position).ToList <WorldPosition>(); WorldPosition[] worldPositions; if (list.Count > num2) { worldPositions = list.Take(Math.Min(list.Count, num2)).ToArray <WorldPosition>(); } else { worldPositions = list.ToArray(); } List <StaticString> list2 = new List <StaticString>(); StaticString name = this.KaijuEmpire.FindLiceDesign(true).Name; int unitsPerArmy = KaijuCouncil.WildLiceArmyPreferences.UnitsPerArmy; for (int j = 0; j < unitsPerArmy; j++) { list2.Add(name); } List <StaticString> list3 = new List <StaticString>(); list3.Add(KaijuCouncil.WildLiceArmyPreferences.ArmyTag); List <StaticString> list4 = new List <StaticString>(); list4.Add(KaijuCouncil.WildLiceArmyPreferences.UnitTag); List <MajorEmpire> list5 = new List <MajorEmpire>(); int k = 0; while (k < game.Empires.Length) { if (game.Empires[k] is MajorEmpire && !(game.Empires[k] as MajorEmpire).ELCPIsEliminated) { if (game.Empires[k].GetAgency <DepartmentOfTheInterior>().NonInfectedCities.Count > 0) { list5.Add(game.Empires[k] as MajorEmpire); break; } break; } else { k++; } } DepartmentOfTheInterior agency = list5[game.Turn % list5.Count].GetAgency <DepartmentOfTheInterior>(); MinorEmpire minorEmpire = agency.Cities[game.Turn % agency.Cities.Count].Region.MinorEmpire; OrderSpawnArmies order = new OrderSpawnArmies(minorEmpire.Index, worldPositions, list2.ToArray(), KaijuCouncil.WildLiceArmyPreferences.ArmiesToSpawnCount, list3.ToArray(), list4.ToArray(), Math.Max(0, DepartmentOfScience.GetMaxEraNumber()), QuestArmyObjective.QuestBehaviourType.Undefined); Ticket ticket = null; minorEmpire.PlayerControllers.Server.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OrderSpawnLiceArmies_TicketRaised)); }
public void Bind(global::Session session, int empireIndex, MenuNewGameScreen parent) { this.Session = session; this.EmpireIndex = empireIndex; }