Add different type of inventory item (armor)
This commit is contained in:
@@ -54,7 +54,7 @@ public class GameRepo : IGameRepo
|
||||
_isInventoryScreenOpened = new AutoProp<bool>(false);
|
||||
_isPaused = new AutoProp<bool>(false);
|
||||
_playerGlobalPosition = new AutoProp<Vector3>(Vector3.Zero);
|
||||
_equippedWeapon = new Weapon() { InventoryInfo = WeaponInfo.Default };
|
||||
_equippedWeapon = new Weapon();
|
||||
}
|
||||
|
||||
public void Pause()
|
||||
|
||||
9
src/items/InventoryItem.cs
Normal file
9
src/items/InventoryItem.cs
Normal 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
8
src/items/armor/Armor.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using GameJamDungeon;
|
||||
using Godot;
|
||||
|
||||
public partial class Armor : InventoryItem
|
||||
{
|
||||
[Export]
|
||||
public override InventoryItemInfo InventoryInfo { get; set; }
|
||||
}
|
||||
@@ -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
|
||||
|
||||
8
src/items/armor/resources/PatheticCoat.tres
Normal file
8
src/items/armor/resources/PatheticCoat.tres
Normal 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."
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -56,7 +56,7 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
|
||||
numberOfItemsToSpawn--;
|
||||
|
||||
var item = ItemDatabase.ItemScene[rng.RandWeighted(ItemDatabase.DropRate)];
|
||||
var instantiatedItem = item.Instantiate<Weapon>();
|
||||
var instantiatedItem = item.Instantiate<InventoryItem>();
|
||||
instantiatedItem.Position = spawnPoint.Position;
|
||||
AddChild(instantiatedItem);
|
||||
GD.Print(instantiatedItem.InventoryInfo.Name);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user