Exemple #1
0
        /// <summary>
        /// Tries to attach the given siren to the vehicle, replacing any existing siren.
        /// </summary>
        /// <param name="aVehicle">The vehicle.</param>
        /// <param name="aSiren">The siren.</param>
        /// <param name="anInitialState">The initial siren state.</param>
        /// <param name="aPlayer">The calling player.</param>
        private void AttachSirens(BaseVehicle aVehicle, Siren aSiren, SirenController.States anInitialState, IPlayer aPlayer = null)
        {
            DetachSirens(aVehicle);
            SirenController theController = CreateSirenController(aVehicle, aSiren);

            if (aVehicle as ModularCar)
            {
                if (aSiren.Modules == null)
                {
                    Message(aPlayer, I18N_NOT_SUPPORTED, aSiren.Name, KEY_MODULAR_CAR);
                    DetachSirens(aVehicle);
                    return;
                }
                foreach (BaseVehicleModule eachModule in aVehicle.GetComponentsInChildren <BaseVehicleModule>())
                {
                    SpawnAttachments(aSiren.Modules, aPlayer, theController, eachModule);
                }
            }
            else if (!SpawnAttachments(aSiren.Vehicles, aPlayer, theController, aVehicle))
            {
                Message(aPlayer, I18N_NOT_SUPPORTED, aSiren.Name, aVehicle.PrefabName);
                DetachSirens(aVehicle);
                return;
            }
            theController.SetState(anInitialState);
        }
Exemple #2
0
        /// <summary>
        /// Detaches the siren from a vehicle and removes all corresponding entities.
        /// </summary>
        /// <param name="aVehicle"> The vehicle.</param>
        /// <returns>True, if a siren was removed.</returns>
        private bool DetachSirens(BaseVehicle aVehicle)
        {
            SirenController theController = aVehicle.GetComponent <SirenController>();

            if (theController)
            {
                foreach (BaseEntity eachEntity in aVehicle.GetComponentsInChildren <BaseEntity>())
                {
                    if (theController.NetIDs.Contains(eachEntity.net.ID))
                    {
                        Destroy(eachEntity);
                    }
                }
                UnityEngine.Object.DestroyImmediate(theController);
                return(true);
            }
            return(false);
        }