using System; using System.Collections.Generic; using UnityEngine; public enum GameModeType { PVP, Bot, } [Serializable] public class PVPModeData { public List types; public List names; } [Serializable] public class BotModeData { public PlayerData playerData; public int botCount; } public class GameModeHandler : MonoBehaviour, IBase, IBootLoader, IDataLoader { private GameplayManager gameplayManager; private GameManager gameManager; private PVPModeData pvpModeData; private BotModeData botModeData; public GameModeType CurrentGameModeType { get; private set; } public void Initialize() { InterfaceManager.Instance.RegisterInterface(this); } public void InitializeData() { gameManager = InterfaceManager.Instance.GetInterfaceInstance(); gameplayManager = InterfaceManager.Instance.GetInterfaceInstance(); } public void InitPVPModeData(List types, List names) { pvpModeData = new PVPModeData { types = types, names = names }; CurrentGameModeType = GameModeType.PVP; gameplayManager.InitPlayerTypesForPVP(types, names); } public void InitBotModeData(PlayerData playerData, int botCount) { botModeData = new BotModeData { playerData = playerData, botCount = botCount }; CurrentGameModeType = GameModeType.Bot; gameplayManager.InitPlayerTypesForBotMatch(playerData, botCount); } public void OnGameRestarted() { gameManager.OnGameStateChanged(GameState.InGame); gameplayManager.ResetGameRestartData(); switch (CurrentGameModeType) { case GameModeType.PVP: InitPVPModeData(pvpModeData.types, pvpModeData.names); break; case GameModeType.Bot: InitBotModeData(botModeData.playerData, botModeData.botCount); break; } } }