From 4530c474e9207b56e40cc1af07a4394528089a81 Mon Sep 17 00:00:00 2001 From: Ashby Issac Date: Mon, 2 Feb 2026 15:10:51 +0530 Subject: [PATCH] Fix: indicator values. --- Assets/Scripts/Gameplay/GameplayManager.cs | 110 +++++++++++---------- Assets/Scripts/Tile/Tile.cs | 2 + 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/Assets/Scripts/Gameplay/GameplayManager.cs b/Assets/Scripts/Gameplay/GameplayManager.cs index 92a4a8b..585e041 100644 --- a/Assets/Scripts/Gameplay/GameplayManager.cs +++ b/Assets/Scripts/Gameplay/GameplayManager.cs @@ -207,7 +207,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader } } - // TODO :: Call based on 2P/3P/4P public void InitCurrentGamePlayerInfo() { currentPlayerTypeTurn = allPlayerTypes[currentPlayerTurnIndex]; @@ -565,10 +564,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader pawn.GetPlayerState() == PlayerState.Moving || pawn.GetPlayerState() == PlayerState.InFinishingPath).ToList(); - foreach (var player in availPlayers) // TODO :: Move from here - { - DisplayPlayerCountOnTile(player, true); - } + SetDisplayCountForAllAvailPlayers(true); } private bool AreAllPawnsInFinishingPath() @@ -615,32 +611,32 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader diceRollHandler.HandleDiceViewForBot((rollVal) => RollDiceForBot(rollVal)); } - public void OnPawnSelected(PlayerPawn playerPawn) + public void OnPawnSelected(PlayerPawn selectedPawn) { EnablePlayerSelectionStates(false); PlayerGameData playerGameData = playerGameDatasDict[currentPlayerTypeTurn]; - Debug.Log($"playerPawn.GetPlayerState(): {playerPawn.GetPlayerState()}"); + Debug.Log($"playerPawn.GetPlayerState(): {selectedPawn.GetPlayerState()}"); - if (playerPawn.GetPlayerState() == PlayerState.InHome) + if (selectedPawn.GetPlayerState() == PlayerState.InHome) { Tile targetTile = tilesManager.RetrieveTileBasedOnIndex(playerGameData.startIndex); - DisplayPlayerCountOnTile(playerPawn, false); - playerPawn.MoveToTile( - GetAndInitPositionInsideSafeZone(playerPawn, targetTile), + UpdatePlayerCountOnTile(selectedPawn, false); + selectedPawn.MoveToTile( + GetAndInitPositionInsideSafeZone(selectedPawn, targetTile), onComplete: () => { playerGameDatasDict[playerGameData.playerType].totalPawnsInHome--; - UpdatePlayerState(playerPawn, PlayerState.InSafeZone); - DisplayPlayerCountOnTile(playerPawn, true); + UpdatePlayerState(selectedPawn, PlayerState.InSafeZone); + UpdatePlayerCountOnTile(selectedPawn, true); if (CheckForMaxDiceRollAttempt()) { return; } - if (playerPawn.IsBotPlayer) + if (selectedPawn.IsBotPlayer) CheckDiceRollForBot(); else SetCanRollDiceForUser(true); @@ -649,53 +645,61 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader return; } - else if (playerPawn.GetPlayerState() == PlayerState.InFinishingPath) + else if (selectedPawn.GetPlayerState() == PlayerState.InFinishingPath) { - ApplyFinishingPathLogic(playerPawn); + ApplyFinishingPathLogic(selectedPawn); } - else if (playerPawn.CurrentTileIndex == playerGameDatasDict[currentPlayerTypeTurn].endIndex) + else if (selectedPawn.CurrentTileIndex == playerGameDatasDict[currentPlayerTypeTurn].endIndex) { - tilesManager.RetrieveTileBasedOnIndex(playerPawn.CurrentTileIndex).ResetPlayerPawn(playerPawn); - ApplyFinishingPathLogic(playerPawn); + tilesManager.RetrieveTileBasedOnIndex(selectedPawn.CurrentTileIndex).ResetPlayerPawn(selectedPawn); + ApplyFinishingPathLogic(selectedPawn); } - else if (playerPawn.GetPlayerState() == PlayerState.InSafeZone || playerPawn.GetPlayerState() == PlayerState.Moving) + else if (selectedPawn.GetPlayerState() == PlayerState.InSafeZone || selectedPawn.GetPlayerState() == PlayerState.Moving) { // move based on the dice value - Debug.Log($"Tile Index :: currentTileIndex: {playerPawn.CurrentTileIndex}"); - int nextTileIdx = GetNextGeneralTileIndex(playerPawn); - int targetIdx = playerPawn.CurrentTileIndex + diceRolledValue; + Debug.Log($"Tile Index :: currentTileIndex: {selectedPawn.CurrentTileIndex}"); + int nextTileIdx = GetNextGeneralTileIndex(selectedPawn); + int targetIdx = selectedPawn.CurrentTileIndex + diceRolledValue; if (nextTileIdx == 0) - targetIdx = (targetIdx - playerPawn.CurrentTileIndex) - 1; + targetIdx = (targetIdx - selectedPawn.CurrentTileIndex) - 1; - Tile currentSittingTile = tilesManager.RetrieveTileBasedOnIndex(playerPawn.CurrentTileIndex); + Tile currentSittingTile = tilesManager.RetrieveTileBasedOnIndex(selectedPawn.CurrentTileIndex); if (currentSittingTile.IsSafeZone) { SafeTile safeTile = (SafeTile)currentSittingTile; - safeTile.UpdateSafeZonePlayerData(currentPlayerTypeTurn, playerPawn); - // DisplayPlayerCountOnTile(playerPawn, false); - // if (safeTile.PlayerTypesCount > 0) - // { - // var pawns = safeTile.GetPlayerPawns(playerPawn.PlayerType); - // foreach (var pawn in pawns) - // DisplayPlayerCountOnTile(pawn, true); - // } - - if (safeTile.PlayerTypesCount == 1) + safeTile.UpdateSafeZonePlayerData(currentPlayerTypeTurn, selectedPawn); + if (safeTile.ContainsPlayerType(selectedPawn.PlayerType)) { - PlayerType playerType = safeTile.GetFirstPlayerType(); + var playerPawns = safeTile.GetPlayerPawns(selectedPawn.PlayerType); - var playerPawns = safeTile.GetPlayerPawns(playerType); - foreach (var pawn in playerPawns) - pawn.MoveToCustomTilePosition(safeTile.CenterPlacementPosition); + if (safeTile.PlayerTypesCount == 1) + { + PlayerType playerType = safeTile.GetFirstPlayerType(); + + foreach (var pawn in playerPawns) + pawn.MoveToCustomTilePosition(safeTile.CenterPlacementPosition); + } + + if (safeTile.ContainsPlayerType(selectedPawn.PlayerType)) + { + foreach (var pawn in playerPawns) + UpdatePlayerCountOnTile(pawn, true); + } } } else { - currentSittingTile.ResetPlayerPawn(playerPawn); + currentSittingTile.ResetPlayerPawn(selectedPawn); + if (currentSittingTile.HasPawnsAvailable) + { + var playerPawns = currentSittingTile.GetPlayerPawns(); + foreach (var pawn in playerPawns) + UpdatePlayerCountOnTile(pawn, true); + } } - MoveThroughTiles(playerPawn, nextTileIdx, targetIndex: targetIdx); + MoveThroughTiles(selectedPawn, nextTileIdx, targetIndex: targetIdx); } } @@ -706,7 +710,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1 : finishingPathIndex + diceRolledValue; Debug.Log($"TargetIdx: {targetIdx}, finishingPathIndex: {finishingPathIndex}"); - DisplayPlayerCountOnTile(playerPawn, false); + UpdatePlayerCountOnTile(playerPawn, false); MoveThroughFinishingPath(playerPawn, finishingPathIndex, targetIdx); } @@ -792,9 +796,9 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader public void SetDisplayCountForAllAvailPlayers(bool state) { foreach (var pawn in availPlayers) - { - DisplayPlayerCountOnTile(pawn, state); - } + { + UpdatePlayerCountOnTile(pawn, state); + } } private void MoveThroughTiles(PlayerPawn playerPawn, int index, int targetIndex) @@ -814,7 +818,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader } Debug.Log($"tile targetPosition: {targetPosition}"); - DisplayPlayerCountOnTile(playerPawn, false); + UpdatePlayerCountOnTile(playerPawn, false); playerPawn.MoveToTile( targetPosition, @@ -847,7 +851,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader Debug.Log($"nextTile.IsSafeZone: {nextTile.IsSafeZone}"); if (CanRollDiceAgain) - DisplayPlayerCountOnTile(playerPawn, true); + UpdatePlayerCountOnTile(playerPawn, true); if (!nextTile.IsSafeZone) { @@ -866,8 +870,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader Debug.Log($"pawn: {pawn}"); Debug.Log($"playerBase: {playerBaseHandler}"); - var playerBasePos = playerBaseHandler.GetPlayerBase(pawn.PlayerType) - .GetBasePlacementDataPosition(pawn.PlayerId - 1); + var playerBasePos = playerBaseHandler.GetPlayerBase(pawn.PlayerType).GetBasePlacementDataPosition(pawn.PlayerId - 1); Debug.Log($"playerBasePos: {playerBasePos}"); playerGameDatasDict[pawn.PlayerType].totalPawnsInHome++; @@ -877,7 +880,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader if (CheckForMaxDiceRollAttempt()) { nextTile.InitPlayerPawn(playerPawn, currentPlayerTypeTurn); - DisplayPlayerCountOnTile(playerPawn, true); + // UpdatePlayerCountOnTile(playerPawn, true); return; } @@ -888,7 +891,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader } nextTile.InitPlayerPawn(playerPawn, currentPlayerTypeTurn); - DisplayPlayerCountOnTile(playerPawn, true); + UpdatePlayerCountOnTile(playerPawn, true); if (CheckForMaxDiceRollAttempt()) { @@ -989,7 +992,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader } else { - DisplayPlayerCountOnTile(playerPawn, true); if (playerPawn.CurrentTileIndex == tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1) { UpdatePlayerState(playerPawn, PlayerState.HasFinished); @@ -1040,6 +1042,8 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader SwitchPlayer(); } + + UpdatePlayerCountOnTile(playerPawn, CanRollDiceAgain && playerPawn.CurrentTileIndex != tilesManager.GetFinishingTileDataLength(currentPlayerTypeTurn) - 1); } }, index); @@ -1051,7 +1055,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader Debug.Log($"CAnRollDiceForUser: {CanRollDiceForUser}"); } - private void DisplayPlayerCountOnTile(PlayerPawn playerPawn, bool show) + private void UpdatePlayerCountOnTile(PlayerPawn playerPawn, bool show) { Tile tile = playerPawn.GetPlayerState() == PlayerState.InFinishingPath ? tilesManager.RetrieveFinishingTileBasedOnIndex(playerPawn.PlayerType, playerPawn.CurrentTileIndex) diff --git a/Assets/Scripts/Tile/Tile.cs b/Assets/Scripts/Tile/Tile.cs index 2cf14c3..3e3c7d4 100644 --- a/Assets/Scripts/Tile/Tile.cs +++ b/Assets/Scripts/Tile/Tile.cs @@ -27,6 +27,8 @@ public class Tile : MonoBehaviour private List PlayerPawns = new List(); // Change implementation + public List GetPlayerPawns() => PlayerPawns; + public bool HasPawnsAvailable => PlayerPawns.Count > 0; public PlayerType CurrentHoldingPlayerType => PlayerPawns[0].PlayerType; public int TotalPawnsInTile => PlayerPawns.Count;