Files
JourneyToNowhere_Unity/Assets/Scripts/Util.cs
T

255 lines
8.6 KiB
C#

using System;
using System.IO;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace JTN
{
public class Utils : MonoBehaviour
{
/*
public bool scrolling;
public GameObject objectRot;
public GameObject sn;
public float movespeed = 3;
public float srate = 2;
private float tm = 0;
private bool once = false;
private GameObject currentObjectRot;
*/
public string GameObjectList;
public bool DestroyParentIfNotDevelopment = false;
public GameObject Parent;
public TMP_InputField timeScaler;
public bool UnlockCursorInThisScene = false;
public static bool PublicUnlockCursorInThisScene = false;
public FirstPersonController playerController;
public GameObject Player;
public Animation animationToPlay;
public GameObject DeactivateObjectOnGameObjectActivate;
public GameObject PlayAnimOnActive;
public string animName;
public bool PlayOnceOnly = true;
int timesAnimPlayed = 0;
public GameObject LoadSceneOnObjectActivateOrDeactivate;
public bool RunOnDeactivate;
public string SceneToLoad;
public AudioSource audioSource;
public AdvLevelMan AdvancedLevelManager;
private int LoadedTimes = 0;
public static void SwitchScene(String SceneName)
{
Debug.LogError("Attempting to load scene " + SceneName);
try
{
SceneManager.LoadScene(SceneName);
}
catch (Exception e)
{
Debug.LogError(e.ToString());
Debug.LogError("Try using the developer menu to open " + SceneName);
}
}
public static async Task<AudioClip> LoadClip(string path)
{
AudioClip clip = null;
using (UnityWebRequest uwr = UnityWebRequestMultimedia.GetAudioClip(path, AudioType.WAV))
{
uwr.SendWebRequest();
// wrap tasks in try/catch, otherwise it'll fail silently
try
{
while (!uwr.isDone) await Task.Delay(5);
if (uwr.result == UnityWebRequest.Result.ConnectionError) Debug.Log($"{uwr.error}");
else
{
clip = DownloadHandlerAudioClip.GetContent(uwr);
Debug.Log("Loaded AudioClip from " + path);
}
}
catch (Exception err)
{
Debug.Log($"{err.Message}, {err.StackTrace}");
}
}
return clip;
}
public void TimeScale()
{
if (timeScaler)
{
var numTime = float.Parse(timeScaler.text);
Time.timeScale = numTime;
}
}
public void CustomTimeScale(float timeScale)
{
Time.timeScale = timeScale;
}
public void ResetPlayerPrefs()
{
PlayerPrefs.DeleteAll();
}
public void DisableTextMeshProButton(Button Button)
{
Button.interactable = false;
}
public void EnableTextMeshProButton(Button Button)
{
Button.interactable = true;
}
private void Start()
{
GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>();
foreach (GameObject go in allObjects)
GameObjectList = GameObjectList + ", " + go.name;
if (!Debug.isDebugBuild || Application.platform != RuntimePlatform.WindowsEditor)
Destroy(Parent);
if (PlayerPrefs.HasKey("QualityLevel"))
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("QualityLevel"));
if (PlayerPrefs.HasKey("FullscreenState"))
SetFullscreen(bool.Parse(PlayerPrefs.GetString("FullscreenState")));
}
private void FixedUpdate()
{
if (LoadSceneOnObjectActivateOrDeactivate && AdvancedLevelManager)
if (RunOnDeactivate)
{
if (!LoadSceneOnObjectActivateOrDeactivate.activeInHierarchy && LoadedTimes == 0)
{
Debug.Log("Loading scene " + SceneToLoad);
AdvancedLevelManager.SwitchSceneAdv(SceneToLoad);
LoadedTimes++;
}
}
else if (!RunOnDeactivate && LoadSceneOnObjectActivateOrDeactivate.activeInHierarchy && LoadedTimes == 0)
{
Debug.Log("Loading scene " + SceneToLoad);
AdvancedLevelManager.SwitchSceneAdv(SceneToLoad);
LoadedTimes++;
}
}
public static void ToggleActive(GameObject obj)
{
obj.SetActive(!obj.activeInHierarchy);
}
public static void ToggleAnimState(Animation anim)
{
anim.enabled = !anim.enabled;
}
public static void SetGameObjectToActive(GameObject obj)
{
obj.SetActive(true);
}
public void PlayAudioClipOnce(AudioClip clip)
{
if (!audioSource)
Debug.LogError("No audio source was linked when running the script attached to " + gameObject.name);
else
audioSource.PlayOneShot(clip);
}
public static void SetGameObjectToInactive(GameObject obj)
{
obj.SetActive(false);
}
public void SetFullscreen(bool FullscreenState)
{
Debug.Log($"Set fullscreen pref to {FullscreenState}");
PlayerPrefs.SetString("FullscreenState", $"{FullscreenState}");
if (FullscreenState)
{
//Screen.fullScreenMode = FullScreenMode.FullScreenWindow;
Screen.SetResolution(1533, 720, true);
} else
{
Screen.fullScreenMode = FullScreenMode.Windowed;
Screen.SetResolution(1533, 720, false);
}
}
public void DisableAnim(Animation anim)
{
anim.enabled = false;
}
public static void PlayAnimByName(Animation anim, string animName)
{
anim.PlayQueued(animName);
}
public void PlayAnimation(string animName)
{
if (animationToPlay)
animationToPlay.PlayQueued(animName);
}
public void playOutAnim(Animation anim)
{
PlayAnimByName(anim, "SetPanOUT");
}
public void playInAnim(Animation anim)
{
PlayAnimByName(anim, "SetPanOUT");
}
private void Update()
{
PublicUnlockCursorInThisScene = UnlockCursorInThisScene;
if (!UnlockCursorInThisScene)
{
if (Input.GetKeyDown(KeyCode.LeftAlt))
{
Cursor.lockState = CursorLockMode.None;
if (playerController)
playerController.cameraCanMove = false;
}
else if (Input.GetKeyUp(KeyCode.LeftAlt))
{
Cursor.lockState = CursorLockMode.Locked;
if (playerController)
playerController.cameraCanMove = true;
}
}
else
Cursor.lockState = CursorLockMode.None;
if (DeactivateObjectOnGameObjectActivate)
if (gameObject.activeInHierarchy)
{
DeactivateObjectOnGameObjectActivate.SetActive(false);
gameObject.SetActive(false);
}
if (PlayAnimOnActive)
if (PlayAnimOnActive.activeInHierarchy)
{
if (timesAnimPlayed < 1)
{
if (PlayOnceOnly)
timesAnimPlayed++;
PlayAnimOnActive.SetActive(false);
PlayAnimation(animName);
Debug.Log("Looping state: " + animationToPlay.clip.isLooping);
}
}
}
}
}