E_ElecCompetition/Electrical_inspectionCompet.../Assets/Plugins/ZFBrowser/Demo/Scripts/HUDManager.cs

123 lines
2.8 KiB
C#

#if UNITY_5_3_OR_NEWER
#define SCENE_MANAGER
using UnityEngine.SceneManagement;
#endif
using System;
using System.Collections;
using UnityEngine;
namespace ZenFulcrum.EmbeddedBrowser {
/** Handles mouse hiding/locking and pause menu for the demo. */
public class HUDManager : MonoBehaviour {
public static HUDManager Instance { get; private set; }
private bool haveMouse = false;
public PointerUIGUI hud;
public Browser HUDBrowser { get; private set; }
public void Awake() {
Instance = this;
}
public void Start() {
HUDBrowser = hud.GetComponent<Browser>();
HUDBrowser.RegisterFunction("unpause", args => Unpause());
HUDBrowser.RegisterFunction("browserMode", args => LoadBrowseLevel(true));
HUDBrowser.RegisterFunction("quit", args => Application.Quit());
Unpause();
#if UNITY_STANDALONE_LINUX
StartCoroutine(Rehide());
#endif
//Update coin count on hud when user gets one
PlayerInventory.Instance.coinCollected += count => HUDBrowser.CallFunction("setCoinCount", count);
}
private IEnumerator Rehide() {
//Unity has bugs. Here's another workaround for another Unity bug.
#if UNITY_5_5_OR_NEWER
while (!UnityEngine.Rendering.SplashScreen.isFinished) yield return null;
#else
while (Application.isShowingSplashScreen) yield return null;
#endif
Cursor.visible = false;
yield return new WaitForSeconds(.2f);
Cursor.visible = true;
yield return new WaitForSeconds(.2f);
Cursor.visible = false;
}
public void Unpause() {
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
EnableUserControls(true);
Time.timeScale = 1;
haveMouse = true;
HUDBrowser.CallFunction("setPaused", false);
}
public void Pause() {
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
haveMouse = false;
Time.timeScale = 0;
EnableUserControls(false);
HUDBrowser.CallFunction("setPaused", true);
}
public void Update() {
if (Input.GetKeyDown(KeyCode.Escape)) {
if (haveMouse) Pause();
else Unpause();
}
}
public void Say(string html, float dwellTime) {
HUDBrowser.CallFunction("say", html, dwellTime);
}
protected void EnableUserControls(bool enableIt) {
//fixme: demo still uses the old input system
#pragma warning disable 618
FPSCursorRenderer.Instance.EnableInput = enableIt;
#pragma warning restore 618
var fpsInput = GetComponent<SimpleFPSController>();
fpsInput.enabled = enableIt;
hud.enableInput = !enableIt;
}
public void LoadBrowseLevel(bool force = false) {
StartCoroutine(LoadLevel(force));
}
private IEnumerator LoadLevel(bool force = false) {
if (!force) {
yield return new WaitUntil(() => SayWordsOnTouch.ActiveSpeakers == 0);
}
Pause();
#if SCENE_MANAGER
SceneManager.LoadScene("SimpleBrowser");
#else
Application.LoadLevel("SimpleBrowser");
#endif
}
}
}