using System.Collections; using System.Collections.Generic; using UnityEngine; public class LoadControls : MonoBehaviour { //Left Controls public RectTransform leftControlRectTransform; // public RectTransform blockControlRectTransform; // Removed // public RectTransform dodgeControlRectTransform; // Removed //Right Controls // public RectTransform rightControlRectTransform; public RectTransform punchControlRectTransform; public RectTransform kickControlRectTransform; // New control buttons public RectTransform weaponPickupButtonRectTransform; public RectTransform specialMoveButtonRectTransform; public RectTransform shieldButtonRectTransform; public RectTransform splintButtonRectTransform; public RectTransform leftControlMiddle; // public RectTransform rightControlMiddle; // Removed // public RectTransform punchControlMiddle; // Removed // public RectTransform kickControlMiddle; // Removed private const string GameSettingsKey = "GameSettings"; GameSettings LoadedGamesettings; void OnEnable(){ //If Key is present, then load if (PlayerPrefs.HasKey(GameSettingsKey)) { LoadedGamesettings = LoadGameSettings(); //Load SetControlValues(LoadedGamesettings); // Debug.Log("Loaded Settings"); //Default Control Settings }else{ // SetDefaultSettings(); } } // Sets the Loaded Settings void SetControlValues(GameSettings LoadedGamesettings){ // Only apply mentioned/new controls SetAnchoredPosition(leftControlRectTransform, LoadedGamesettings.leftControl); SetAnchoredPosition(punchControlRectTransform, LoadedGamesettings.punchControl); SetAnchoredPosition(kickControlRectTransform, LoadedGamesettings.kickControl); SetAnchoredPosition(weaponPickupButtonRectTransform, LoadedGamesettings.weaponPickupButton); SetAnchoredPosition(specialMoveButtonRectTransform, LoadedGamesettings.specialMoveButton); SetAnchoredPosition(shieldButtonRectTransform, LoadedGamesettings.shieldButton); SetAnchoredPosition(splintButtonRectTransform, LoadedGamesettings.splintButton); // Scale only the left control middle as requested if (leftControlMiddle != null) leftControlMiddle.sizeDelta = new Vector2( leftControlMiddle.sizeDelta.x * LoadedGamesettings.leftControlScaleValue, leftControlMiddle.sizeDelta.y * LoadedGamesettings.leftControlScaleValue ); // Removed: right/punch/kick control middle scaling } // Function to load position and size details for Controls public void SetAnchoredPosition(RectTransform rtTransform, ControlSettings controlsettings) { if (rtTransform == null || controlsettings == null) return; // Guard when settings not present yet rtTransform.anchoredPosition = new Vector2(controlsettings.positionX, controlsettings.positionY); rtTransform.sizeDelta = new Vector2(controlsettings.scaleWidth, controlsettings.scaleHeight); } // Sets the Default Control Settings void SetDefaultSettings(){ GameSettings settings = new GameSettings { // Mentioned controls only leftControl = new ControlSettings { positionX = 764f, positionY = 663f, scaleWidth = 1064.764f, scaleHeight = 886.327f }, punchControl = new ControlSettings { positionX = -1514f, positionY = 1175.6f, scaleWidth = 1502f, scaleHeight = 1178f }, kickControl = new ControlSettings { positionX = -674f, positionY = 1129f, scaleWidth = 1502f, scaleHeight = 1178f }, // New buttons weaponPickupButton = new ControlSettings { positionX = -5854f, positionY = 1267.2f, scaleWidth = 3596.359f, scaleHeight = 3194.071f }, specialMoveButton = new ControlSettings { positionX = -2338f, positionY = 397.94f, scaleWidth = 1800.09f, scaleHeight = 1451.95f }, shieldButton = new ControlSettings { positionX = -1056f, positionY = 528f, scaleWidth = 1502f, scaleHeight = 1178f }, splintButton = new ControlSettings { positionX = -6897f, positionY = 1682.7f, scaleWidth = 3596.359f, scaleHeight = 3194.071f }, leftControlScaleValue = 1f, // rightControlScaleValue = 1f, // Removed kickControlScaleValue = 1f, punchControlScaleValue = 1f, GameplayVolume_value = 0.5f, UIVolume_value = 0.5f, MusicVolume_value = 0.5f, SFXVolume_value = 0.5f, audioVolumes = new string[]{ "50%", "50%", "50%", "50%", } }; SaveGameSettings(settings); } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } //Saving and Loading Game Settings #region public static void SaveGameSettings(GameSettings settings){ string json = JsonUtility.ToJson(settings); PlayerPrefs.SetString(GameSettingsKey, json); PlayerPrefs.Save(); } public static GameSettings LoadGameSettings(){ if (PlayerPrefs.HasKey(GameSettingsKey)) { string json = PlayerPrefs.GetString(GameSettingsKey); return JsonUtility.FromJson(json); } return new GameSettings(); // Return default settings if none are saved } #endregion }