diff --git a/Assets/External-Assets/packages/Project/Scripts/Gameplay/Snake and Ladder/Dice.cs b/Assets/External-Assets/packages/Project/Scripts/Gameplay/Snake and Ladder/Dice.cs index 56afed3..45d1075 100644 --- a/Assets/External-Assets/packages/Project/Scripts/Gameplay/Snake and Ladder/Dice.cs +++ b/Assets/External-Assets/packages/Project/Scripts/Gameplay/Snake and Ladder/Dice.cs @@ -25,10 +25,13 @@ public class Dice : MonoBehaviour, IBase, IBootLoader InterfaceManager.Instance?.RegisterInterface(this); transform.localPosition = new Vector3(0, 20, 0); } - - public void Roll() + + public void Roll(Action onComplete, bool isBot) { if (!rolling) + { + Debug.Log($"isBot: {isBot}"); + onRollingComplete = onComplete; StartCoroutine(RollRoutine()); } @@ -92,5 +95,12 @@ public class Dice : MonoBehaviour, IBase, IBootLoader rb.angularVelocity = Vector3.zero; transform.localPosition = new Vector3(0, 20, 0); rolling = false; + + Invoke(nameof(ResetEvent), 0.5f); + } + + private void ResetEvent() + { + onRollingComplete = null; } } diff --git a/Assets/Scripts/Gameplay/GameplayManager.cs b/Assets/Scripts/Gameplay/GameplayManager.cs index d575cdb..0dd0910 100644 --- a/Assets/Scripts/Gameplay/GameplayManager.cs +++ b/Assets/Scripts/Gameplay/GameplayManager.cs @@ -89,8 +89,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader { tilesManager = InterfaceManager.Instance.GetInterfaceInstance(); - CanRollDice = true; - // initialize the player list from UI. // InitPlayerTypesForLAN(null); @@ -106,6 +104,8 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader playerBaseHandler.InitPlayerTypes(allPlayerTypes); InitCurrentGamePlayerInfo(); + + SetCanRollDiceForUser(true); } public void InitPlayerTypesForBotMatch(PlayerType selectedPlayerType, int botCount) @@ -121,6 +121,8 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader InitCurrentGamePlayerInfo(); InitBotRuntimeData(); AssignPlayerAndBotStates(selectedPlayerType); + + SetCanRollDiceForUser(!botTypesInGame.Contains(selectedPlayerType)); } private void InitBotRuntimeData() @@ -238,7 +240,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader { Debug.Log($"Switching player"); SwitchPlayer(); - SetCanRollDiceForUser(true); } } @@ -270,7 +271,11 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader // What happens when you get a 6 private void SelectPawnFromBotBase() { - if (canSwitchPlayer || availPlayers.Count() < 1 && !CanRollDiceAgain || !botTypesInGame.Contains(currentPlayerTypeTurn)) return; // Have a better check here + if (canSwitchPlayer || availPlayers.Count() < 1 && !CanRollDiceAgain || !botTypesInGame.Contains(currentPlayerTypeTurn)) + { + Debug.Log($"returning from SelectPawnFromBotBase"); + return; // Have a better check here + } Debug.Log($"CallTest: SelectPawnFromBotBase: {currentPlayerTypeTurn}"); var botPawnsDictForCurrentPlayer = botRuntimeMovementData[currentPlayerTypeTurn]; // set the data inside this dict @@ -449,7 +454,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader Debug.Log($"### AreAllPawnsInFinishingPath"); if (AreAllPawnsInFinishingPath()) { - SetCanRollDiceForUser(true); + SetCanRollDiceForUser(!botTypesInGame.Contains(currentPlayerTypeTurn)); return; } @@ -790,10 +795,6 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader } SwitchPlayer(playerPawn); - if (!CanRollDiceAgain) - { - SetCanRollDiceForUser(true); - } } }, index); @@ -900,21 +901,20 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader { CanRollDiceAgain = true; if (playerPawn.IsBotPlayer) - CheckDiceRollForBot(playerPawn); + CheckDiceRollForBot(playerPawn); + else + SetCanRollDiceForUser(true); } } else { if (CheckForMaxDiceRollAttempt()) { - SetCanRollDiceForUser(true); return; } SwitchPlayer(); } - - SetCanRollDiceForUser(true); } }, index); @@ -922,8 +922,7 @@ public class GameplayManager : MonoBehaviour, IBase, IBootLoader, IDataLoader private void SetCanRollDiceForUser(bool state) { - // if (botTypesInGame.Contains(playerType)) return; - - CanRollDice = state; + CanRollDiceForUser = state; + Debug.Log($"CAnRollDiceForUser: {CanRollDiceForUser}"); } } diff --git a/Assets/Scripts/Input/DiceRoller.cs b/Assets/Scripts/Input/DiceRoller.cs index 7dfb4fc..b88f281 100644 --- a/Assets/Scripts/Input/DiceRoller.cs +++ b/Assets/Scripts/Input/DiceRoller.cs @@ -30,8 +30,18 @@ public class DiceRoller : MonoBehaviour SoundManager soundManager = InterfaceManager.Instance?.GetInterfaceInstance(); soundManager?.PlayGameSoundClip(SoundType.Dice); - int currentRolledVal = // Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1); - diceTestValue != 0 ? diceTestValue : Random.Range(1, Ludo_3D_Constants.Max_Dice_Rolls + 1); - inputManager.SetDiceRollValue(currentRolledVal); + inputManager.SetDiceRollValue(rolledVal); + } + + public void HandleDiceViewForUser() + { + if (!inputManager.GameplayManager.CanRollDiceForUser) return; + + diceView.Roll(onComplete: (rolledVal) => OnUserDiceRollComplete(rolledVal), false); + } + + public void HandleDiceViewForBot(Action onComplete) + { + diceView.Roll(onComplete: (val) => onComplete?.Invoke(val), true); } }