init: version 1
This commit is contained in:
63
Assets/Prefabs/Managers/Scripts/GameManager.cs
Normal file
63
Assets/Prefabs/Managers/Scripts/GameManager.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// GameManager is a singleton that manages the game state of
|
||||
/// a single scene.
|
||||
/// </summary>
|
||||
public class GameManager : MonoBehaviour
|
||||
{
|
||||
public static GameManager Instance => _instance;
|
||||
private static GameManager _instance;
|
||||
|
||||
public MapSwitchEvent onMapSwitch;
|
||||
public RespawnEvent onRespawn;
|
||||
|
||||
public int currentMapIdx;
|
||||
public List<GameObject> maps;
|
||||
public List<CubeController> cubes;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (_instance != null && _instance != this)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
_instance = this;
|
||||
}
|
||||
|
||||
public void SwitchMap(int mapIdx)
|
||||
{
|
||||
Vector3 offset = maps[mapIdx].transform.position - maps[currentMapIdx].transform.position;
|
||||
currentMapIdx = mapIdx;
|
||||
onMapSwitch?.Invoke(currentMapIdx, offset);
|
||||
}
|
||||
|
||||
public void ResetCubes()
|
||||
{
|
||||
foreach (var cube in cubes.Where(x=> x.currentMap == currentMapIdx && x.originMap != x.currentMap))
|
||||
{
|
||||
cube.Respawn();
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!Input.GetKeyDown(KeyCode.J)) return;
|
||||
SwitchMap((currentMapIdx + 1) % maps.Count);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class MapSwitchEvent : UnityEvent<int, Vector3>
|
||||
{
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class RespawnEvent : UnityEvent
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user