From 639cd8cef403e9e66bf31e7888e786effac2b292 Mon Sep 17 00:00:00 2001 From: Matheus Date: Fri, 24 Oct 2025 21:25:15 -0300 Subject: refactor: Sistema de itens reescrito MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Em tese, este novo sistema é mais fácil de serializar. Descanse em paz pergaminhos, eu não quero reimplementá-los neste novo sistema. --- scripts/Map/DungeonGenerator.cs | 28 ++++++++-------------------- scripts/Map/MapData.cs | 10 +++++----- 2 files changed, 13 insertions(+), 25 deletions(-) (limited to 'scripts/Map') diff --git a/scripts/Map/DungeonGenerator.cs b/scripts/Map/DungeonGenerator.cs index 7dee0b4..7e447b0 100644 --- a/scripts/Map/DungeonGenerator.cs +++ b/scripts/Map/DungeonGenerator.cs @@ -21,10 +21,9 @@ public partial class DungeonGenerator : Node GD.Load("res://assets/definitions/actor/Shadow.tres"), ]; - private static readonly Godot.Collections.Array items = [ - GD.Load("res://assets/definitions/Items/small_healing_potion.tres"), - GD.Load("res://assets/definitions/Items/mana_bolt_scroll.tres"), - GD.Load("res://assets/definitions/Items/mana_bolt_grimoire.tres") + private static readonly Godot.Collections.Array items = [ + GD.Load("res://assets/definitions/Items/small_healing_potion.tres"), + GD.Load("res://assets/definitions/Items/mana_bolt_grimoire.tres") ]; /// @@ -275,7 +274,7 @@ public partial class DungeonGenerator : Node rng.RandiRange(room.Position.Y, room.End.Y - 1) ); - bool canPlace = true; + bool canPlace = items.Count > 0; foreach (Entity entity in data.Entities) { if (entity.GridPosition == position) @@ -288,21 +287,10 @@ public partial class DungeonGenerator : Node // Se possível, criamos um inimigo aleatório na posição escolhida. if (canPlace) { - ConsumableItemDefinition definition = items.PickRandom(); - if (definition is HealingConsumableDefinition hcDefinition) - { - HealingConsumable item = new(position, data, hcDefinition); - data.InsertEntity(item); - } - else if (definition is ScrollConsumableDefinition scroll) - { - ScrollConsumable item = new(position, data, scroll); - data.InsertEntity(item); - } else if (definition is GrimoireConsumableDefinition grimoire) - { - GrimoireConsumable item = new(position, data, grimoire); - data.InsertEntity(item); - } + ItemResource itemRes = items.PickRandom(); + Item item = new(itemRes); + ItemEntity itemEnt = new(position, data, item); + data.InsertEntity(itemEnt); } } } diff --git a/scripts/Map/MapData.cs b/scripts/Map/MapData.cs index 699295e..49e4ca0 100644 --- a/scripts/Map/MapData.cs +++ b/scripts/Map/MapData.cs @@ -70,14 +70,14 @@ public partial class MapData : RefCounted /// /// Lista de todos os itens dentro do mapa. /// - public Godot.Collections.Array Items + public Godot.Collections.Array Items { get { - Godot.Collections.Array list = []; + Godot.Collections.Array list = []; foreach (Entity entity in Entities) { - if (entity is ConsumableItem item) + if (entity is ItemEntity item) { list.Add(item); } @@ -207,9 +207,9 @@ public partial class MapData : RefCounted /// /// Posição /// O primeiro item na posição, nulo se não houver. - public ConsumableItem GetFirstItemAtPosition(Vector2I pos) + public ItemEntity GetFirstItemAtPosition(Vector2I pos) { - foreach (ConsumableItem item in Items) + foreach (ItemEntity item in Items) { if (item.GridPosition == pos) { -- cgit v1.2.3