106 lines
3.2 KiB
C#
106 lines
3.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Mapbox.Map;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
public enum GameState
|
|
{
|
|
Map, Minigame, DuckCollectedScreen, StickerOverview
|
|
}
|
|
|
|
public class BadeendGoGameManager : MonoBehaviour
|
|
{
|
|
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;
|
|
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);
|
|
|
|
profileButton.SetActive(value == GameState.Map);
|
|
minigameOverlay.SetActive(value == GameState.Minigame);
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
if (miniGameResult == MiniGameResult.Success)
|
|
{
|
|
// Duck collected
|
|
DuckStickerManager.Instance.OnStickerCollected(_minigamePlayingForDuck.StickerData);
|
|
CollectableDuckManager.Instance.OnDuckCollected(_minigamePlayingForDuck);
|
|
}
|
|
}
|
|
}
|