[TASK] Added main "game manager" to switch between the minigame and the map + added simple UI to show that a sticker was collected
This commit is contained in:
106
Assets/BadeendGoGameManager.cs
Normal file
106
Assets/BadeendGoGameManager.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Boo.Lang;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user