diff options
Diffstat (limited to 'scripts/Map')
| -rw-r--r-- | scripts/Map/DungeonGenerator.cs | 28 | ||||
| -rw-r--r-- | scripts/Map/MapData.cs | 10 |
2 files changed, 13 insertions, 25 deletions
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<EnemyDefinition>("res://assets/definitions/actor/Shadow.tres"), ]; - private static readonly Godot.Collections.Array<ConsumableItemDefinition> items = [ - GD.Load<HealingConsumableDefinition>("res://assets/definitions/Items/small_healing_potion.tres"), - GD.Load<ScrollConsumableDefinition>("res://assets/definitions/Items/mana_bolt_scroll.tres"), - GD.Load<GrimoireConsumableDefinition>("res://assets/definitions/Items/mana_bolt_grimoire.tres") + private static readonly Godot.Collections.Array<ItemResource> items = [ + GD.Load<ItemResource>("res://assets/definitions/Items/small_healing_potion.tres"), + GD.Load<ItemResource>("res://assets/definitions/Items/mana_bolt_grimoire.tres") ]; /// <summary> @@ -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 /// <summary> /// Lista de todos os itens dentro do mapa. /// </summary> - public Godot.Collections.Array<ConsumableItem> Items + public Godot.Collections.Array<ItemEntity> Items { get { - Godot.Collections.Array<ConsumableItem> list = []; + Godot.Collections.Array<ItemEntity> 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 /// </summary> /// <param name="pos">Posição</param> /// <returns>O primeiro item na posição, nulo se não houver.</returns> - public ConsumableItem GetFirstItemAtPosition(Vector2I pos) + public ItemEntity GetFirstItemAtPosition(Vector2I pos) { - foreach (ConsumableItem item in Items) + foreach (ItemEntity item in Items) { if (item.GridPosition == pos) { |
