Ludo-3D/Assets/Scripts/UI/Pages/PopUp/PvAIModePopup.cs

149 lines
5.3 KiB
C#
Raw Normal View History

2026-01-30 19:14:08 +05:30
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PvAIModePopup : PopupBase
{
2026-01-30 19:14:08 +05:30
[SerializeField] private Color playerBtnNormalColor;
[SerializeField] private Color playerBtnSelectedColor;
2026-01-30 14:13:52 +05:30
[Header("Bot Selection Buttons")]
[SerializeField] private Button twoPlayerBtn;
[SerializeField] private Button threePlayerBtn;
[SerializeField] private Button fourPlayerBtn;
2026-01-30 14:13:52 +05:30
[Header("Color Selection Buttons")]
[SerializeField] private Button redBtn;
[SerializeField] private Button blueBtn;
[SerializeField] private Button greyBtn;
[SerializeField] private Button greenBtn;
[Header("Action Buttons")]
[SerializeField] private Button playBtn;
[SerializeField] private Button closeBtn;
[Header("Input Field")]
[SerializeField] private TMP_InputField playerNameInput;
[Header("Player Names")]
private string playerName;
private ScreenManager screenManager;
private SoundManager soundManager;
private GameModeHandler gameModeHandler;
2026-01-30 21:51:33 +05:30
private GameManager gameManager;
private int selectedPlayerCount;
private PlayerType playerType;
2026-01-30 19:14:08 +05:30
private Button currPlayerCountBtn, prevPlayerCountBtn;
private Button currPlayerTypeBtn, prePlayerTypeBtn;
private void OnEnable()
{
2026-01-30 19:14:08 +05:30
twoPlayerBtn.onClick.AddListener(() => OnPlayerCountSelected(2, twoPlayerBtn));
threePlayerBtn.onClick.AddListener(() => OnPlayerCountSelected(3, threePlayerBtn));
fourPlayerBtn.onClick.AddListener(() => OnPlayerCountSelected(4, fourPlayerBtn));
playBtn.onClick.AddListener(OnClick_PlayButton);
closeBtn.onClick.AddListener(OnClick_CloseButton);
2026-01-30 14:13:52 +05:30
2026-01-30 19:14:08 +05:30
redBtn.onClick.AddListener(() => OnColorSelected(PlayerType.Player1, redBtn));
blueBtn.onClick.AddListener(() => OnColorSelected(PlayerType.Player2, blueBtn));
greyBtn.onClick.AddListener(() => OnColorSelected(PlayerType.Player3, greyBtn));
greenBtn.onClick.AddListener(() => OnColorSelected(PlayerType.Player4, greenBtn));
}
private void Start()
{
OnPlayerCountSelected(2, twoPlayerBtn);
2026-01-30 21:51:33 +05:30
OnColorSelected(PlayerType.Player1, redBtn);
}
private void OnDisable()
{
twoPlayerBtn.onClick.RemoveAllListeners();
threePlayerBtn.onClick.RemoveAllListeners();
fourPlayerBtn.onClick.RemoveAllListeners();
2026-01-30 19:14:08 +05:30
playBtn.onClick.RemoveAllListeners();
closeBtn.onClick.RemoveAllListeners();
}
2026-01-30 19:14:08 +05:30
private void OnPlayerCountSelected(int count, Button button)
{
selectedPlayerCount = count;
2026-01-30 19:14:08 +05:30
prevPlayerCountBtn = currPlayerCountBtn;
currPlayerCountBtn = button;
ColorBlock colorBlock;
if (prevPlayerCountBtn)
{
colorBlock = prevPlayerCountBtn.colors;
colorBlock.normalColor = playerBtnNormalColor;
prevPlayerCountBtn.colors = colorBlock;
}
colorBlock = currPlayerCountBtn.colors;
colorBlock.normalColor = playerBtnSelectedColor;
currPlayerCountBtn.colors = colorBlock;
}
private void OnClick_PlayButton()
{
playerName = string.IsNullOrWhiteSpace(playerNameInput.text) ? Ludo_3D_Constants.Player1_Name : playerNameInput.text;
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);
//TODO: Start PvAI Game with the selected player count and name
Debug.Log($"Starting PVP Mode with {selectedPlayerCount} players:");
Debug.Log($"Player 1: {playerName}");
2026-01-30 19:14:08 +05:30
popupManager.HidePopup(popupType);
screenManager = screenManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>() : screenManager;
screenManager.HideScreen(ScreenType.MainMenuScreen);
2026-01-30 19:14:08 +05:30
gameModeHandler = gameModeHandler == null ? InterfaceManager.Instance.GetInterfaceInstance<GameModeHandler>() : gameModeHandler;
gameModeHandler.InitBotModeData(new PlayerData { playerType = playerType, playerName = playerName }, selectedPlayerCount - 1);
2026-01-30 21:51:33 +05:30
gameManager = gameManager == null ? InterfaceManager.Instance.GetInterfaceInstance<GameManager>() : gameManager;
gameManager.OnGameStateChanged(GameState.InGame);
}
2026-01-30 14:13:52 +05:30
private void OnClick_CloseButton()
{
2026-02-02 17:45:34 +05:30
popupManager.HidePopup(popupType);
screenManager = screenManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>() : screenManager;
2026-02-02 17:45:34 +05:30
screenManager.ShowScreen(ScreenType.MainMenuScreen);
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);
}
2026-01-30 14:13:52 +05:30
2026-01-30 19:14:08 +05:30
private void OnColorSelected(PlayerType type, Button button)
2026-01-30 14:13:52 +05:30
{
playerType = type;
2026-01-30 19:14:08 +05:30
prePlayerTypeBtn = currPlayerTypeBtn;
currPlayerTypeBtn = button;
ColorBlock colorBlock;
if (prePlayerTypeBtn)
{
colorBlock = prePlayerTypeBtn.colors;
colorBlock.normalColor = playerBtnNormalColor;
prePlayerTypeBtn.colors = colorBlock;
}
colorBlock = currPlayerTypeBtn.colors;
colorBlock.normalColor = playerBtnSelectedColor;
currPlayerTypeBtn.colors = colorBlock;
2026-01-30 14:13:52 +05:30
}
}