private void RegisterDrone(long antennaEntityId, MyEntity droneMainEntity, bool immediate = true)
        {
            var newInfo = DroneInfo.Allocate(antennaEntityId, MySandboxGame.TotalGamePlayTimeInMilliseconds + DRONE_DESPAWN_TIMER);

            m_droneInfos.Add(droneMainEntity.EntityId, newInfo, immediate: immediate);
            droneMainEntity.OnClosing += DroneMainEntityOnClosing;

            PirateAntennaInfo antennaInfo = null;

            if (!m_pirateAntennas.TryGetValue(antennaEntityId, out antennaInfo))
            {
                MyEntity entity;
                if (MyEntities.TryGetEntityById(antennaEntityId, out entity))
                {
                    var antenna = entity as MyRadioAntenna;
                    if (antenna != null)
                    {
                        antenna.UpdatePirateAntenna();
                        m_pirateAntennas.TryGetValue(antennaEntityId, out antennaInfo);
                    }
                }
            }
            if (antennaInfo != null)
            {
                antennaInfo.SpawnedDrones++;
            }
            Debug.Assert(antennaEntityId == 0 || antennaInfo != null, "Antenna info not present when registering a drone!");

            var remote = droneMainEntity as MyRemoteControl;

            if (remote != null)
            {
                remote.OwnershipChanged += DroneRemoteOwnershipChanged;
            }
        }
Beispiel #2
0
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            var ob = sessionComponent as MyObjectBuilder_PirateAntennas;

            m_piratesIdentityId = ob.PiratesIdentity;

            int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds;

            if (ob.Drones != null)
            {
                foreach (var entry in ob.Drones)
                {
                    m_droneInfos.Add(entry.EntityId, DroneInfo.Allocate(entry.AntennaEntityId, currentTime + entry.DespawnTimer), immediate: true);
                }
            }
        }