//---------------------------------------------- // Realistic Car Controller // // Copyright © 2014 - 2023 BoneCracker Games // https://www.bonecrackergames.com // Buğra Özdoğanlar // //---------------------------------------------- using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// Manager for all upgradable scripts (Engine, Brake, Handling). /// [AddComponentMenu("BoneCracker Games/Realistic Car Controller/Customization/RCC Vehicle Upgrade Upgrade Manager")] public class RCC_VehicleUpgrade_UpgradeManager : MonoBehaviour { // Mod applier. private RCC_CustomizationApplier modApplier; public RCC_CustomizationApplier ModApplier { get { if (modApplier == null) modApplier = GetComponentInParent(); return modApplier; } } private RCC_VehicleUpgrade_Engine engine; // Upgradable engine component. private RCC_VehicleUpgrade_Brake brake; // Upgradable brake component. private RCC_VehicleUpgrade_Handling handling; // Upgradable handling component. internal int engineLevel = 0; // Current upgraded engine level. internal int brakeLevel = 0; // Current upgraded brake level. internal int handlingLevel = 0; // Current upgraded handling level. private void Awake() { // Getting engine, brake, and handling upgrade components. engine = GetComponentInChildren(true); brake = GetComponentInChildren(true); handling = GetComponentInChildren(true); // Getting defalut values of the car controller. engine.defEngine = ModApplier.CarController.maxEngineTorque; brake.defBrake = ModApplier.CarController.brakeTorque; handling.defHandling = ModApplier.CarController.tractionHelperStrength; } public void Initialize() { // If one of them is missing, return. if (!engine || !brake || !handling) return; // Setting upgraded engine torque if saved. engine.EngineLevel = ModApplier.loadout.engineLevel; engine.Initialize(); // Setting upgraded brake torque if saved. brake.BrakeLevel = ModApplier.loadout.brakeLevel; brake.Initialize(); // Setting upgraded handling strength if saved. handling.HandlingLevel = ModApplier.loadout.handlingLevel; handling.Initialize(); } private void Update() { // If one of them is missing, return. if (!engine || !brake || !handling) return; // Getting current upgrade levels engineLevel = engine.EngineLevel; brakeLevel = brake.BrakeLevel; handlingLevel = handling.HandlingLevel; } /// /// Upgrades the engine torque. /// public void UpgradeEngine() { if (!engine) return; engine.EngineLevel++; engine.UpdateStats(); } /// /// Upgrades the brake torque. /// public void UpgradeBrake() { if (!brake) return; brake.BrakeLevel++; brake.UpdateStats(); } /// /// Upgrades the traction helper (Handling). /// public void UpgradeHandling() { if (!handling) return; handling.HandlingLevel++; handling.UpdateStats(); } private void Reset() { if (transform.Find("Engine")) { engine = transform.Find("Engine").gameObject.GetComponent(); } else { GameObject newEngine = new GameObject("Engine"); newEngine.transform.SetParent(transform); newEngine.transform.localPosition = Vector3.zero; newEngine.transform.localRotation = Quaternion.identity; engine = newEngine.AddComponent(); } if (transform.Find("Brake")) { brake = transform.Find("Brake").gameObject.GetComponent(); } else { GameObject newBrake = new GameObject("Brake"); newBrake.transform.SetParent(transform); newBrake.transform.localPosition = Vector3.zero; newBrake.transform.localRotation = Quaternion.identity; brake = newBrake.AddComponent(); } if (transform.Find("Handling")) { handling = transform.Find("Handling").gameObject.GetComponent(); } else { GameObject newHandling = new GameObject("Handling"); newHandling.transform.SetParent(transform); newHandling.transform.localPosition = Vector3.zero; newHandling.transform.localRotation = Quaternion.identity; handling = newHandling.AddComponent(); } } }