147 lines
4.2 KiB
C#
147 lines
4.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class GameManager : MonoBehaviour
|
|
{
|
|
public static GameManager Instance { get; private set; }
|
|
|
|
[Header("Îáåðè òèï ñèìóëÿö³¿")]
|
|
public bool isSimulation = true;
|
|
[Header("Âèä")]
|
|
public bool isView2 = false;
|
|
[Header("Ãåðîé")]
|
|
public bool useDrone = false;
|
|
[Header("Êàìåðè")]
|
|
public Camera davidCamera;
|
|
public Camera droneCamera;
|
|
public Camera droneInnerCamera;
|
|
public Camera mainCamera;
|
|
[Header("Îá'ºêòè")]
|
|
public GameObject david;
|
|
public GameObject drone;
|
|
|
|
[HideInInspector] public double simV = 2000.0;
|
|
[HideInInspector] public double simVDrone = 8000.0;
|
|
[HideInInspector] public double view2Jitter = 0.0;
|
|
|
|
private bool _lastIsView2;
|
|
private bool _lastUseDrone;
|
|
private Vector3 _davidStartPos;
|
|
private Vector3 _droneStartPos;
|
|
|
|
void Awake()
|
|
{
|
|
if (Instance == null) Instance = this;
|
|
else Destroy(gameObject);
|
|
GenerateSimV();
|
|
}
|
|
|
|
public void GenerateSimV()
|
|
{
|
|
simV = 500.0 + Random.Range(0f, 1000f);
|
|
simVDrone = 2000.0 + Random.Range(0f, 2000f);
|
|
view2Jitter = Random.Range(-5.0f, 5.0f);
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
if (david != null) _davidStartPos = david.transform.position;
|
|
if (drone != null) _droneStartPos = drone.transform.position;
|
|
_lastIsView2 = isView2;
|
|
_lastUseDrone = useDrone;
|
|
ApplySettings();
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (_lastIsView2 != isView2 || _lastUseDrone != useDrone)
|
|
{
|
|
_lastIsView2 = isView2;
|
|
_lastUseDrone = useDrone;
|
|
ResetAll();
|
|
}
|
|
}
|
|
|
|
void ResetAll()
|
|
{
|
|
GenerateSimV();
|
|
FindObjectOfType<HeroTrigger>()?.Reset();
|
|
FindObjectOfType<DroneTrigger>()?.Reset();
|
|
FindObjectOfType<RestartManager>()?.HideRestart();
|
|
FindObjectOfType<RewindManager>()?.FullReset();
|
|
|
|
LightWave[] waves = FindObjectsOfType<LightWave>(true);
|
|
foreach (var wave in waves)
|
|
{
|
|
wave.ResetSize();
|
|
wave.ResetText();
|
|
wave.gameObject.SetActive(false);
|
|
}
|
|
|
|
if (david != null) david.transform.position = _davidStartPos;
|
|
if (drone != null) drone.transform.position = _droneStartPos;
|
|
|
|
ApplySettings();
|
|
|
|
if (david != null && david.activeInHierarchy)
|
|
{
|
|
var hm = david.GetComponentInChildren<HeroMovement>();
|
|
if (hm != null) hm.ResumeMoving();
|
|
var anim = david.GetComponent<Animator>();
|
|
if (anim != null)
|
|
{
|
|
anim.Rebind();
|
|
anim.Play("FastRun", 0, 0f);
|
|
anim.Update(0f);
|
|
}
|
|
}
|
|
if (drone != null && drone.activeInHierarchy)
|
|
{
|
|
var dm = drone.GetComponentInChildren<DroneMovement>();
|
|
if (dm != null) dm.ResumeMoving();
|
|
}
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
void OnValidate()
|
|
{
|
|
UnityEditor.EditorApplication.delayCall += () =>
|
|
{
|
|
if (this == null) return;
|
|
ApplySettings();
|
|
};
|
|
}
|
|
#endif
|
|
|
|
void ApplySettings()
|
|
{
|
|
if (david != null) david.SetActive(!useDrone);
|
|
if (drone != null) drone.SetActive(useDrone);
|
|
|
|
if (isView2)
|
|
{
|
|
if (mainCamera != null) mainCamera.enabled = true;
|
|
if (davidCamera != null) davidCamera.enabled = false;
|
|
if (droneCamera != null) droneCamera.enabled = false;
|
|
if (droneInnerCamera != null) droneInnerCamera.enabled = false;
|
|
}
|
|
else
|
|
{
|
|
if (mainCamera != null) mainCamera.enabled = false;
|
|
if (useDrone)
|
|
{
|
|
if (droneCamera != null) droneCamera.enabled = true;
|
|
if (droneInnerCamera != null) droneInnerCamera.enabled = true;
|
|
if (davidCamera != null) davidCamera.enabled = false;
|
|
}
|
|
else
|
|
{
|
|
if (davidCamera != null) davidCamera.enabled = true;
|
|
if (droneCamera != null) droneCamera.enabled = false;
|
|
if (droneInnerCamera != null) droneInnerCamera.enabled = false;
|
|
}
|
|
}
|
|
}
|
|
}
|