60 lines
1.4 KiB
C#
60 lines
1.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using GometGames.Tools;
|
|
using MyBox;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using Random = UnityEngine.Random;
|
|
|
|
[System.Serializable]
|
|
public enum OrbTypes {
|
|
None = 0,
|
|
Blue = 1,
|
|
Red = 2,
|
|
Purple = 3,
|
|
InvertedControls = 4,
|
|
HighGravity = 5,
|
|
LowGravity = 6,
|
|
DarkRoom = 7,
|
|
Freeze = 8
|
|
};
|
|
|
|
public class GameManager : MonoBehaviour {
|
|
|
|
[SerializeField] GenericDictionary<OrbTypes, UnityEvent> orbStartEffects;
|
|
[SerializeField] GenericDictionary<OrbTypes, UnityEvent> orbEndEffects;
|
|
[SerializeField] OrbTypes currentType = OrbTypes.None;
|
|
OrbTypes _lastType = OrbTypes.None;
|
|
|
|
public static GameManager instance;
|
|
|
|
// Start is called before the first frame update
|
|
void Awake() {
|
|
instance = this;
|
|
}
|
|
|
|
public OrbTypes SelectRandomEffect() {
|
|
OrbTypes selected;
|
|
do {
|
|
selected = (OrbTypes)Random.Range(1, 9);
|
|
} while (selected == currentType || selected == _lastType);
|
|
|
|
ChangeEventCall(selected);
|
|
return selected;
|
|
}
|
|
|
|
[Space, SerializeField] OrbTypes forceEventChangeType = OrbTypes.None;
|
|
[ButtonMethod]
|
|
void ForceEventChange() {
|
|
if (!Application.isPlaying) return;
|
|
ChangeEventCall(forceEventChangeType);
|
|
}
|
|
|
|
void ChangeEventCall(OrbTypes type) {
|
|
if(currentType != OrbTypes.None) orbEndEffects[currentType].Invoke();
|
|
_lastType = currentType;
|
|
currentType = type;
|
|
if(type != OrbTypes.None) orbStartEffects[currentType].Invoke();
|
|
}
|
|
}
|