Fixed bug where highlighted room would not unhighlight and refactored room highlighting to be habdled by rooms.

This commit is contained in:
Maxwell Dodd 2025-01-27 14:41:40 +01:00
parent bcfd42147b
commit 6a309804ad
2 changed files with 38 additions and 37 deletions

View file

@ -25,6 +25,8 @@ public class GameManager : MonoBehaviour
private DicePair _dicePairOne = new();
private DicePair _dicePairTwo = new();
public static event Action<GameState> StateChanged;
public static event Action<DicePair> DiceSelected;
public static event Action DiceUnselected;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
@ -87,7 +89,7 @@ public class GameManager : MonoBehaviour
if (_dicePairOne.AreBothDiceSelected())
{
ChangeState(GameState.PickRoomOne);
HighLightValidRoomsWithNumber(_dicePairOne);
DiceSelected?.Invoke(_dicePairOne);
}
break;
case GameState.PickDiceTwo:
@ -95,7 +97,7 @@ public class GameManager : MonoBehaviour
if (_dicePairTwo.AreBothDiceSelected())
{
ChangeState(GameState.PickRoomTwo);
HighLightValidRoomsWithNumber(_dicePairTwo);
DiceSelected?.Invoke(_dicePairTwo);
}
break;
default:
@ -113,7 +115,7 @@ public class GameManager : MonoBehaviour
ChangeState(GameState.PickDiceOne);
}
_dicePairOne.UnselectDie(die);
UnhighLightRoomsAsOptions();
DiceUnselected?.Invoke();
break;
case GameState.PickDiceTwo:
case GameState.PickRoomTwo:
@ -122,7 +124,7 @@ public class GameManager : MonoBehaviour
ChangeState(GameState.PickDiceTwo);
}
_dicePairTwo.UnselectDie(die);
UnhighLightRoomsAsOptions();
DiceUnselected?.Invoke();
break;
}
}
@ -132,26 +134,6 @@ public class GameManager : MonoBehaviour
StartNewTurn();
}
void HighLightValidRoomsWithNumber(DicePair pair)
{
foreach (Transform roomTransform in rooms.transform)
{
Room room = roomTransform.gameObject.GetComponent<Room>();
if (room.TryUnlock(pair) && room.IsValidRoomToExplore())
{
room.HighlightRoomAsOption();
}
}
}
void UnhighLightRoomsAsOptions()
{
foreach (Transform roomTransform in rooms.transform)
{
roomTransform.gameObject.GetComponent<Room>().UnhighlightRoomAsOption();
}
}
private void DiceRolled(object sender, EventArgs e)
{
if (state == GameState.RollDice)

View file

@ -3,11 +3,12 @@ using System.Collections;
using TMPro;
using UnityEngine;
using System.Collections.Generic;
using Unity.VisualScripting;
enum KeyType
internal enum KeyType
{
Number,
MatchinDice
MatchingDice
}
public class Room : MonoBehaviour
@ -23,10 +24,20 @@ public class Room : MonoBehaviour
private bool _isClickable = true;
private Color _roomNumberOriginalColor;
private void OnEnable() {
GameManager.StateChanged += HandleStateChange;
GameManager.DiceSelected += HandleDiceSelected;
GameManager.DiceUnselected += HandDiceUnselected;
}
private void OnDisable() {
GameManager.StateChanged -= HandleStateChange;
GameManager.DiceSelected -= HandleDiceSelected;
GameManager.DiceUnselected -= HandDiceUnselected;
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start() {
GameManager.StateChanged += HandleStateChange;
if (isEntrance) {
SetPropertiesOfEntrance();
}
@ -38,16 +49,12 @@ public class Room : MonoBehaviour
{
numberText.SetText(number.ToString());
}
else if (keyType == KeyType.MatchinDice)
else if (keyType == KeyType.MatchingDice)
{
numberText.SetText("=");
}
}
private void OnEnable() {
}
public void SetRoomExplored() {
_isExplored = true;
UnhighlightRoomAsOption();
@ -55,12 +62,12 @@ public class Room : MonoBehaviour
ColorHelper.AddColorTint(gameObject.GetComponent<SpriteRenderer>().color, Color.grey, 0.5f);
}
public void HighlightRoomAsOption()
private void HighlightRoomAsOption()
{
gameObject.GetComponentInChildren<TextMeshProUGUI>().color = Color.blue;
}
public void UnhighlightRoomAsOption()
private void UnhighlightRoomAsOption()
{
gameObject.GetComponentInChildren<TextMeshProUGUI>().color = _roomNumberOriginalColor;
}
@ -82,7 +89,7 @@ public class Room : MonoBehaviour
}
// Check if the room is valid to be explored. If so trigger the event.
public bool IsValidRoomToExplore() {
private bool IsValidRoomToExplore() {
if (_isExplored) {
return false;
}
@ -118,7 +125,7 @@ public class Room : MonoBehaviour
return true;
}
return false;
case KeyType.MatchinDice:
case KeyType.MatchingDice:
if (pair.DoResultsMatch())
{
return true;
@ -131,6 +138,7 @@ public class Room : MonoBehaviour
}
private void HandleStateChange(GameState state) {
UnhighlightRoomAsOption();
switch (state)
{
case GameState.PickDiceOne:
@ -144,4 +152,15 @@ public class Room : MonoBehaviour
break;
}
}
private void HandleDiceSelected(DicePair pair) {
if (TryUnlock(pair) && IsValidRoomToExplore())
{
HighlightRoomAsOption();
}
}
private void HandDiceUnselected() {
UnhighlightRoomAsOption();
}
}