Add different type of inventory item (armor)

This commit is contained in:
2024-09-03 23:37:49 -07:00
parent 19d3c40fef
commit 9a24ebf058
12 changed files with 59 additions and 10 deletions

View File

@@ -54,7 +54,7 @@ public class GameRepo : IGameRepo
_isInventoryScreenOpened = new AutoProp<bool>(false); _isInventoryScreenOpened = new AutoProp<bool>(false);
_isPaused = new AutoProp<bool>(false); _isPaused = new AutoProp<bool>(false);
_playerGlobalPosition = new AutoProp<Vector3>(Vector3.Zero); _playerGlobalPosition = new AutoProp<Vector3>(Vector3.Zero);
_equippedWeapon = new Weapon() { InventoryInfo = WeaponInfo.Default }; _equippedWeapon = new Weapon();
} }
public void Pause() public void Pause()

View File

@@ -0,0 +1,9 @@
using Godot;
namespace GameJamDungeon
{
public abstract partial class InventoryItem : Node3D
{
public abstract InventoryItemInfo InventoryInfo { get; set; }
}
}

8
src/items/armor/Armor.cs Normal file
View File

@@ -0,0 +1,8 @@
using GameJamDungeon;
using Godot;
public partial class Armor : InventoryItem
{
[Export]
public override InventoryItemInfo InventoryInfo { get; set; }
}

View File

@@ -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="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"] [node name="Armor" type="Node3D"]
script = ExtResource("1_cmjpq")
InventoryInfo = ExtResource("2_eftit")
[node name="Sprite3D" type="Sprite3D" parent="."] [node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2 billboard = 2

View File

@@ -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."

View File

@@ -1,7 +1,15 @@
using GameJamDungeon;
using Godot; using Godot;
public partial class Weapon : Node3D public partial class Weapon : InventoryItem
{ {
public Weapon()
{
_inventoryInfo = WeaponInfo.Default;
}
[Export] [Export]
public WeaponInfo InventoryInfo; private WeaponInfo _inventoryInfo { get; set; }
public override InventoryItemInfo InventoryInfo { get => _inventoryInfo; set => _inventoryInfo = value as WeaponInfo; }
} }

View File

@@ -6,7 +6,7 @@
[node name="CommonSword" type="Node3D"] [node name="CommonSword" type="Node3D"]
script = ExtResource("1_sr3bh") script = ExtResource("1_sr3bh")
InventoryInfo = ExtResource("2_krjts") _inventoryInfo = ExtResource("2_krjts")
[node name="Sprite3D" type="Sprite3D" parent="."] [node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2 billboard = 2

View File

@@ -6,7 +6,7 @@
[node name="RareSword" type="Node3D"] [node name="RareSword" type="Node3D"]
script = ExtResource("1_f8v7v") script = ExtResource("1_f8v7v")
InventoryInfo = ExtResource("2_6nmyd") _inventoryInfo = ExtResource("2_6nmyd")
[node name="Sprite3D" type="Sprite3D" parent="."] [node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2 billboard = 2

View File

@@ -6,7 +6,7 @@
[node name="UncommonSword" type="Node3D"] [node name="UncommonSword" type="Node3D"]
script = ExtResource("1_3o4dy") script = ExtResource("1_3o4dy")
InventoryInfo = ExtResource("2_ga52m") _inventoryInfo = ExtResource("2_ga52m")
[node name="Sprite3D" type="Sprite3D" parent="."] [node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2 billboard = 2

View File

@@ -56,7 +56,7 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
numberOfItemsToSpawn--; numberOfItemsToSpawn--;
var item = ItemDatabase.ItemScene[rng.RandWeighted(ItemDatabase.DropRate)]; var item = ItemDatabase.ItemScene[rng.RandWeighted(ItemDatabase.DropRate)];
var instantiatedItem = item.Instantiate<Weapon>(); var instantiatedItem = item.Instantiate<InventoryItem>();
instantiatedItem.Position = spawnPoint.Position; instantiatedItem.Position = spawnPoint.Position;
AddChild(instantiatedItem); AddChild(instantiatedItem);
GD.Print(instantiatedItem.InventoryInfo.Name); GD.Print(instantiatedItem.InventoryInfo.Name);

View File

@@ -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://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="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://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://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://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://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://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"] [sub_resource type="PlaneMesh" id="PlaneMesh_luhnj"]
size = Vector2(10, 10) 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")] [node name="ItemDatabase" parent="." instance=ExtResource("4_2mnb7")]
unique_name_in_owner = true 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")] [node name="EnemyDatabase" parent="." instance=ExtResource("5_owpbq")]
unique_name_in_owner = true unique_name_in_owner = true

View File

@@ -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://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="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://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://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://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"] [sub_resource type="PlaneMesh" id="PlaneMesh_j8q3j"]
size = Vector2(50, 10) size = Vector2(50, 10)
@@ -76,6 +80,8 @@ mesh = SubResource("PlaneMesh_j8q3j")
[node name="ItemDatabase" parent="." instance=ExtResource("4_c51bx")] [node name="ItemDatabase" parent="." instance=ExtResource("4_c51bx")]
unique_name_in_owner = true 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")] [node name="EnemyDatabase" parent="." instance=ExtResource("5_fabiq")]
unique_name_in_owner = true unique_name_in_owner = true