chip-gameV3/Assets/Scripts/Gameplay/EndGameHandler.cs

74 lines
1.9 KiB
C#

using DG.Tweening;
using CharacterSystem;
using System.Collections.Generic;
using UnityEngine;
public class EndGameHandler : MonoBehaviour
{
[SerializeField] PveWinPanel winPanel;
[SerializeField] PveLossPanel lossPanel;
[SerializeField] PvpWinPanel pvpWinPanel;
[SerializeField] PveLossPanel drawPanel;
public void HandleEndGame(Team lastPlayer, GameMode gameMode, CheckResult lastResult)
{
print("Конец игры");
GameManager.Instance.turnTracker.EnableTimer(false);
if (lastResult.Draw)
DrawHandler(gameMode);
else
WinHandler(winner: lastPlayer,
gameMode: gameMode,
winChipsCoords: lastResult.WinningIndexes);
}
private void DrawHandler(GameMode gameMode)
{
EventBus.TriggerEvent(GameEvent.Draw);
if (gameMode == GameMode.pve)
drawPanel.Open(GameManager.Instance.ContinueAfterPveDraw);
else
pvpWinPanel.Open();
}
private void WinHandler(Team winner, GameMode gameMode, HashSet<(int row, int col)> winChipsCoords)
{
Debug.Log($"Победа {winner}; Режим {gameMode}");
PlayWinChipsAnimation(winChipsCoords);
if(gameMode == GameMode.pve)
{
if(winner == Team.Player1)
{
EventBus.TriggerEvent(GameEvent.PlayerWin);
winPanel.Open();
}
else
{
EventBus.TriggerEvent(GameEvent.BotWin);
lossPanel.Open(GameManager.Instance.ContinueAfterPveLoss);
}
}
else
{
pvpWinPanel.Open();
}
}
private void PlayWinChipsAnimation(HashSet<(int row, int col)> winChipsCoords)
{
Chip[,] grid = Board.Instance.Grid;
foreach (var winCoord in winChipsCoords)
grid[winCoord.col, winCoord.row].WinAnimation();
}
}