From 1e95378bb13c91bdd76c1b39128483aab155054e Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 24 Feb 2025 13:59:06 +0100 Subject: [PATCH] Implemented room blocking in game. --- .../{ => Rooms}/BossRoom.cs | 2 +- .../{ => Rooms}/MonsterRoom.cs | 2 +- .../DungeonMapGenerator/{ => Rooms}/Room.cs | 7 +- .../Assets/Plugins/DiceProbabilities.dll | Bin 6656 -> 6656 bytes .../Assets/Plugins/DungeonMapGenerator.dll | Bin 33280 -> 33792 bytes .../Assets/Resources/Rooms/Room.prefab | 8 +- PuzzleGameProject/Assets/Scenes/GoodMap.unity | 12531 ++++++++++++++++ .../Assets/Scenes/GoodMap.unity.meta | 7 + PuzzleGameProject/Assets/Scenes/good.unity | 12389 +++++++++++++++ .../Assets/Scenes/good.unity.meta | 7 + .../Scripts/Abilities/ChestRewardSelection.cs | 2 +- .../Assets/Scripts/ColorHelper.cs | 5 +- .../DungeonGenerator/DungeonMapLoader.cs | 55 +- .../Assets/Scripts/GameManager.cs | 2 +- .../Assets/Scripts/Rooms/EmptyRoom.cs | 5 +- .../Assets/Scripts/Rooms/Locks/Lock.cs | 52 + .../Scripts/Rooms/Locks/MatchingDiceLock.cs | 22 + .../Assets/Scripts/Rooms/Locks/NumberLock.cs | 21 + .../Assets/Scripts/Rooms/Monster Room.cs | 7 +- .../Assets/Scripts/Rooms/Room.cs | 49 +- .../Assets/Scripts/Rooms/RoomReward.cs | 31 - .../Assets/Scripts/Rooms/RoomRewards.cs | 31 + ...RoomReward.cs.meta => RoomRewards.cs.meta} | 0 PuzzleGameProject/Assets/Scripts/UIManager.cs | 2 +- 24 files changed, 25172 insertions(+), 65 deletions(-) rename DungeonMapGenerator/DungeonMapGenerator/{ => Rooms}/BossRoom.cs (88%) rename DungeonMapGenerator/DungeonMapGenerator/{ => Rooms}/MonsterRoom.cs (91%) rename DungeonMapGenerator/DungeonMapGenerator/{ => Rooms}/Room.cs (97%) create mode 100644 PuzzleGameProject/Assets/Scenes/GoodMap.unity create mode 100644 PuzzleGameProject/Assets/Scenes/GoodMap.unity.meta create mode 100644 PuzzleGameProject/Assets/Scenes/good.unity create mode 100644 PuzzleGameProject/Assets/Scenes/good.unity.meta delete mode 100644 PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs create mode 100644 PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs rename PuzzleGameProject/Assets/Scripts/Rooms/{RoomReward.cs.meta => RoomRewards.cs.meta} (100%) diff --git a/DungeonMapGenerator/DungeonMapGenerator/BossRoom.cs b/DungeonMapGenerator/DungeonMapGenerator/Rooms/BossRoom.cs similarity index 88% rename from DungeonMapGenerator/DungeonMapGenerator/BossRoom.cs rename to DungeonMapGenerator/DungeonMapGenerator/Rooms/BossRoom.cs index 49a347a..3939b8b 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/BossRoom.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Rooms/BossRoom.cs @@ -1,4 +1,4 @@ -namespace DungeonMapGenerator +namespace DungeonMapGenerator.Rooms { public class BossRoom : MonsterRoom { diff --git a/DungeonMapGenerator/DungeonMapGenerator/MonsterRoom.cs b/DungeonMapGenerator/DungeonMapGenerator/Rooms/MonsterRoom.cs similarity index 91% rename from DungeonMapGenerator/DungeonMapGenerator/MonsterRoom.cs rename to DungeonMapGenerator/DungeonMapGenerator/Rooms/MonsterRoom.cs index 8cdeef4..eb9157f 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/MonsterRoom.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Rooms/MonsterRoom.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace DungeonMapGenerator +namespace DungeonMapGenerator.Rooms { public class MonsterRoom : Room { diff --git a/DungeonMapGenerator/DungeonMapGenerator/Room.cs b/DungeonMapGenerator/DungeonMapGenerator/Rooms/Room.cs similarity index 97% rename from DungeonMapGenerator/DungeonMapGenerator/Room.cs rename to DungeonMapGenerator/DungeonMapGenerator/Rooms/Room.cs index b782b77..b270497 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Room.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Rooms/Room.cs @@ -4,7 +4,7 @@ using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Converters; -namespace DungeonMapGenerator +namespace DungeonMapGenerator.Rooms { public enum RoomSide { @@ -70,6 +70,11 @@ namespace DungeonMapGenerator { _loot.Add(loot); } + + public List GetLoot() + { + return _loot; + } public HashSet GetAdjacentRoomIds() { diff --git a/PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll b/PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll index b616e06020c97b8ab2566414a0b96dd2a8624124..7c0926502f1fd18e4b8a1e82bde5b226316377ba 100644 GIT binary patch delta 237 zcmZoLX)u}4!7@`}?xu}B8~6k~w!HZF{$sqytlw$s0S42RH~a8cG8r3MSQ=O)86~Eg zCmWg>878G!n53nq7$uq;85*P{Cs~>pC7Pxhm?tqnK>Y2S^C$lh3=pU@%az&QW$3=Z zV0p%R#_FGwBZO)dpn~c!L7-~+HAl;A&QEFiFS*@u{^qYj)-3*p3>FNQ3)-3*}3~3Ao49Q>&VjD4- zF{FaYWFX6u!5ql81d69ISOB3hgDHa{m`nreNn$Vo${K)a3!utG2Gh;;;*CrIj=)Qf diff --git a/PuzzleGameProject/Assets/Plugins/DungeonMapGenerator.dll b/PuzzleGameProject/Assets/Plugins/DungeonMapGenerator.dll index b3c643e21c329d971c4ccde5d91e08727cda6abf..6c279a4e3388e916a306ebc02ebd0a831f164386 100644 GIT binary patch delta 14087 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 GameObject monsterRoomPrefab = Resources.Load(MONSTER_ROOM); GameObject normalRoomPrefab = Resources.Load(NORMAL_ROOM); + + Dictionary gameObjectRoomPairs = new Dictionary(); GameObject bossRoomGO = PrefabUtility.InstantiatePrefab(bossRoomPrefab, gameObject.transform) as GameObject; bossRoomGO.transform.position = ConvertToUnityPosition(map.GetBossRoom().GetCenterOfRoom(), map.Width, map.Height); - AddLockToRoomObject(bossRoomGO, map.GetBossRoom().Lock.GetLock()); - foreach (DungeonMapGenerator.Lock extraLock in map.GetBossRoom().ExtraLocks) + BossRoom bossRoom = map.GetBossRoom(); + gameObjectRoomPairs[bossRoomGO] = bossRoom; + AddLockToRoomObject(bossRoomGO, bossRoom.Lock.GetLock()); + foreach (DungeonMapGenerator.Lock extraLock in bossRoom.ExtraLocks) { AddLockToRoomObject(bossRoomGO, extraLock.GetLock()); } - _roomIdToGameObject[map.GetBossRoom().Id] = bossRoomGO; + AddRewardsToRoomObject(bossRoomGO, bossRoom.GetLoot()); + _roomIdToGameObject[bossRoom.Id] = bossRoomGO; foreach (var monsterRoom in map.GetMonsterRooms()) { GameObject monsterRoomGO = PrefabUtility.InstantiatePrefab(monsterRoomPrefab, gameObject.transform) as GameObject; monsterRoomGO.transform.position = ConvertToUnityPosition(monsterRoom.GetCenterOfRoom(), map.Width, map.Height); + gameObjectRoomPairs[monsterRoomGO] = monsterRoom; AddLockToRoomObject(monsterRoomGO, monsterRoom.Lock.GetLock()); foreach (DungeonMapGenerator.Lock extraLock in monsterRoom.ExtraLocks) { AddLockToRoomObject(monsterRoomGO, extraLock.GetLock()); } + AddRewardsToRoomObject(monsterRoomGO, monsterRoom.GetLoot()); _roomIdToGameObject[monsterRoom.Id] = monsterRoomGO; } @@ -51,7 +59,9 @@ namespace DungeonGenerator { GameObject normalRoomGO = PrefabUtility.InstantiatePrefab(normalRoomPrefab, gameObject.transform) as GameObject; normalRoomGO.transform.position = ConvertToUnityPosition(normalRoom.GetCenterOfRoom(), map.Width, map.Height); + gameObjectRoomPairs[normalRoomGO] = normalRoom; AddLockToRoomObject(normalRoomGO, normalRoom.Lock.GetLock()); + AddRewardsToRoomObject(normalRoomGO, normalRoom.GetLoot()); _roomIdToGameObject[normalRoom.Id] = normalRoomGO; } @@ -59,8 +69,10 @@ namespace DungeonGenerator { GameObject entranceRoomGO = PrefabUtility.InstantiatePrefab(normalRoomPrefab, gameObject.transform) as GameObject; entranceRoomGO.transform.position = ConvertToUnityPosition(entranceRoom.GetCenterOfRoom(), map.Width, map.Height); + gameObjectRoomPairs[entranceRoomGO] = entranceRoom; entranceRoomGO.GetComponent().IsEntrance = true; AddLockToRoomObject(entranceRoomGO, entranceRoom.Lock.GetLock()); + AddRewardsToRoomObject(entranceRoomGO, entranceRoom.GetLoot()); _roomIdToGameObject[entranceRoom.Id] = entranceRoomGO; } @@ -73,6 +85,14 @@ namespace DungeonGenerator roomComponent.AdjacentRooms.Add(_roomIdToGameObject[id]); } } + + foreach (var kvp in gameObjectRoomPairs) + { + if (kvp.Value.GetType() == typeof(DungeonMapGenerator.Rooms.MonsterRoom) || kvp.Value.GetType() == typeof(DungeonMapGenerator.Rooms.BossRoom)) + { + AddBlockingRooms(kvp.Key.GetComponent(), (DungeonMapGenerator.Rooms.MonsterRoom)kvp.Value); + } + } } private Vector3 ConvertToUnityPosition(Point dungeonPosition, int mapWidth, int mapHeight) @@ -112,5 +132,34 @@ namespace DungeonGenerator break; } } + + private void AddRewardsToRoomObject(GameObject roomGO, List loot) + { + RoomRewards rewards = roomGO.AddComponent(); + foreach (LootType type in loot) + { + switch (type) + { + case LootType.Chest: + rewards.Chest = true; + break; + case LootType.Diamond: + rewards.Diamonds++; + break; + case LootType.Damage: + rewards.Damage++; + break; + } + } + } + + private void AddBlockingRooms(Room roomComponent, DungeonMapGenerator.Rooms.MonsterRoom room) + { + foreach (var blockingRoomId in room.GetBlockingRoomIds()) + { + roomComponent.AddBlockingRoom(_roomIdToGameObject[blockingRoomId].GetComponent()); + + } + } } } diff --git a/PuzzleGameProject/Assets/Scripts/GameManager.cs b/PuzzleGameProject/Assets/Scripts/GameManager.cs index 12a9e93..3b1ad53 100644 --- a/PuzzleGameProject/Assets/Scripts/GameManager.cs +++ b/PuzzleGameProject/Assets/Scripts/GameManager.cs @@ -63,7 +63,7 @@ public class GameManager : MonoBehaviour _dicePairTwo = new DicePair(); } - void HandleRoomExploredByDice(object sender, Room room) { + void HandleRoomExploredByDice(Room room) { if (State == GameState.PickRoomOne) { ChangeState(GameState.PickDiceTwo); diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/EmptyRoom.cs b/PuzzleGameProject/Assets/Scripts/Rooms/EmptyRoom.cs index 4772fed..dc11fb6 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/EmptyRoom.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/EmptyRoom.cs @@ -19,10 +19,7 @@ public class EmptyRoom : Room public override void SetRoomExplored() { _isExplored = true; UnhighlightRoomAsOption(); - if (roomReward != null) - { - roomReward.TriggerGetReward(); - } + TriggerRoomRewards(); SetExploredGUI(); } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/Lock.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/Lock.cs index c958f88..783b4f9 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/Lock.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/Lock.cs @@ -2,13 +2,38 @@ using System; using Unity.VisualScripting; using UnityEngine; using System.Collections.Generic; +using TMPro; public abstract class Lock : MonoBehaviour { + // Room that must be explored before lock can be unlocked. [SerializeField] protected Room blockingRoom; + private TextMeshProUGUI _lockText; public event Action Unlocked; + public abstract override bool Equals(object other); + + public override int GetHashCode() => GetHashCode(); + + public void OnEnable() + { + if (blockingRoom != null) + { + blockingRoom.ThisRoomExploredByTorch += HandleBlockingRoomExplored; + blockingRoom.RoomExploredByDice += HandleBlockingRoomExplored; + } + } + + public void OnDisable() + { + if (blockingRoom != null) + { + blockingRoom.ThisRoomExploredByTorch -= HandleBlockingRoomExplored; + blockingRoom.RoomExploredByDice -= HandleBlockingRoomExplored; + } + } + public virtual bool CheckIfKeyFits(DicePair dicePair) { if (blockingRoom == null || blockingRoom.GetRoomExplored()) @@ -27,8 +52,35 @@ public abstract class Lock : MonoBehaviour } } + public void SetBlockingRoom(Room room) + { + blockingRoom = room; + } + + public virtual void AssignGUI(TextMeshProUGUI text) + { + _lockText = text; + if (blockingRoom != null) + { + _lockText.alpha = ColorHelper.TEXT_FADED_OPACITY; + } + } + + private void HandleBlockingRoomExplored(Room room) + { + SetBlockingRoomExploredGUI(); + } + protected virtual void OnUnlock() { Unlocked?.Invoke(); } + + private void SetBlockingRoomExploredGUI() + { + if (_lockText != null) + { + _lockText.alpha = ColorHelper.TEXT_FULL_OPACITY; + } + } } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/MatchingDiceLock.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/MatchingDiceLock.cs index 62f1f56..1ec5892 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/MatchingDiceLock.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/MatchingDiceLock.cs @@ -1,8 +1,24 @@ +using TMPro; using Unity.VisualScripting; using UnityEngine; public class MatchingDiceLock : Lock { + public override bool Equals(object obj) + { + if (obj is MatchingDiceLock otherLock) + { + // Add meaningful comparison logic if there are properties that define equality. + return true; // Placeholder, update as needed. + } + return false; + } + + public override int GetHashCode() + { + return GetType().GetHashCode(); // Update if there are meaningful properties to hash. + } + public override bool CheckIfKeyFits(DicePair dicePair) { if (base.CheckIfKeyFits(dicePair) && dicePair.CheckIfResultsMatch()) @@ -12,4 +28,10 @@ public class MatchingDiceLock : Lock return false; } + + public override void AssignGUI(TextMeshProUGUI text) + { + base.AssignGUI(text); + text.SetText("="); + } } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs index d25775d..1000bd6 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs @@ -1,9 +1,24 @@ +using TMPro; using UnityEngine; public class NumberLock : Lock { [SerializeField] private int number; + public override bool Equals(object obj) + { + if (obj is NumberLock otherLock) + { + return otherLock.GetNumber() == number; + } + return false; + } + + public override int GetHashCode() + { + return number.GetHashCode(); + } + public override bool CheckIfKeyFits(DicePair dicePair) { if (base.CheckIfKeyFits(dicePair) && dicePair.Sum() == number) @@ -23,4 +38,10 @@ public class NumberLock : Lock { return number; } + + public override void AssignGUI(TextMeshProUGUI text) + { + base.AssignGUI(text); + text.SetText(number.ToString()); + } } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Monster Room.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Monster Room.cs index 4be0c49..e967c51 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Monster Room.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Monster Room.cs @@ -22,7 +22,7 @@ public class MonsterRoom : Room for (int i = 1; i < _locks.Length; i++) { lockToDuplicate = DuplicateToTheLeft(lockToDuplicate, ((RectTransform)lockToDuplicate.transform).rect.width); - lockToDuplicate.GetComponent().text = ((NumberLock)_locks[i]).GetNumber().ToString(); + SetLockGUI(lockToDuplicate.GetComponent(), _locks[i]); } _healthTicks = new GameObject[_health]; @@ -54,10 +54,7 @@ public class MonsterRoom : Room { _isExplored = true; UnhighlightRoomAsOption(); - if (roomReward != null) - { - roomReward.TriggerGetReward(); - } + TriggerRoomRewards(); SetExploredGUI(); } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Room.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Room.cs index ca28ac7..0301915 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Room.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Room.cs @@ -3,6 +3,7 @@ using System.Collections; using TMPro; using UnityEngine; using System.Collections.Generic; +using System.Linq; using Unity.VisualScripting; using UnityEngine.Serialization; @@ -14,9 +15,10 @@ public abstract class Room : MonoBehaviour [SerializeField] private Sprite litRoom; [FormerlySerializedAs("adjacentRooms")] [SerializeField] public List AdjacentRooms; public bool IsEntrance; - [SerializeField] protected RoomReward roomReward; + [SerializeField] protected RoomRewards roomRewards; - public event EventHandler RoomExploredByDice; + public event Action RoomExploredByDice; + public event Action ThisRoomExploredByTorch; public static event Action RoomExploredByTorch; private DicePair _diceSelected; @@ -54,6 +56,31 @@ public abstract class Room : MonoBehaviour gameObject.GetComponent().sprite = litRoom; } + public Lock[] GetLocks() + { + if (_locks != null) + { + return _locks; + } + + return gameObject.GetComponents(); + } + + public void AddBlockingRoom(Room blockingRoom) + { + Lock[] locks = gameObject.GetComponents(); + foreach (Lock _lock in locks) + { + foreach (Lock blockingRoomLocks in blockingRoom.GetLocks()) + { + if (blockingRoomLocks.Equals(_lock)) + { + _lock.SetBlockingRoom(blockingRoom); + } + } + } + } + public abstract void SetRoomExplored(); protected void SetExploredGUI() @@ -69,6 +96,7 @@ public abstract class Room : MonoBehaviour SetPropertiesOfEntrance(); } _locks = gameObject.GetComponents(); + roomRewards = gameObject.GetComponent(); } protected void HighlightRoomAsOption() @@ -115,24 +143,23 @@ public abstract class Room : MonoBehaviour } protected virtual void OnRoomExploredByDice() { - RoomExploredByDice?.Invoke(this, this); + RoomExploredByDice?.Invoke(this); } protected void SetLockGUI(TextMeshProUGUI text, Lock _lock) { - if (_lock is NumberLock ) - { - text.SetText(((NumberLock)_locks[0]).GetNumber().ToString()); - } - else if (_lock is MatchingDiceLock) - { - text.SetText("="); - } + _lock.AssignGUI(text); + } + + protected void TriggerRoomRewards() + { + roomRewards.TriggerGetReward(); } private void OnRoomExploredByTorch() { RoomExploredByTorch?.Invoke(this); + ThisRoomExploredByTorch?.Invoke(this); } // Check if the room is valid to be explored. If so trigger the event. diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs b/PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs deleted file mode 100644 index ac6ed41..0000000 --- a/PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using UnityEngine; - -public class RoomReward : MonoBehaviour -{ - public static event Action DiamondsRewarded; - public static event Action ChestRewarded; - public static event Action DamageDealt; - - [SerializeField] private int diamonds; - [SerializeField] private int damage; - [SerializeField] private bool chest; - - public void TriggerGetReward() - { - if (diamonds > 0) - { - DiamondsRewarded?.Invoke(diamonds); - } - - if (chest) - { - ChestRewarded?.Invoke(); - } - - if (damage > 0) - { - DamageDealt?.Invoke(damage); - } - } -} diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs b/PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs new file mode 100644 index 0000000..b3c97c4 --- /dev/null +++ b/PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs @@ -0,0 +1,31 @@ +using System; +using UnityEngine; + +public class RoomRewards : MonoBehaviour +{ + public static event Action DiamondsRewarded; + public static event Action ChestRewarded; + public static event Action DamageDealt; + + [SerializeField] public int Diamonds = 0; + [SerializeField] public int Damage = 0; + [SerializeField] public bool Chest = false; + + public void TriggerGetReward() + { + if (Diamonds > 0) + { + DiamondsRewarded?.Invoke(Diamonds); + } + + if (Chest) + { + ChestRewarded?.Invoke(); + } + + if (Damage > 0) + { + DamageDealt?.Invoke(Damage); + } + } +} diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs.meta b/PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs.meta similarity index 100% rename from PuzzleGameProject/Assets/Scripts/Rooms/RoomReward.cs.meta rename to PuzzleGameProject/Assets/Scripts/Rooms/RoomRewards.cs.meta diff --git a/PuzzleGameProject/Assets/Scripts/UIManager.cs b/PuzzleGameProject/Assets/Scripts/UIManager.cs index 92d0bed..5050917 100644 --- a/PuzzleGameProject/Assets/Scripts/UIManager.cs +++ b/PuzzleGameProject/Assets/Scripts/UIManager.cs @@ -7,7 +7,7 @@ public class UIManager : MonoBehaviour [SerializeField] private GameObject chestRewardSelectionUI; private void OnEnable() { - RoomReward.ChestRewarded += HandleChestRewarded; + RoomRewards.ChestRewarded += HandleChestRewarded; } private void HandleChestRewarded()