2026-01-30 21:51:33 +05:30
|
|
|
using System;
|
2026-01-30 11:30:40 +05:30
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
public enum GameModeType
|
|
|
|
|
{
|
|
|
|
|
PVP,
|
|
|
|
|
Bot,
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-30 21:51:33 +05:30
|
|
|
[Serializable]
|
|
|
|
|
public class PVPModeData
|
|
|
|
|
{
|
|
|
|
|
public List<PlayerType> types;
|
|
|
|
|
public List<string> names;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Serializable]
|
|
|
|
|
public class BotModeData
|
|
|
|
|
{
|
|
|
|
|
public PlayerData playerData;
|
|
|
|
|
public int botCount;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-30 11:30:40 +05:30
|
|
|
public class GameModeHandler : MonoBehaviour, IBase, IBootLoader, IDataLoader
|
|
|
|
|
{
|
|
|
|
|
private GameplayManager gameplayManager;
|
2026-01-30 21:51:33 +05:30
|
|
|
private PVPModeData pvpModeData;
|
|
|
|
|
private BotModeData botModeData;
|
|
|
|
|
|
|
|
|
|
public GameModeType CurrentGameModeType
|
2026-01-30 11:30:40 +05:30
|
|
|
{
|
|
|
|
|
get; private set;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-02 17:30:03 +05:30
|
|
|
public GameManager GameManager
|
|
|
|
|
{
|
|
|
|
|
get; private set;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-30 11:30:40 +05:30
|
|
|
public void Initialize()
|
|
|
|
|
{
|
|
|
|
|
InterfaceManager.Instance.RegisterInterface<GameModeHandler>(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void InitializeData()
|
|
|
|
|
{
|
2026-02-02 17:30:03 +05:30
|
|
|
GameManager = InterfaceManager.Instance.GetInterfaceInstance<GameManager>();
|
2026-01-30 11:30:40 +05:30
|
|
|
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-30 21:51:33 +05:30
|
|
|
public void InitPVPModeData(List<PlayerType> types, List<string> names)
|
|
|
|
|
{
|
|
|
|
|
pvpModeData = new PVPModeData
|
|
|
|
|
{
|
|
|
|
|
types = types, names = names
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
CurrentGameModeType = GameModeType.PVP;
|
|
|
|
|
gameplayManager.InitPlayerTypesForPVP(types, names);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void InitBotModeData(PlayerData playerData, int botCount)
|
2026-01-30 11:30:40 +05:30
|
|
|
{
|
2026-01-30 21:51:33 +05:30
|
|
|
botModeData = new BotModeData
|
|
|
|
|
{
|
|
|
|
|
playerData = playerData,
|
|
|
|
|
botCount = botCount
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
CurrentGameModeType = GameModeType.Bot;
|
|
|
|
|
gameplayManager.InitPlayerTypesForBotMatch(playerData, botCount);
|
2026-01-30 11:30:40 +05:30
|
|
|
}
|
|
|
|
|
|
2026-01-30 21:51:33 +05:30
|
|
|
public void OnGameRestarted()
|
2026-01-30 11:30:40 +05:30
|
|
|
{
|
2026-02-02 17:30:03 +05:30
|
|
|
GameManager.OnGameStateChanged(GameState.InGame);
|
2026-02-02 19:27:17 +05:30
|
|
|
GameManager.ResetGameDatas();
|
|
|
|
|
|
2026-01-30 21:51:33 +05:30
|
|
|
switch (CurrentGameModeType)
|
|
|
|
|
{
|
|
|
|
|
case GameModeType.PVP:
|
|
|
|
|
InitPVPModeData(pvpModeData.types, pvpModeData.names);
|
2026-02-02 19:27:17 +05:30
|
|
|
break;
|
2026-01-30 21:51:33 +05:30
|
|
|
case GameModeType.Bot:
|
|
|
|
|
InitBotModeData(botModeData.playerData, botModeData.botCount);
|
2026-02-02 19:27:17 +05:30
|
|
|
break;
|
2026-01-30 21:51:33 +05:30
|
|
|
}
|
2026-01-30 11:30:40 +05:30
|
|
|
}
|
|
|
|
|
}
|