Пример #1
0
        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));
            }
        }
Пример #2
0
        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
        }