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; } }
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); } } }