Files
badeend-go/Assets/BadeendGoGameManager.cs

118 lines
3.4 KiB
C#

using System;
using UnityEngine;
public enum GameState
{
Map, Minigame, DuckCollectedScreen, StickerOverview
}
public class BadeendGoGameManager : MonoBehaviour
{
public DuckStickerData simpleDuckSticker;
public GameObject profileButton;
public GameObject mainMap;
public CollectedStickersUI stickerDisplay;
public GameObject miniGame;
public GameObject minigameOverlay;
public DuckCollectedScreen duckCollectedScreen;
private GameState _gameState;
private CollectableDuckData _minigamePlayingForDuck;
public GameState GameState
{
get => _gameState;
set
{
_gameState = value;
profileButton.SetActive(value == GameState.Map);
minigameOverlay.SetActive(value == GameState.Minigame);
mainMap.SetActive(value == GameState.Map || value == GameState.DuckCollectedScreen);
stickerDisplay.gameObject.SetActive(value == GameState.StickerOverview);
miniGame.SetActive(value == GameState.Minigame);
duckCollectedScreen.gameObject.SetActive(value == GameState.DuckCollectedScreen);
}
}
private static BadeendGoGameManager _instance;
public static BadeendGoGameManager Instance
{
get { return _instance; }
private set { _instance = value; }
}
public BadeendGoGameManager()
{
if (Instance != null)
{
throw new Exception("An instance of BadeendGoGameManager already exists");
}
Instance = this;
}
private void Awake()
{
GameState = GameState.Map;
CollectableDuckManager.Instance.DuckClicked += OnDuckClicked;
CatchMinigameManager.Instance.MinigameFinished += OnMinigameFinished;
duckCollectedScreen.screenCloseClicked += DuckCollectedScreenOnScreenCloseClicked;
duckCollectedScreen.retryClicked += DuckCollectedScreenOnRetryClicked;
}
private void DuckCollectedScreenOnRetryClicked(object sender, EventArgs e)
{
GameState = GameState.Minigame;
CatchMinigameManager.Instance.ResetMinigame();
}
private void DuckCollectedScreenOnScreenCloseClicked(object sender, EventArgs e)
{
GameState = GameState.Map;
}
private void OnDuckClicked(object sender, CollectableDuckData duck)
{
GameState = GameState.Minigame;
CatchMinigameManager.Instance.ResetMinigame();
_minigamePlayingForDuck = duck;
}
private void OnMinigameFinished(object sender, MiniGameResult miniGameResult)
{
GameState = GameState.DuckCollectedScreen;
duckCollectedScreen.MiniGameResult = miniGameResult;
if (_minigamePlayingForDuck)
{
duckCollectedScreen.CollectedSticker = _minigamePlayingForDuck.StickerData;
}
else
{
duckCollectedScreen.CollectedSticker = simpleDuckSticker;
}
if (miniGameResult == MiniGameResult.Success)
{
// Duck collected
if (_minigamePlayingForDuck != null)
{
DuckStickerManager.Instance.OnStickerCollected(_minigamePlayingForDuck.StickerData);
CollectableDuckManager.Instance.OnDuckCollected(_minigamePlayingForDuck);
}
else
{
DuckStickerManager.Instance.OnStickerCollected(simpleDuckSticker);
}
}
}
}