//----------------------------------------------
// Realistic Car Controller
//
// Copyright © 2014 - 2023 BoneCracker Games
// https://www.bonecrackergames.com
// Buğra Özdoğanlar
//
//----------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
///
/// Customization applier for vehicles. Needs to be attached to the vehicle.
/// 5 Upgrade managers for paints, wheels, upgrades, spoilers, and sirens.
///
[RequireComponent(typeof(RCC_CarControllerV3))]
[AddComponentMenu("BoneCracker Games/Realistic Car Controller/Customization/RCC Customization Applier")]
public class RCC_CustomizationApplier : MonoBehaviour {
// Car controller.
private RCC_CarControllerV3 _carController;
public RCC_CarControllerV3 CarController {
get {
if (_carController == null)
_carController = GetComponentInChildren();
return _carController;
}
}
#region All upgrade managers
private RCC_VehicleUpgrade_PaintManager _paintManager;
public RCC_VehicleUpgrade_PaintManager PaintManager {
get {
if (_paintManager == null)
_paintManager = GetComponentInChildren();
return _paintManager;
}
}
private RCC_VehicleUpgrade_WheelManager _wheelManager;
public RCC_VehicleUpgrade_WheelManager WheelManager {
get {
if (_wheelManager == null)
_wheelManager = GetComponentInChildren();
return _wheelManager;
}
}
private RCC_VehicleUpgrade_UpgradeManager _upgradeManager;
public RCC_VehicleUpgrade_UpgradeManager UpgradeManager {
get {
if (_upgradeManager == null)
_upgradeManager = GetComponentInChildren();
return _upgradeManager;
}
}
private RCC_VehicleUpgrade_SpoilerManager _spoilerManager;
public RCC_VehicleUpgrade_SpoilerManager SpoilerManager {
get {
if (_spoilerManager == null)
_spoilerManager = GetComponentInChildren();
return _spoilerManager;
}
}
private RCC_VehicleUpgrade_SirenManager _sirenManager;
public RCC_VehicleUpgrade_SirenManager SirenManager {
get {
if (_sirenManager == null)
_sirenManager = GetComponentInChildren();
return _sirenManager;
}
}
#endregion
public string saveFileName = ""; // Save file name of the vehicle.
public bool autoLoadLoadout = true; // Loads the latest loadout.
public RCC_CustomizationLoadout loadout = new RCC_CustomizationLoadout(); // Loadout class.
private void OnEnable() {
// Loads the latest loadout.
if (autoLoadLoadout)
LoadLoadout();
// Initializes paint manager.
if (PaintManager)
PaintManager.Initialize();
// Initializes wheel manager.
if (WheelManager)
WheelManager.Initialize();
// Initializes upgrade manager.
if (UpgradeManager)
UpgradeManager.Initialize();
// Initializes spoiler manager.
if (SpoilerManager)
SpoilerManager.Initialize();
// Initializes siren manager.
if (SirenManager)
SirenManager.Initialize();
}
///
/// Saves the current loadout with Json.
///
public void SaveLoadout() {
PlayerPrefs.SetString(saveFileName, JsonUtility.ToJson(loadout));
}
///
/// Loads the latest saved loadout with Json.
///
public void LoadLoadout() {
loadout = new RCC_CustomizationLoadout();
if (PlayerPrefs.HasKey(saveFileName))
loadout = (RCC_CustomizationLoadout)JsonUtility.FromJson(PlayerPrefs.GetString(saveFileName), typeof(RCC_CustomizationLoadout));
}
private void Reset() {
saveFileName = transform.name;
}
}