public void PickupSlave(Actor self, Actor a) { AirstrikeSlaveEntry slaveEntry = null; foreach (var se in slaveEntries) { if (se.Actor == a) { slaveEntry = se; break; } } if (slaveEntry == null) { throw new InvalidOperationException("An actor ({0} {1}) that isn't my slave entered me?".F(a.Info.Name, a.ActorID)); } slaveEntry.IsLaunched = false; // setup rearm slaveEntry.RearmTicks = Info.RearmTicks; string spawnContainCondition; if (conditionManager != null && Info.SpawnContainConditions.TryGetValue(a.Info.Name, out spawnContainCondition)) { spawnContainTokens.GetOrAdd(a.Info.Name).Push(conditionManager.GrantCondition(self, spawnContainCondition)); } if (conditionManager != null && !string.IsNullOrEmpty(Info.LoadedCondition)) { loadedTokens.Push(conditionManager.GrantCondition(self, Info.LoadedCondition)); } }
public override BaseSpawnerSlaveEntry[] CreateSlaveEntries(BaseSpawnMasterInfo info) { slaveEntries = new AirstrikeSlaveEntry[info.Actors.Length]; // For this class to use for (int i = 0; i < slaveEntries.Length; i++) { slaveEntries[i] = new AirstrikeSlaveEntry(); } return(slaveEntries); // For the base class to use }