private void ThinkWaitForLaunch() { List <Ship> shipList = new List <Ship>(); foreach (Ship launchingCrow in this.m_LaunchingCrows) { if (!launchingCrow.DockedWithParent) { shipList.Add(launchingCrow); } } foreach (Ship ship in shipList) { this.m_LaunchingCrows.Remove(ship); } if (this.m_LaunchingCrows.Count != 0) { return; } if (this.m_LoadingCrows.Count + this.m_SpawnedCrows.Count < this.m_AvailableCrows.Count) { this.m_State = MorrigiRelicStates.EMITCROW; } else { this.m_State = MorrigiRelicStates.IDLE; } }
private void SpawnMaxCrows() { int num = Math.Min(Math.Max(this.m_AvailableCrows.Count - (this.m_LoadingCrows.Count + this.m_SpawnedCrows.Count), 0), Math.Max(this.m_MorrigiRelic.BattleRiderMounts.Count <BattleRiderMount>() - this.m_LoadingCrows.Count, 0)); List <ShipInfo> shipInfoList = new List <ShipInfo>(); Matrix rotationYpr = Matrix.CreateRotationYPR(this.m_MorrigiRelic.Maneuvering.Rotation); rotationYpr.Position = this.m_MorrigiRelic.Maneuvering.Position; for (int index = 0; index < num; ++index) { this.m_AvailableCrows[index].RiderIndex = 0; Ship ship = Ship.CreateShip(this.m_Game.Game, rotationYpr, this.m_AvailableCrows[index], this.m_MorrigiRelic.ObjectID, this.m_MorrigiRelic.InputID, this.m_MorrigiRelic.Player.ObjectID, false, (IEnumerable <Player>)null); if (ship != null) { ship.ParentDatabaseID = this.m_AvailableCrows[index].ParentID; ship.Maneuvering.RetreatDestination = this.m_MorrigiRelic.Maneuvering.RetreatDestination; this.m_LoadingCrows.Add(ship); } shipInfoList.Add(this.m_AvailableCrows[index]); } foreach (ShipInfo shipInfo in shipInfoList) { this.m_AvailableCrows.Remove(shipInfo); } if (this.m_LoadingCrows.Count <= 0) { return; } this.m_State = MorrigiRelicStates.INTEGRATECROW; }
private void ThinkIntegrateCrow() { if (this.m_LoadingCrows.Count <= 0) { return; } bool flag = true; foreach (GameObject loadingCrow in this.m_LoadingCrows) { if (loadingCrow.ObjectStatus != GameObjectStatus.Ready) { flag = false; } } if (!flag) { return; } foreach (Ship loadingCrow in this.m_LoadingCrows) { loadingCrow.Player = this.m_MorrigiRelic.Player; loadingCrow.Active = true; this.m_Game.CurrentState.AddGameObject((IGameObject)loadingCrow, false); } this.m_State = MorrigiRelicStates.WAITFORDOCKED; }
private void ThinkIdle() { if (this.m_LoadingCrows.Count + this.m_SpawnedCrows.Count >= this.m_AvailableCrows.Count) { return; } this.m_State = MorrigiRelicStates.EMITCROW; }
private void ThinkLaunch() { if (this.m_LaunchingCrows.Count == 0) { this.m_State = MorrigiRelicStates.IDLE; } else { this.m_MorrigiRelic.PostSetProp("LaunchBattleriders"); this.m_State = MorrigiRelicStates.WAITFORLAUNCH; } }
private void ThinkWaitForDocked() { if (this.m_LoadingCrows.Count > 0) { return; } bool flag = true; foreach (Ship launchingCrow in this.m_LaunchingCrows) { if (!launchingCrow.DockedWithParent) { flag = false; break; } } if (!flag) { return; } this.m_State = MorrigiRelicStates.LAUNCHCROW; }
public override void Initialize() { this.m_LoadingCrows = new List <Ship>(); this.m_LaunchingCrows = new List <Ship>(); this.m_SpawnedCrows = new List <MorrigiCrowControl>(); this.m_State = MorrigiRelicStates.IDLE; this.m_Target = (IGameObject)null; this.m_AvailableCrows = this.m_Game.GameDatabase.GetBattleRidersByParentID(this.m_MorrigiRelic.DatabaseID).ToList <ShipInfo>(); this.m_MorrigiRelic.PostSetProp("SetAsOnlyLaunchCarrier", true); this.m_IsAggressive = false; MorrigiRelicInfo morrigiRelicInfo = this.m_Game.GameDatabase.GetMorrigiRelicInfos().ToList <MorrigiRelicInfo>().FirstOrDefault <MorrigiRelicInfo>((Func <MorrigiRelicInfo, bool>)(x => x.FleetId == this.m_FleetId)); if (morrigiRelicInfo != null) { this.m_IsAggressive = morrigiRelicInfo.IsAggressive; } if (!this.m_IsAggressive) { return; } this.SpawnMaxCrows(); }