Refactored changes along with flow updations/

This commit is contained in:
Ashby Issac 2026-01-30 09:35:31 +05:30
parent f8eed62a9f
commit 9af9ac09fb
24 changed files with 12694 additions and 15634 deletions

View File

@ -1,7 +1,7 @@
using System.Collections;
using UnityEngine;
public class Dice : MonoBehaviour, IBase, IBootLoader
public class DiceView : MonoBehaviour, IBase, IBootLoader
{
private Rigidbody rb;
private bool rolling;
@ -22,7 +22,7 @@ public class Dice : MonoBehaviour, IBase, IBootLoader
}
public void Initialize()
{
InterfaceManager.Instance?.RegisterInterface<Dice>(this);
InterfaceManager.Instance?.RegisterInterface<DiceView>(this);
transform.localPosition = new Vector3(0, 20, 0);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -5,4 +5,9 @@ using UnityEngine;
public static class Ludo_3D_Constants
{
public const int Max_Dice_Rolls = 6;
public const string Player1_Name = "Player1";
public const string Player2_Name = "Player2";
public const string Player3_Name = "Player3";
public const string Player4_Name = "Player4";
}

View File

@ -43,6 +43,8 @@ public enum BotMove
public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{
[SerializeField] DiceRollHandler diceRollHandler;
[SerializeField] private int diceValue = 0;
[SerializeField] private TextMeshProUGUI diceText;
@ -59,8 +61,8 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
private int currentPlayerTurnIndex = 0;
private List<PlayerType> allPlayerTypes = new List<PlayerType>();
private List<PlayerType> botTypesInGame = new List<PlayerType>();
private List<PlayerType> playerRankings = new List<PlayerType>();
public List<PlayerType> PlayerTypesCollection => allPlayerTypes;
// private Dictionary<PlayerTypes, > playerPawnsDict = new Dictionary<PlayerTypes, List<PlayerPawn>>();
private Dictionary<PlayerType, PlayerGameData> playerGameDatasDict = new Dictionary<PlayerType, PlayerGameData>();
@ -71,13 +73,18 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
private TilesManager tilesManager;
private int diceRolledValue;
private bool CanRollDiceAgain = false; // used for when you get a 6 or when you reach the finish point
private int diceSixRollCounter = 0;
private List<PlayerPawn> availPlayers = new List<PlayerPawn>();
private bool canSwitchPlayer = false;
public bool CanRollDice
{
get; private set;
}
private bool CanRollDiceAgain = false; // used for when you get a 6 or when you reach the finish point
private int diceSixRollCounter = 0;
public List<PlayerType> PlayerTypesCollection => allPlayerTypes;
public void Initialize()
{
@ -223,10 +230,13 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
}
}
public void OnDiceInteracted()
{
diceRollHandler.HandleDiceView();
}
public void RollDiceForPlayer(int rolledVal)
{
if (botTypesInGame.Contains(currentPlayerTypeTurn)) return;
OnDiceRolled(rolledVal);
OnNoMovesLeft();
}
@ -420,9 +430,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
}
}
private List<PlayerPawn> availPlayers = new List<PlayerPawn>();
private bool canSwitchPlayer = false;
public void OnDiceRolled(int rolledVal)
{
SetCanRollDiceForUser(false);
@ -890,7 +897,21 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
CanRollDiceAgain = false;
if (allPlayerTypes.Contains(currentPlayerTypeTurn))
{
playerRankings.Add(currentPlayerTypeTurn);
allPlayerTypes.Remove(currentPlayerTypeTurn);
}
if (allPlayerTypes.Count == 1)
{
// Game is over
playerRankings.Add(allPlayerTypes[0]);
allPlayerTypes.Remove(0);
// Show Game Over panel
return;
}
SwitchPlayer();

View File

@ -104,6 +104,7 @@ public class PlayerPawn : MonoBehaviour
// when he is defeated
public void MoveBackToHome(Transform transformData)
{
Debug.Log($"MoveBackToHome");
transform.position = transformData.position;
transform.rotation = transformData.rotation;
SetPlayerState(PlayerState.InHome);

View File

@ -2,8 +2,9 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DiceRoller : MonoBehaviour
public class DiceRollHandler : MonoBehaviour
{
[SerializeField] private DiceView diceView;
[SerializeField] private int diceTestValue = 0;
private InputManager inputManager;
@ -13,7 +14,7 @@ public class DiceRoller : MonoBehaviour
inputManager = inputManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<InputManager>() : inputManager;
if (!inputManager.GameplayManager.CanRollDice) return;
OnDiceRolled();
RollDiceOnClick();
}
private void Update()
@ -22,10 +23,10 @@ public class DiceRoller : MonoBehaviour
if (!inputManager.GameplayManager.CanRollDice) return;
if (Input.GetKeyDown(KeyCode.Space))
OnDiceRolled();
RollDiceOnClick();
}
private void OnDiceRolled()
private void RollDiceOnClick()
{
SoundManager soundManager = InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>();
soundManager?.PlayGameSoundClip(SoundType.Dice);
@ -34,4 +35,9 @@ public class DiceRoller : MonoBehaviour
diceTestValue != 0 ? diceTestValue : Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1);
inputManager.SetDiceRollValue(currentRolledVal);
}
public void HandleDiceView()
{
diceView.Roll();
}
}

View File

@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: a0f4457742bfd4c61bd436792af64064
PrefabImporter:
guid: a7e3406fc0f8a4b3abf3913c7655f3f1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -0,0 +1,43 @@
using UnityEngine;
public enum GameState
{
InMenu,
InGame,
}
public class GameManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{
private UIManager uiManager;
public GameState GameState
{
get; private set;
}
public void Initialize()
{
InterfaceManager.Instance.RegisterInterface<GameManager>(this);
}
public void InitializeData()
{
uiManager = InterfaceManager.Instance.GetInterfaceInstance<UIManager>();
GameState = GameState.InMenu;
OnGameStateChanged(GameState);
}
public void OnGameStateChanged(GameState gameState)
{
switch (gameState)
{
case GameState.InMenu:
uiManager.OnInMenuScreen();
break;
case GameState.InGame:
uiManager.OnInGameScreen();
break;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 39da8f399f9774587bd1d0c7977e556b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -57,6 +57,12 @@ public class ScreenManager : MonoBehaviour, IBase, IBootLoader
}
}
public void HideAllScreens()
{
foreach (var screenPair in screensDict)
if (screenPair.Value.isActiveAndEnabled) screenPair.Value.Hide();
}
// public void OnScreenEventExecute(ScreenResultEvent screenResultEvent)
// {
// switch (screenResultEvent)

View File

@ -0,0 +1,45 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{
private GameplayManager gameplayManager;
private PopupManager popupManager;
private ScreenManager screenManager;
public void Initialize()
{
InterfaceManager.Instance.RegisterInterface<UIManager>(this);
}
public void InitializeData()
{
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
popupManager = InterfaceManager.Instance.GetInterfaceInstance<PopupManager>();
}
public void OnDiceViewInteracted()
{
gameplayManager.OnDiceInteracted();
}
public void OnInMenuScreen()
{
screenManager = screenManager == null ? InterfaceManager.Instance.GetInterfaceInstance<ScreenManager>() : screenManager;
screenManager.HideAllScreens();
screenManager.ShowScreen(ScreenType.MenuScreen);
}
public void OnInGameScreen()
{
screenManager.HideAllScreens();
screenManager.ShowScreen(ScreenType.InGameHUDScreen);
}
public void OnPlayButtonClicked()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bebcbb45c745a4006be9ef5b25e12cd5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -10,8 +10,7 @@ public enum ScreenType
LoadingScreen,
LevelsScreen,
InGameHUDScreen,
MenuHUDScreen,
GlobalHUDScreen
MenuScreen,
}
public class ScreenBase : UIBase, IUIBase

View File

@ -21,7 +21,7 @@ public class InstructionsPopup : PopupBase
private void OnClick_closeBtn()
{
ScreenManager screenManager = InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>();
screenManager.ShowScreen(ScreenType.MenuHUDScreen);
screenManager.ShowScreen(ScreenType.MenuScreen);
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);

View File

@ -29,7 +29,7 @@ public class OptionsPopup : PopupBase
private void OnClick_closeBtn()
{
ScreenManager screenManager = InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>();
screenManager.ShowScreen(ScreenType.MenuHUDScreen);
screenManager.ShowScreen(ScreenType.MenuScreen);
Hide();
}

View File

@ -57,11 +57,13 @@ public class PvAIModePopup : PopupBase
Debug.Log($"Starting PVP Mode with {selectedPlayerCount} players:");
Debug.Log($"Player 1: {playerName}");
}
private void OnClick_closeBtn()
{
screenManager = screenManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>() : screenManager;
screenManager.ShowScreen(ScreenType.MenuHUDScreen);
screenManager.ShowScreen(ScreenType.MenuScreen);
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);

View File

@ -24,6 +24,7 @@ public class PvPModePopup : PopupBase
private string playerFourName;
private ScreenManager screenManager;
private GameManager gameManager;
private SoundManager soundManager;
private int selectedPlayerCount;
public int SelectedPlayerCount => selectedPlayerCount;
@ -54,17 +55,17 @@ public class PvPModePopup : PopupBase
private void UpdateInputFieldsVisibility()
{
playerOneNameInput.transform.parent.gameObject.SetActive(true);
playerTwoNameInput.transform.parent.gameObject.SetActive(selectedPlayerCount >= 2);
playerThreeNameInput.transform.parent.gameObject.SetActive(selectedPlayerCount >= 3);
playerTwoNameInput.transform.parent.gameObject.SetActive(selectedPlayerCount >= 3);
playerThreeNameInput.transform.parent.gameObject.SetActive(selectedPlayerCount >= 2);
playerFourNameInput.transform.parent.gameObject.SetActive(selectedPlayerCount >= 4);
}
private void OnClick_playBtn()
{
playerOneName = playerOneNameInput.text;
playerTwoName = playerTwoNameInput.text;
playerThreeName = playerThreeNameInput.text;
playerFourName = playerFourNameInput.text;
playerOneName = string.IsNullOrWhiteSpace(playerOneNameInput.text) ? Ludo_3D_Constants.Player1_Name : playerOneNameInput.text;
playerTwoName = string.IsNullOrWhiteSpace(playerTwoNameInput.text) ? Ludo_3D_Constants.Player1_Name : playerTwoNameInput.text;
playerThreeName = string.IsNullOrWhiteSpace(playerThreeNameInput.text) ? Ludo_3D_Constants.Player1_Name : playerThreeNameInput.text;
playerFourName = string.IsNullOrWhiteSpace(playerFourNameInput.text) ? Ludo_3D_Constants.Player1_Name : playerFourNameInput.text;
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);
@ -77,13 +78,12 @@ public class PvPModePopup : PopupBase
Debug.Log($"Player 3: {playerThreeName}");
if (selectedPlayerCount == 4)
Debug.Log($"Player 4: {playerFourName}");
}
private void OnClick_closeBtn()
{
screenManager = screenManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<ScreenManager>() : screenManager;
screenManager.ShowScreen(ScreenType.MenuHUDScreen);
screenManager.ShowScreen(ScreenType.MenuScreen);
soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<SoundManager>() : soundManager;
soundManager?.PlayGameSoundClip(SoundType.ButtonClick);

View File

@ -12,18 +12,19 @@ public class GameHUDS : ScreenBase
[SerializeField] private TMP_Text diceCountText;
[SerializeField] private TMP_Text playerTurnText;
SoundManager soundManager;
private SoundManager soundManager;
private UIManager uiManager;
private void OnEnable()
{
pauseBtn.onClick.AddListener(OnClick_pauseBtn);
diceBtn.onClick.AddListener(OnClick_diceBtn);
diceBtn.onClick.AddListener(OnClick_DiceBtn);
}
private void OnDisable()
{
pauseBtn.onClick.RemoveListener(OnClick_pauseBtn);
diceBtn.onClick.RemoveListener(OnClick_diceBtn);
diceBtn.onClick.RemoveListener(OnClick_DiceBtn);
}
private void OnClick_pauseBtn()
@ -37,9 +38,9 @@ public class GameHUDS : ScreenBase
Hide();
}
private void OnClick_diceBtn()
private void OnClick_DiceBtn()
{
Dice dice = InterfaceManager.Instance?.GetInterfaceInstance<Dice>();
dice?.Roll();
uiManager = uiManager == null ? InterfaceManager.Instance?.GetInterfaceInstance<UIManager>() : uiManager;
uiManager.OnDiceViewInteracted();
}
}