diff --git a/src/game/IGameRepo.cs b/src/game/IGameRepo.cs index 390f3f84..3b1a5ee3 100644 --- a/src/game/IGameRepo.cs +++ b/src/game/IGameRepo.cs @@ -54,7 +54,7 @@ public class GameRepo : IGameRepo _isInventoryScreenOpened = new AutoProp(false); _isPaused = new AutoProp(false); _playerGlobalPosition = new AutoProp(Vector3.Zero); - _equippedWeapon = new Weapon() { InventoryInfo = WeaponInfo.Default }; + _equippedWeapon = new Weapon(); } public void Pause() diff --git a/src/items/InventoryItem.cs b/src/items/InventoryItem.cs new file mode 100644 index 00000000..c7bacc23 --- /dev/null +++ b/src/items/InventoryItem.cs @@ -0,0 +1,9 @@ +using Godot; + +namespace GameJamDungeon +{ + public abstract partial class InventoryItem : Node3D + { + public abstract InventoryItemInfo InventoryInfo { get; set; } + } +} diff --git a/src/items/armor/Armor.cs b/src/items/armor/Armor.cs new file mode 100644 index 00000000..a138921c --- /dev/null +++ b/src/items/armor/Armor.cs @@ -0,0 +1,8 @@ +using GameJamDungeon; +using Godot; + +public partial class Armor : InventoryItem +{ + [Export] + public override InventoryItemInfo InventoryInfo { get; set; } +} diff --git a/src/items/armor/Armor.tscn b/src/items/armor/Armor.tscn index e3127b8f..08f6cc66 100644 --- a/src/items/armor/Armor.tscn +++ b/src/items/armor/Armor.tscn @@ -1,8 +1,12 @@ -[gd_scene load_steps=2 format=3 uid="uid://dorr7v1tkeiy0"] +[gd_scene load_steps=4 format=3 uid="uid://dorr7v1tkeiy0"] +[ext_resource type="Script" path="res://src/items/armor/Armor.cs" id="1_cmjpq"] [ext_resource type="Texture2D" uid="uid://cgoubcl86pib4" path="res://src/items/armor/armor.png" id="1_vpnem"] +[ext_resource type="Resource" uid="uid://chjmkb3aiomvr" path="res://src/items/armor/resources/PatheticCoat.tres" id="2_eftit"] [node name="Armor" type="Node3D"] +script = ExtResource("1_cmjpq") +InventoryInfo = ExtResource("2_eftit") [node name="Sprite3D" type="Sprite3D" parent="."] billboard = 2 diff --git a/src/items/armor/resources/PatheticCoat.tres b/src/items/armor/resources/PatheticCoat.tres new file mode 100644 index 00000000..abca83bb --- /dev/null +++ b/src/items/armor/resources/PatheticCoat.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="InventoryItemInfo" load_steps=2 format=3 uid="uid://chjmkb3aiomvr"] + +[ext_resource type="Script" path="res://src/items/InventoryItemInfo.cs" id="1_qywua"] + +[resource] +script = ExtResource("1_qywua") +Name = "Pathetic" +Description = "A pathetic coat." diff --git a/src/items/weapons/Weapon.cs b/src/items/weapons/Weapon.cs index 2cab468a..ff5c3526 100644 --- a/src/items/weapons/Weapon.cs +++ b/src/items/weapons/Weapon.cs @@ -1,7 +1,15 @@ +using GameJamDungeon; using Godot; -public partial class Weapon : Node3D +public partial class Weapon : InventoryItem { + public Weapon() + { + _inventoryInfo = WeaponInfo.Default; + } + [Export] - public WeaponInfo InventoryInfo; + private WeaponInfo _inventoryInfo { get; set; } + + public override InventoryItemInfo InventoryInfo { get => _inventoryInfo; set => _inventoryInfo = value as WeaponInfo; } } diff --git a/src/items/weapons/models/CommonSword.tscn b/src/items/weapons/models/CommonSword.tscn index 359799a7..d5548e6d 100644 --- a/src/items/weapons/models/CommonSword.tscn +++ b/src/items/weapons/models/CommonSword.tscn @@ -6,7 +6,7 @@ [node name="CommonSword" type="Node3D"] script = ExtResource("1_sr3bh") -InventoryInfo = ExtResource("2_krjts") +_inventoryInfo = ExtResource("2_krjts") [node name="Sprite3D" type="Sprite3D" parent="."] billboard = 2 diff --git a/src/items/weapons/models/RareSword.tscn b/src/items/weapons/models/RareSword.tscn index 17044537..6096d6b4 100644 --- a/src/items/weapons/models/RareSword.tscn +++ b/src/items/weapons/models/RareSword.tscn @@ -6,7 +6,7 @@ [node name="RareSword" type="Node3D"] script = ExtResource("1_f8v7v") -InventoryInfo = ExtResource("2_6nmyd") +_inventoryInfo = ExtResource("2_6nmyd") [node name="Sprite3D" type="Sprite3D" parent="."] billboard = 2 diff --git a/src/items/weapons/models/UncommonSword.tscn b/src/items/weapons/models/UncommonSword.tscn index ea3eaf35..5a98061e 100644 --- a/src/items/weapons/models/UncommonSword.tscn +++ b/src/items/weapons/models/UncommonSword.tscn @@ -6,7 +6,7 @@ [node name="UncommonSword" type="Node3D"] script = ExtResource("1_3o4dy") -InventoryInfo = ExtResource("2_ga52m") +_inventoryInfo = ExtResource("2_ga52m") [node name="Sprite3D" type="Sprite3D" parent="."] billboard = 2 diff --git a/src/map/dungeon/rooms/DungeonRoom.cs b/src/map/dungeon/rooms/DungeonRoom.cs index e07a66f8..28b46c6a 100644 --- a/src/map/dungeon/rooms/DungeonRoom.cs +++ b/src/map/dungeon/rooms/DungeonRoom.cs @@ -56,7 +56,7 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide(); + var instantiatedItem = item.Instantiate(); instantiatedItem.Position = spawnPoint.Position; AddChild(instantiatedItem); GD.Print(instantiatedItem.InventoryInfo.Name); diff --git a/src/map/dungeon/rooms/Room1.tscn b/src/map/dungeon/rooms/Room1.tscn index fb550052..056e21ed 100644 --- a/src/map/dungeon/rooms/Room1.tscn +++ b/src/map/dungeon/rooms/Room1.tscn @@ -1,12 +1,16 @@ -[gd_scene load_steps=15 format=3 uid="uid://dhpwwqow1ahrc"] +[gd_scene load_steps=19 format=3 uid="uid://dhpwwqow1ahrc"] [ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_0tfda"] [ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="1_ti7ur"] [ext_resource type="PackedScene" uid="uid://ckaw6wjmi0fom" path="res://src/map/dungeon/door/Door.tscn" id="2_mdawx"] [ext_resource type="PackedScene" uid="uid://twrj4wixcbu7" path="res://src/items/ItemDatabase.tscn" id="4_2mnb7"] +[ext_resource type="PackedScene" uid="uid://b6atdgf2e6e2t" path="res://src/items/weapons/models/CommonSword.tscn" id="4_chdi8"] [ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="5_owpbq"] [ext_resource type="PackedScene" uid="uid://dcgj5i52i76gj" path="res://src/enemy/enemy_types/FloatingEnemy.tscn" id="5_urvkv"] +[ext_resource type="PackedScene" uid="uid://cbb1fxllrnlyr" path="res://src/items/weapons/models/UncommonSword.tscn" id="5_viqv4"] +[ext_resource type="PackedScene" uid="uid://c10nhqq8su6pp" path="res://src/items/weapons/models/RareSword.tscn" id="6_c8gn4"] [ext_resource type="PackedScene" uid="uid://u1vmmakcoplh" path="res://src/enemy/enemy_types/Capricorn/Capricorn.tscn" id="6_hp0mx"] +[ext_resource type="PackedScene" uid="uid://dorr7v1tkeiy0" path="res://src/items/armor/Armor.tscn" id="7_bm50w"] [sub_resource type="PlaneMesh" id="PlaneMesh_luhnj"] size = Vector2(10, 10) @@ -62,6 +66,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.053, -3.59858, 0) [node name="ItemDatabase" parent="." instance=ExtResource("4_2mnb7")] unique_name_in_owner = true +ItemScene = Array[PackedScene]([ExtResource("7_bm50w"), ExtResource("4_chdi8"), ExtResource("5_viqv4"), ExtResource("6_c8gn4")]) +DropRate = PackedFloat32Array(0.25, 0.25, 0.25, 0.25) [node name="EnemyDatabase" parent="." instance=ExtResource("5_owpbq")] unique_name_in_owner = true diff --git a/src/map/dungeon/rooms/Room2.tscn b/src/map/dungeon/rooms/Room2.tscn index 742b7487..6c4a2e6f 100644 --- a/src/map/dungeon/rooms/Room2.tscn +++ b/src/map/dungeon/rooms/Room2.tscn @@ -1,10 +1,14 @@ -[gd_scene load_steps=14 format=3 uid="uid://bbwgmqy3evhh2"] +[gd_scene load_steps=18 format=3 uid="uid://bbwgmqy3evhh2"] [ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_o02dd"] [ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="2_jrlll"] +[ext_resource type="PackedScene" uid="uid://dorr7v1tkeiy0" path="res://src/items/armor/Armor.tscn" id="4_2bf0o"] [ext_resource type="PackedScene" uid="uid://twrj4wixcbu7" path="res://src/items/ItemDatabase.tscn" id="4_c51bx"] [ext_resource type="PackedScene" uid="uid://ckaw6wjmi0fom" path="res://src/map/dungeon/door/Door.tscn" id="4_nh0nj"] +[ext_resource type="PackedScene" uid="uid://b6atdgf2e6e2t" path="res://src/items/weapons/models/CommonSword.tscn" id="4_wqpwj"] [ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="5_fabiq"] +[ext_resource type="PackedScene" uid="uid://cbb1fxllrnlyr" path="res://src/items/weapons/models/UncommonSword.tscn" id="6_hb3sb"] +[ext_resource type="PackedScene" uid="uid://c10nhqq8su6pp" path="res://src/items/weapons/models/RareSword.tscn" id="7_c5lye"] [sub_resource type="PlaneMesh" id="PlaneMesh_j8q3j"] size = Vector2(50, 10) @@ -76,6 +80,8 @@ mesh = SubResource("PlaneMesh_j8q3j") [node name="ItemDatabase" parent="." instance=ExtResource("4_c51bx")] unique_name_in_owner = true +ItemScene = Array[PackedScene]([ExtResource("4_2bf0o"), ExtResource("4_wqpwj"), ExtResource("6_hb3sb"), ExtResource("7_c5lye")]) +DropRate = PackedFloat32Array(0.25, 0.25, 0.25, 0.25) [node name="EnemyDatabase" parent="." instance=ExtResource("5_fabiq")] unique_name_in_owner = true