mirror of
https://github.com/ConjureETS/PillowFight.git
synced 2026-03-24 00:50:59 +00:00
140 lines
3.4 KiB
C#
140 lines
3.4 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using InputHandler;
|
|
using MenusHandler;
|
|
using UnityEngine.UI;
|
|
|
|
public class GameManager : MonoBehaviour
|
|
{
|
|
public int PlayerCount = 4;
|
|
private static GameManager _instance;
|
|
public MomBehavior mom;
|
|
public Image Icon1;
|
|
public Image Icon2;
|
|
public Image Icon3;
|
|
public Image IconGo;
|
|
|
|
public static GameManager Instance
|
|
{
|
|
get { return _instance; }
|
|
}
|
|
|
|
void Awake()
|
|
{
|
|
_instance = this;
|
|
|
|
/*
|
|
if (_instance != null)
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
else
|
|
{
|
|
_instance = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
}*/
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
for (int i = 0; i < PlayerCount; i++)
|
|
{
|
|
InputManager.Instance.AddCallback(i, HandleMenuInput);
|
|
}
|
|
|
|
|
|
// play gameplay music
|
|
MusicManager.Instance.PlayGameplayMusic();
|
|
|
|
Icon1.gameObject.SetActive(false);
|
|
Icon2.gameObject.SetActive(false);
|
|
Icon3.gameObject.SetActive(false);
|
|
IconGo.gameObject.SetActive(false);
|
|
|
|
StartCoroutine(CountDown());
|
|
}
|
|
|
|
private IEnumerator CountDown()
|
|
{
|
|
yield return new WaitForSeconds(0.5f);
|
|
|
|
yield return StartCoroutine(FadeOutNumber(Icon3));
|
|
yield return StartCoroutine(FadeOutNumber(Icon2));
|
|
yield return StartCoroutine(FadeOutNumber(Icon1));
|
|
|
|
mom.StartGame = true;
|
|
|
|
yield return StartCoroutine(FadeOutNumber(IconGo));
|
|
}
|
|
|
|
private IEnumerator FadeOutNumber(Image number)
|
|
{
|
|
number.gameObject.SetActive(true);
|
|
|
|
number.rectTransform.offsetMax = Vector2.zero;
|
|
number.rectTransform.offsetMin = Vector2.zero;
|
|
|
|
Vector2 initialAnchorMin = new Vector2(0.4f, 0.3f);
|
|
Vector2 initialAnchorMax = new Vector2(0.6f, 0.7f);
|
|
|
|
Vector2 finalAnchor = new Vector2(0.5f, 0.5f);
|
|
|
|
float ratio = 0f;
|
|
|
|
Color initialColor = number.color;
|
|
Color finalColor = new Color(initialColor.r, initialColor.g, initialColor.b, 0f);
|
|
|
|
while (ratio < 1f)
|
|
{
|
|
ratio += Time.deltaTime / 1f;
|
|
|
|
number.rectTransform.anchorMin = Vector2.Lerp(initialAnchorMin, finalAnchor, ratio);
|
|
number.rectTransform.anchorMax = Vector2.Lerp(initialAnchorMax, finalAnchor, ratio);
|
|
|
|
number.color = Color.Lerp(initialColor, finalColor, ratio);
|
|
|
|
yield return null;
|
|
}
|
|
|
|
number.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void PushMenuContext()
|
|
{
|
|
for (int i = 0; i < PlayerCount; i++)
|
|
{
|
|
InputManager.Instance.PushActiveContext("Menu", i);
|
|
}
|
|
}
|
|
|
|
public void PopMenuContext()
|
|
{
|
|
for (int i = 0; i < PlayerCount; i++)
|
|
{
|
|
InputManager.Instance.PopActiveContext(i);
|
|
}
|
|
}
|
|
|
|
private void HandleMenuInput(MappedInput input)
|
|
{
|
|
float yAxis = 0f;
|
|
|
|
if (input.Ranges.ContainsKey("SelectOptionUp"))
|
|
{
|
|
yAxis = input.Ranges["SelectOptionUp"];
|
|
}
|
|
else if (input.Ranges.ContainsKey("SelectOptionDown"))
|
|
{
|
|
yAxis = -input.Ranges["SelectOptionDown"];
|
|
}
|
|
|
|
bool accept = input.Actions.Contains("Accept");
|
|
|
|
MenusManager.Instance.SetInputValues(accept, false, 0f, yAxis);
|
|
}
|
|
|
|
public MomBehavior.State GetMomState() {
|
|
return mom.GetState();
|
|
}
|
|
}
|