diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index fd38988f..29574a36 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -227,6 +227,14 @@ public partial class Game : Node3D, IGame public void FloorExitReached() => GameState.Input(new GameState.Input.FloorExitEntered()); + public void ShowMinimap(bool isVisible) + { + if (_map.CurrentFloor is SpecialFloor) + InGameUI.ShowMinimap(false); + else + InGameUI.ShowMinimap(true); + } + public async Task UseItem(IBaseInventoryItem item) { if (item.ItemTag == ItemTag.MysteryItem) diff --git a/Zennysoft.Game.Ma/src/game/IGame.cs b/Zennysoft.Game.Ma/src/game/IGame.cs index 97093f85..aac4773f 100644 --- a/Zennysoft.Game.Ma/src/game/IGame.cs +++ b/Zennysoft.Game.Ma/src/game/IGame.cs @@ -2,7 +2,6 @@ namespace Zennysoft.Game.Ma; using Chickensoft.AutoInject; -using Chickensoft.Collections; using Chickensoft.GodotNodeInterfaces; using Chickensoft.SaveFileBuilder; using System; @@ -31,6 +30,8 @@ public interface IGame : IProvide, IProvide, IProvide public void FloorExitReached(); + public void ShowMinimap(bool visible); + public void GameOver(); public Task Save(); diff --git a/Zennysoft.Game.Ma/src/map/Map.cs b/Zennysoft.Game.Ma/src/map/Map.cs index eed1222a..e023791a 100644 --- a/Zennysoft.Game.Ma/src/map/Map.cs +++ b/Zennysoft.Game.Ma/src/map/Map.cs @@ -110,6 +110,10 @@ public partial class Map : Node3D, IMap SetupDungeonFloor(); CurrentFloor.FloorIsLoaded = true; CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1); + if (CurrentFloor is SpecialFloor) + Game.ShowMinimap(false); + else + Game.ShowMinimap(true); } private async Task LoadNewFloor(string sceneName) diff --git a/Zennysoft.Game.Ma/src/ui/in_game_ui/InGameUI.cs b/Zennysoft.Game.Ma/src/ui/in_game_ui/InGameUI.cs index 5a8b943a..f4d02c5f 100644 --- a/Zennysoft.Game.Ma/src/ui/in_game_ui/InGameUI.cs +++ b/Zennysoft.Game.Ma/src/ui/in_game_ui/InGameUI.cs @@ -11,6 +11,8 @@ public interface IInGameUI : IControl void CloseInventory(); public void SetAffinity(ElementType elementType); + + public void ShowMinimap(bool isVisible); } [Meta(typeof(IAutoNode))] @@ -32,6 +34,8 @@ public partial class InGameUI : Control, IInGameUI [Node] public DebugInfo DebugInfo { get; set; } = default!; + [Node] public Minimap MiniMap { get; set; } = default!; + [Node] public TextureRect EolicImg { get; set; } = default!; [Node] public TextureRect FerrumImg { get; set; } = default!; @@ -104,6 +108,11 @@ public partial class InGameUI : Control, IInGameUI } } + public void ShowMinimap(bool isVisible) + { + MiniMap.Visible = isVisible; + } + public void CloseInventory() { InventoryMenu.Hide();