Space-Smash-Out/Assets/SlimUI/Modern Menu 1/Scripts/Managers/SlimUISettings.cs
Jakob Feldmann 64162cb4a1 feat: whole project restructuring
This can be seen as the initial state of the project after the released demo.

The changes include:
- New ship models
- Singleton manager structure to keep project scaleable in the future
     - Managing players, their settings, character choices, statistics, match setups, controls etc. in a separate decoupled scene
- Main menu with transitions to the arena scene
- Beginnings of a custom audio solution
- Logging with Log4Net

It is really a complete overhaul of the projects structure and management.
2024-04-01 23:06:39 +02:00

508 lines
14 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TMPro;
namespace SlimUI.ModernMenu
{
public class SlimUISettings : MonoBehaviour
{
public enum Platform { Desktop, Mobile };
public Platform platform;
// toggle buttons
[Header("MOBILE SETTINGS")]
public GameObject mobileSFXtext;
public GameObject mobileMusictext;
public GameObject mobileShadowofftextLINE;
public GameObject mobileShadowlowtextLINE;
public GameObject mobileShadowhightextLINE;
[Header("VIDEO SETTINGS")]
public GameObject fullscreentext;
public GameObject ambientocclusiontext;
public GameObject shadowofftextLINE;
public GameObject shadowlowtextLINE;
public GameObject shadowhightextLINE;
public GameObject aaofftextLINE;
public GameObject aa2xtextLINE;
public GameObject aa4xtextLINE;
public GameObject aa8xtextLINE;
public GameObject vsynctext;
public GameObject motionblurtext;
public GameObject texturelowtextLINE;
public GameObject texturemedtextLINE;
public GameObject texturehightextLINE;
public GameObject cameraeffectstext;
[Header("GAME SETTINGS")]
public GameObject showhudtext;
public GameObject tooltipstext;
public GameObject difficultynormaltext;
public GameObject difficultynormaltextLINE;
public GameObject difficultyhardcoretext;
public GameObject difficultyhardcoretextLINE;
[Header("CONTROLS SETTINGS")]
public GameObject invertmousetext;
// sliders
public GameObject musicSlider;
public GameObject sensitivityXSlider;
public GameObject sensitivityYSlider;
public GameObject mouseSmoothSlider;
private float sliderValue = 0.0f;
private float sliderValueXSensitivity = 0.0f;
private float sliderValueYSensitivity = 0.0f;
private float sliderValueSmoothing = 0.0f;
public void Start()
{
// check difficulty
if (PlayerPrefs.GetInt("NormalDifficulty") == 1)
{
difficultynormaltextLINE.gameObject.SetActive(true);
difficultyhardcoretextLINE.gameObject.SetActive(false);
}
else
{
difficultyhardcoretextLINE.gameObject.SetActive(true);
difficultynormaltextLINE.gameObject.SetActive(false);
}
// check slider values
musicSlider.GetComponent<Slider>().value = PlayerPrefs.GetFloat("MusicVolume");
sensitivityXSlider.GetComponent<Slider>().value = PlayerPrefs.GetFloat("XSensitivity");
sensitivityYSlider.GetComponent<Slider>().value = PlayerPrefs.GetFloat("YSensitivity");
mouseSmoothSlider.GetComponent<Slider>().value = PlayerPrefs.GetFloat("MouseSmoothing");
// check full screen
if (Screen.fullScreen == true)
{
fullscreentext.GetComponent<TMP_Text>().text = "on";
}
else if (Screen.fullScreen == false)
{
fullscreentext.GetComponent<TMP_Text>().text = "off";
}
// check hud value
if (PlayerPrefs.GetInt("ShowHUD") == 0)
{
showhudtext.GetComponent<TMP_Text>().text = "off";
}
else
{
showhudtext.GetComponent<TMP_Text>().text = "on";
}
// check tool tip value
if (PlayerPrefs.GetInt("ToolTips") == 0)
{
tooltipstext.GetComponent<TMP_Text>().text = "off";
}
else
{
tooltipstext.GetComponent<TMP_Text>().text = "on";
}
// check shadow distance/enabled
if (platform == Platform.Desktop)
{
if (PlayerPrefs.GetInt("Shadows") == 0)
{
QualitySettings.shadowCascades = 0;
QualitySettings.shadowDistance = 0;
shadowofftextLINE.gameObject.SetActive(true);
shadowlowtextLINE.gameObject.SetActive(false);
shadowhightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("Shadows") == 1)
{
QualitySettings.shadowCascades = 2;
QualitySettings.shadowDistance = 75;
shadowofftextLINE.gameObject.SetActive(false);
shadowlowtextLINE.gameObject.SetActive(true);
shadowhightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("Shadows") == 2)
{
QualitySettings.shadowCascades = 4;
QualitySettings.shadowDistance = 500;
shadowofftextLINE.gameObject.SetActive(false);
shadowlowtextLINE.gameObject.SetActive(false);
shadowhightextLINE.gameObject.SetActive(true);
}
}
else if (platform == Platform.Mobile)
{
if (PlayerPrefs.GetInt("MobileShadows") == 0)
{
QualitySettings.shadowCascades = 0;
QualitySettings.shadowDistance = 0;
mobileShadowofftextLINE.gameObject.SetActive(true);
mobileShadowlowtextLINE.gameObject.SetActive(false);
mobileShadowhightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("MobileShadows") == 1)
{
QualitySettings.shadowCascades = 2;
QualitySettings.shadowDistance = 75;
mobileShadowofftextLINE.gameObject.SetActive(false);
mobileShadowlowtextLINE.gameObject.SetActive(true);
mobileShadowhightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("MobileShadows") == 2)
{
QualitySettings.shadowCascades = 4;
QualitySettings.shadowDistance = 100;
mobileShadowofftextLINE.gameObject.SetActive(false);
mobileShadowlowtextLINE.gameObject.SetActive(false);
mobileShadowhightextLINE.gameObject.SetActive(true);
}
}
// check vsync
if (QualitySettings.vSyncCount == 0)
{
vsynctext.GetComponent<TMP_Text>().text = "off";
}
else if (QualitySettings.vSyncCount == 1)
{
vsynctext.GetComponent<TMP_Text>().text = "on";
}
// check mouse inverse
if (PlayerPrefs.GetInt("Inverted") == 0)
{
invertmousetext.GetComponent<TMP_Text>().text = "off";
}
else if (PlayerPrefs.GetInt("Inverted") == 1)
{
invertmousetext.GetComponent<TMP_Text>().text = "on";
}
// check motion blur
if (PlayerPrefs.GetInt("MotionBlur") == 0)
{
motionblurtext.GetComponent<TMP_Text>().text = "off";
}
else if (PlayerPrefs.GetInt("MotionBlur") == 1)
{
motionblurtext.GetComponent<TMP_Text>().text = "on";
}
// check ambient occlusion
if (PlayerPrefs.GetInt("AmbientOcclusion") == 0)
{
ambientocclusiontext.GetComponent<TMP_Text>().text = "off";
}
else if (PlayerPrefs.GetInt("AmbientOcclusion") == 1)
{
ambientocclusiontext.GetComponent<TMP_Text>().text = "on";
}
// check texture quality
if (PlayerPrefs.GetInt("Textures") == 0)
{
QualitySettings.globalTextureMipmapLimit = 2;
texturelowtextLINE.gameObject.SetActive(true);
texturemedtextLINE.gameObject.SetActive(false);
texturehightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("Textures") == 1)
{
QualitySettings.globalTextureMipmapLimit = 1;
texturelowtextLINE.gameObject.SetActive(false);
texturemedtextLINE.gameObject.SetActive(true);
texturehightextLINE.gameObject.SetActive(false);
}
else if (PlayerPrefs.GetInt("Textures") == 2)
{
QualitySettings.globalTextureMipmapLimit = 0;
texturelowtextLINE.gameObject.SetActive(false);
texturemedtextLINE.gameObject.SetActive(false);
texturehightextLINE.gameObject.SetActive(true);
}
}
public void Update()
{
//sliderValue = musicSlider.GetComponent<Slider>().value;
sliderValueXSensitivity = sensitivityXSlider.GetComponent<Slider>().value;
sliderValueYSensitivity = sensitivityYSlider.GetComponent<Slider>().value;
sliderValueSmoothing = mouseSmoothSlider.GetComponent<Slider>().value;
}
public void FullScreen()
{
Screen.fullScreen = !Screen.fullScreen;
if (Screen.fullScreen == true)
{
fullscreentext.GetComponent<TMP_Text>().text = "on";
}
else if (Screen.fullScreen == false)
{
fullscreentext.GetComponent<TMP_Text>().text = "off";
}
}
public void MusicSlider()
{
//PlayerPrefs.SetFloat("MusicVolume", sliderValue);
PlayerPrefs.SetFloat("MusicVolume", musicSlider.GetComponent<Slider>().value);
}
public void SensitivityXSlider()
{
PlayerPrefs.SetFloat("XSensitivity", sliderValueXSensitivity);
}
public void SensitivityYSlider()
{
PlayerPrefs.SetFloat("YSensitivity", sliderValueYSensitivity);
}
public void SensitivitySmoothing()
{
PlayerPrefs.SetFloat("MouseSmoothing", sliderValueSmoothing);
Debug.Log(PlayerPrefs.GetFloat("MouseSmoothing"));
}
// the playerprefs variable that is checked to enable hud while in game
public void ShowHUD()
{
if (PlayerPrefs.GetInt("ShowHUD") == 0)
{
PlayerPrefs.SetInt("ShowHUD", 1);
showhudtext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("ShowHUD") == 1)
{
PlayerPrefs.SetInt("ShowHUD", 0);
showhudtext.GetComponent<TMP_Text>().text = "off";
}
}
// the playerprefs variable that is checked to enable mobile sfx while in game
public void MobileSFXMute()
{
if (PlayerPrefs.GetInt("Mobile_MuteSfx") == 0)
{
PlayerPrefs.SetInt("Mobile_MuteSfx", 1);
mobileSFXtext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("Mobile_MuteSfx") == 1)
{
PlayerPrefs.SetInt("Mobile_MuteSfx", 0);
mobileSFXtext.GetComponent<TMP_Text>().text = "off";
}
}
public void MobileMusicMute()
{
if (PlayerPrefs.GetInt("Mobile_MuteMusic") == 0)
{
PlayerPrefs.SetInt("Mobile_MuteMusic", 1);
mobileMusictext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("Mobile_MuteMusic") == 1)
{
PlayerPrefs.SetInt("Mobile_MuteMusic", 0);
mobileMusictext.GetComponent<TMP_Text>().text = "off";
}
}
// show tool tips like: 'How to Play' control pop ups
public void ToolTips()
{
if (PlayerPrefs.GetInt("ToolTips") == 0)
{
PlayerPrefs.SetInt("ToolTips", 1);
tooltipstext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("ToolTips") == 1)
{
PlayerPrefs.SetInt("ToolTips", 0);
tooltipstext.GetComponent<TMP_Text>().text = "off";
}
}
public void NormalDifficulty()
{
difficultyhardcoretextLINE.gameObject.SetActive(false);
difficultynormaltextLINE.gameObject.SetActive(true);
PlayerPrefs.SetInt("NormalDifficulty", 1);
PlayerPrefs.SetInt("HardCoreDifficulty", 0);
}
public void HardcoreDifficulty()
{
difficultyhardcoretextLINE.gameObject.SetActive(true);
difficultynormaltextLINE.gameObject.SetActive(false);
PlayerPrefs.SetInt("NormalDifficulty", 0);
PlayerPrefs.SetInt("HardCoreDifficulty", 1);
}
public void ShadowsOff()
{
PlayerPrefs.SetInt("Shadows", 0);
QualitySettings.shadowCascades = 0;
QualitySettings.shadowDistance = 0;
shadowofftextLINE.gameObject.SetActive(true);
shadowlowtextLINE.gameObject.SetActive(false);
shadowhightextLINE.gameObject.SetActive(false);
}
public void ShadowsLow()
{
PlayerPrefs.SetInt("Shadows", 1);
QualitySettings.shadowCascades = 2;
QualitySettings.shadowDistance = 75;
shadowofftextLINE.gameObject.SetActive(false);
shadowlowtextLINE.gameObject.SetActive(true);
shadowhightextLINE.gameObject.SetActive(false);
}
public void ShadowsHigh()
{
PlayerPrefs.SetInt("Shadows", 2);
QualitySettings.shadowCascades = 4;
QualitySettings.shadowDistance = 500;
shadowofftextLINE.gameObject.SetActive(false);
shadowlowtextLINE.gameObject.SetActive(false);
shadowhightextLINE.gameObject.SetActive(true);
}
public void MobileShadowsOff()
{
PlayerPrefs.SetInt("MobileShadows", 0);
QualitySettings.shadowCascades = 0;
QualitySettings.shadowDistance = 0;
mobileShadowofftextLINE.gameObject.SetActive(true);
mobileShadowlowtextLINE.gameObject.SetActive(false);
mobileShadowhightextLINE.gameObject.SetActive(false);
}
public void MobileShadowsLow()
{
PlayerPrefs.SetInt("MobileShadows", 1);
QualitySettings.shadowCascades = 2;
QualitySettings.shadowDistance = 75;
mobileShadowofftextLINE.gameObject.SetActive(false);
mobileShadowlowtextLINE.gameObject.SetActive(true);
mobileShadowhightextLINE.gameObject.SetActive(false);
}
public void MobileShadowsHigh()
{
PlayerPrefs.SetInt("MobileShadows", 2);
QualitySettings.shadowCascades = 4;
QualitySettings.shadowDistance = 500;
mobileShadowofftextLINE.gameObject.SetActive(false);
mobileShadowlowtextLINE.gameObject.SetActive(false);
mobileShadowhightextLINE.gameObject.SetActive(true);
}
public void vsync()
{
if (QualitySettings.vSyncCount == 0)
{
QualitySettings.vSyncCount = 1;
vsynctext.GetComponent<TMP_Text>().text = "on";
}
else if (QualitySettings.vSyncCount == 1)
{
QualitySettings.vSyncCount = 0;
vsynctext.GetComponent<TMP_Text>().text = "off";
}
}
public void InvertMouse()
{
if (PlayerPrefs.GetInt("Inverted") == 0)
{
PlayerPrefs.SetInt("Inverted", 1);
invertmousetext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("Inverted") == 1)
{
PlayerPrefs.SetInt("Inverted", 0);
invertmousetext.GetComponent<TMP_Text>().text = "off";
}
}
public void MotionBlur()
{
if (PlayerPrefs.GetInt("MotionBlur") == 0)
{
PlayerPrefs.SetInt("MotionBlur", 1);
motionblurtext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("MotionBlur") == 1)
{
PlayerPrefs.SetInt("MotionBlur", 0);
motionblurtext.GetComponent<TMP_Text>().text = "off";
}
}
public void AmbientOcclusion()
{
if (PlayerPrefs.GetInt("AmbientOcclusion") == 0)
{
PlayerPrefs.SetInt("AmbientOcclusion", 1);
ambientocclusiontext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("AmbientOcclusion") == 1)
{
PlayerPrefs.SetInt("AmbientOcclusion", 0);
ambientocclusiontext.GetComponent<TMP_Text>().text = "off";
}
}
public void CameraEffects()
{
if (PlayerPrefs.GetInt("CameraEffects") == 0)
{
PlayerPrefs.SetInt("CameraEffects", 1);
cameraeffectstext.GetComponent<TMP_Text>().text = "on";
}
else if (PlayerPrefs.GetInt("CameraEffects") == 1)
{
PlayerPrefs.SetInt("CameraEffects", 0);
cameraeffectstext.GetComponent<TMP_Text>().text = "off";
}
}
public void TexturesLow()
{
PlayerPrefs.SetInt("Textures", 0);
QualitySettings.globalTextureMipmapLimit = 2;
texturelowtextLINE.gameObject.SetActive(true);
texturemedtextLINE.gameObject.SetActive(false);
texturehightextLINE.gameObject.SetActive(false);
}
public void TexturesMed()
{
PlayerPrefs.SetInt("Textures", 1);
QualitySettings.globalTextureMipmapLimit = 1;
texturelowtextLINE.gameObject.SetActive(false);
texturemedtextLINE.gameObject.SetActive(true);
texturehightextLINE.gameObject.SetActive(false);
}
public void TexturesHigh()
{
PlayerPrefs.SetInt("Textures", 2);
QualitySettings.globalTextureMipmapLimit = 0;
texturelowtextLINE.gameObject.SetActive(false);
texturemedtextLINE.gameObject.SetActive(false);
texturehightextLINE.gameObject.SetActive(true);
}
}
}