From a1b0e6b5e7508b0efc487d989b8b484c260f4ffa Mon Sep 17 00:00:00 2001 From: Strieglitz Date: Tue, 18 Feb 2025 23:38:21 +0100 Subject: [PATCH] Added SceneNode Loading --- resources/Character.tres | 2 +- scenes/debug_level.tscn | 9 +++++++++ scripts/Attachment.gd | 7 +++++++ scripts/Character.gd | 11 +++++++++++ scripts/Equipment.gd | 7 +++++++ scripts/PlayerCharacter.gd | 1 + scripts/Weapon.gd | 11 +++++++++++ scripts/resources/Character/Character.gd | 5 ----- .../resources/Character/CharacterResource.gd | 13 +++++++++++++ .../Character/Equipment/EquipmentResource.gd | 17 +++++++++++++++++ .../{ => Character}/Equipment/EquipmentStats.gd | 3 +++ .../Character/Equipment/MechParts/Arms.gd | 3 +++ .../Character/Equipment/MechParts/Boots.gd | 3 +++ .../Character/Equipment/MechParts/Hydraulics.gd | 3 +++ .../Character/Equipment/MechParts/MechBase.gd | 10 ++++++++++ .../Equipment/MechParts/MechPartResource.gd | 3 +++ scripts/resources/Character/PlayerCharacter.gd | 3 --- scripts/resources/Equipment/MechParts/Arms.gd | 3 --- scripts/resources/Equipment/MechParts/Boots.gd | 3 --- .../resources/Equipment/MechParts/Hydraulics.gd | 3 --- .../resources/Equipment/MechParts/MechBase.gd | 7 ------- .../resources/Equipment/MechParts/MechPart.gd | 6 ------ scripts/resources/Stats/FireRate.gd | 13 +++++++++++++ .../Weapons/Attachments/AttachmentResource.gd | 13 +++++++++++++ .../Weapons/Attachments/AttachmentStats.gd | 6 ++++++ scripts/resources/Weapons/Weapon.gd | 5 ----- scripts/resources/Weapons/WeaponResource.gd | 13 +++++++++++++ scripts/resources/Weapons/WeaponStats.gd | 1 + 28 files changed, 148 insertions(+), 36 deletions(-) create mode 100644 scripts/Attachment.gd create mode 100644 scripts/Character.gd create mode 100644 scripts/Equipment.gd create mode 100644 scripts/PlayerCharacter.gd create mode 100644 scripts/Weapon.gd delete mode 100644 scripts/resources/Character/Character.gd create mode 100644 scripts/resources/Character/CharacterResource.gd create mode 100644 scripts/resources/Character/Equipment/EquipmentResource.gd rename scripts/resources/{ => Character}/Equipment/EquipmentStats.gd (74%) create mode 100644 scripts/resources/Character/Equipment/MechParts/Arms.gd create mode 100644 scripts/resources/Character/Equipment/MechParts/Boots.gd create mode 100644 scripts/resources/Character/Equipment/MechParts/Hydraulics.gd create mode 100644 scripts/resources/Character/Equipment/MechParts/MechBase.gd create mode 100644 scripts/resources/Character/Equipment/MechParts/MechPartResource.gd delete mode 100644 scripts/resources/Character/PlayerCharacter.gd delete mode 100644 scripts/resources/Equipment/MechParts/Arms.gd delete mode 100644 scripts/resources/Equipment/MechParts/Boots.gd delete mode 100644 scripts/resources/Equipment/MechParts/Hydraulics.gd delete mode 100644 scripts/resources/Equipment/MechParts/MechBase.gd delete mode 100644 scripts/resources/Equipment/MechParts/MechPart.gd create mode 100644 scripts/resources/Stats/FireRate.gd create mode 100644 scripts/resources/Weapons/Attachments/AttachmentResource.gd create mode 100644 scripts/resources/Weapons/Attachments/AttachmentStats.gd delete mode 100644 scripts/resources/Weapons/Weapon.gd create mode 100644 scripts/resources/Weapons/WeaponResource.gd diff --git a/resources/Character.tres b/resources/Character.tres index 996c44d..8f71bcb 100644 --- a/resources/Character.tres +++ b/resources/Character.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Character" load_steps=3 format=3 uid="uid://bd1ugbnlm08vv"] -[ext_resource type="Script" path="res://scripts/resources/Character/Character.gd" id="1_8yb2m"] +[ext_resource type="Script" path="res://scripts/resources/Character/CharacterResource.gd" id="1_8yb2m"] [ext_resource type="Resource" uid="uid://qcjre5wwbrs3" path="res://resources/PlayerStats.tres" id="2_rc7x1"] [resource] diff --git a/scenes/debug_level.tscn b/scenes/debug_level.tscn index ce0fe3b..c216810 100644 --- a/scenes/debug_level.tscn +++ b/scenes/debug_level.tscn @@ -9,5 +9,14 @@ shadow_enabled = true [node name="CSGBox3D" type="CSGBox3D" parent="."] transform = Transform3D(0.804543, 0.301369, -0.511748, -0.471444, 0.848123, -0.241718, 0.361179, 0.435734, 0.824431, 0, 0, 0) +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(0.804543, 0.301369, -0.511748, -0.471444, 0.848123, -0.241718, 0.361179, 0.435734, 0.824431, 0, 0, 0) + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D/CSGBox3D"] +transform = Transform3D(0.804543, 0.301369, -0.511748, -0.471444, 0.848123, -0.241718, 0.361179, 0.435734, 0.824431, 0, 0, 0) + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D/CSGBox3D/CSGBox3D"] +transform = Transform3D(0.804543, 0.301369, -0.511748, -0.471444, 0.848123, -0.241718, 0.361179, 0.435734, 0.824431, 0, 0, 0) + [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.901077, 0.433659, 0, -0.433659, 0.901077, 0, 1.21776, 2.12747) diff --git a/scripts/Attachment.gd b/scripts/Attachment.gd new file mode 100644 index 0000000..8fa0057 --- /dev/null +++ b/scripts/Attachment.gd @@ -0,0 +1,7 @@ +class_name Attachment extends Node3D + + +var stats: AttachmentStats + +func init_attachment(stats: AttachmentStats): + self.stats = stats; diff --git a/scripts/Character.gd b/scripts/Character.gd new file mode 100644 index 0000000..c5faaa3 --- /dev/null +++ b/scripts/Character.gd @@ -0,0 +1,11 @@ +class_name Character extends Node3D + + +var stats: CharacterStats +var equipments: Array[Equipment] + +func init_character(stats: CharacterStats): + self.stats = stats; + +func equip(newEquipment: Equipment)-> void: + equipments.append(newEquipment) diff --git a/scripts/Equipment.gd b/scripts/Equipment.gd new file mode 100644 index 0000000..6d5bdfd --- /dev/null +++ b/scripts/Equipment.gd @@ -0,0 +1,7 @@ +class_name Equipment extends Node3D + + +var stats: EquipmentStats + +func init_equipment(stats: EquipmentStats): + self.stats = stats; diff --git a/scripts/PlayerCharacter.gd b/scripts/PlayerCharacter.gd new file mode 100644 index 0000000..eb022be --- /dev/null +++ b/scripts/PlayerCharacter.gd @@ -0,0 +1 @@ +class_name PlayerCharacter extends Character diff --git a/scripts/Weapon.gd b/scripts/Weapon.gd new file mode 100644 index 0000000..aaa86a2 --- /dev/null +++ b/scripts/Weapon.gd @@ -0,0 +1,11 @@ +class_name Weapon extends Node3D + +var stats: WeaponStats +var attachments: Array[Attachment] + +func init_weapon(stats: WeaponStats): + self.stats = stats; + + +func attach(newAttachment: Attachment)-> void: + attachments.append(newAttachment) diff --git a/scripts/resources/Character/Character.gd b/scripts/resources/Character/Character.gd deleted file mode 100644 index 7958f66..0000000 --- a/scripts/resources/Character/Character.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Resource - -class_name Character - -@export var stats: CharacterStats diff --git a/scripts/resources/Character/CharacterResource.gd b/scripts/resources/Character/CharacterResource.gd new file mode 100644 index 0000000..f08fe42 --- /dev/null +++ b/scripts/resources/Character/CharacterResource.gd @@ -0,0 +1,13 @@ +extends Resource + +class_name CharacterResource + +@export var character_stats: CharacterStats +@export var character_scene: PackedScene + + +func instantiate(parent: Node3D)->Character: + var character_instance = character_scene.instantiate() as Character + character_instance.init_character(character_stats) + parent.add_child(character_instance) + return character_instance diff --git a/scripts/resources/Character/Equipment/EquipmentResource.gd b/scripts/resources/Character/Equipment/EquipmentResource.gd new file mode 100644 index 0000000..1923a18 --- /dev/null +++ b/scripts/resources/Character/Equipment/EquipmentResource.gd @@ -0,0 +1,17 @@ +extends Resource + +class_name EquipmentResource + +@export var name: String +@export var equipment_stats: EquipmentStats +@export var equipment_scene: PackedScene + + +func instantiate(parent: Node3D)->Equipment: + var equipment_instance = equipment_scene.instantiate() as Equipment + equipment_instance.init_Equipment(equipment_stats) + parent.add_child(equipment_instance) + return equipment_instance + +func get_stats()-> EquipmentStats: + return equipment_stats diff --git a/scripts/resources/Equipment/EquipmentStats.gd b/scripts/resources/Character/Equipment/EquipmentStats.gd similarity index 74% rename from scripts/resources/Equipment/EquipmentStats.gd rename to scripts/resources/Character/Equipment/EquipmentStats.gd index a65b670..8df73eb 100644 --- a/scripts/resources/Equipment/EquipmentStats.gd +++ b/scripts/resources/Character/Equipment/EquipmentStats.gd @@ -7,3 +7,6 @@ class_name EquipmentStats @export var shield: Shield @export var movementSpeed: MovementSpeed @export var damage: Damage + +func combine (other: EquipmentStats)->EquipmentStats: + return null diff --git a/scripts/resources/Character/Equipment/MechParts/Arms.gd b/scripts/resources/Character/Equipment/MechParts/Arms.gd new file mode 100644 index 0000000..1010283 --- /dev/null +++ b/scripts/resources/Character/Equipment/MechParts/Arms.gd @@ -0,0 +1,3 @@ +extends MechPartResource + +class_name Arms diff --git a/scripts/resources/Character/Equipment/MechParts/Boots.gd b/scripts/resources/Character/Equipment/MechParts/Boots.gd new file mode 100644 index 0000000..1c0b007 --- /dev/null +++ b/scripts/resources/Character/Equipment/MechParts/Boots.gd @@ -0,0 +1,3 @@ +extends MechPartResource + +class_name Boots diff --git a/scripts/resources/Character/Equipment/MechParts/Hydraulics.gd b/scripts/resources/Character/Equipment/MechParts/Hydraulics.gd new file mode 100644 index 0000000..a29158c --- /dev/null +++ b/scripts/resources/Character/Equipment/MechParts/Hydraulics.gd @@ -0,0 +1,3 @@ +extends MechPartResource + +class_name Hydraulics diff --git a/scripts/resources/Character/Equipment/MechParts/MechBase.gd b/scripts/resources/Character/Equipment/MechParts/MechBase.gd new file mode 100644 index 0000000..ec7479f --- /dev/null +++ b/scripts/resources/Character/Equipment/MechParts/MechBase.gd @@ -0,0 +1,10 @@ +extends MechPartResource + +class_name MechBase + +@export var boots: Boots +@export var arms: Arms +@export var hydraulics: Hydraulics + +func get_stats()-> EquipmentStats: + return boots.equipment_stats.combine(arms.equipment_stats).combine(hydraulics.equipment_stats) diff --git a/scripts/resources/Character/Equipment/MechParts/MechPartResource.gd b/scripts/resources/Character/Equipment/MechParts/MechPartResource.gd new file mode 100644 index 0000000..032c584 --- /dev/null +++ b/scripts/resources/Character/Equipment/MechParts/MechPartResource.gd @@ -0,0 +1,3 @@ +extends EquipmentResource + +class_name MechPartResource diff --git a/scripts/resources/Character/PlayerCharacter.gd b/scripts/resources/Character/PlayerCharacter.gd deleted file mode 100644 index c4b42fb..0000000 --- a/scripts/resources/Character/PlayerCharacter.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends Character - -@export var mech: MechBase diff --git a/scripts/resources/Equipment/MechParts/Arms.gd b/scripts/resources/Equipment/MechParts/Arms.gd deleted file mode 100644 index b3c4785..0000000 --- a/scripts/resources/Equipment/MechParts/Arms.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends MechPart - -class_name Arms diff --git a/scripts/resources/Equipment/MechParts/Boots.gd b/scripts/resources/Equipment/MechParts/Boots.gd deleted file mode 100644 index 0a853a1..0000000 --- a/scripts/resources/Equipment/MechParts/Boots.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends MechPart - -class_name Boots diff --git a/scripts/resources/Equipment/MechParts/Hydraulics.gd b/scripts/resources/Equipment/MechParts/Hydraulics.gd deleted file mode 100644 index 2d5fc9b..0000000 --- a/scripts/resources/Equipment/MechParts/Hydraulics.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends MechPart - -class_name Hydraulics diff --git a/scripts/resources/Equipment/MechParts/MechBase.gd b/scripts/resources/Equipment/MechParts/MechBase.gd deleted file mode 100644 index e06010b..0000000 --- a/scripts/resources/Equipment/MechParts/MechBase.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends MechPart - -class_name MechBase - -@export var boots: Boots -@export var arms: Arms -@export var hydraulics: Hydraulics diff --git a/scripts/resources/Equipment/MechParts/MechPart.gd b/scripts/resources/Equipment/MechParts/MechPart.gd deleted file mode 100644 index d033baa..0000000 --- a/scripts/resources/Equipment/MechParts/MechPart.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Resource - -class_name MechPart - -@export var name: String -@export var stats: EquipmentStats diff --git a/scripts/resources/Stats/FireRate.gd b/scripts/resources/Stats/FireRate.gd new file mode 100644 index 0000000..89ff0c3 --- /dev/null +++ b/scripts/resources/Stats/FireRate.gd @@ -0,0 +1,13 @@ +extends Resource + +class_name FireRate + +signal value_changed_signal(currentFireRate: int) + +@export var _value: int +var value: int: + get: + return _value + set(new_value): + value = new_value; + value_changed_signal.emit(_value) diff --git a/scripts/resources/Weapons/Attachments/AttachmentResource.gd b/scripts/resources/Weapons/Attachments/AttachmentResource.gd new file mode 100644 index 0000000..8d92b32 --- /dev/null +++ b/scripts/resources/Weapons/Attachments/AttachmentResource.gd @@ -0,0 +1,13 @@ +extends Resource + +class_name AttachmentResource + +@export var attachment_stats: AttachmentStats +@export var attachment_scene: PackedScene + + +func instantiate(parent: Node3D)->Attachment: + var attachment_instance = attachment_scene.instantiate() as Attachment + attachment_instance.init_Attachment(attachment_stats) + parent.add_child(attachment_instance) + return attachment_instance diff --git a/scripts/resources/Weapons/Attachments/AttachmentStats.gd b/scripts/resources/Weapons/Attachments/AttachmentStats.gd new file mode 100644 index 0000000..f038a1e --- /dev/null +++ b/scripts/resources/Weapons/Attachments/AttachmentStats.gd @@ -0,0 +1,6 @@ +extends Resource + +class_name AttachmentStats + +@export var damage: Damage +@export var fire_rate: FireRate diff --git a/scripts/resources/Weapons/Weapon.gd b/scripts/resources/Weapons/Weapon.gd deleted file mode 100644 index bf9a463..0000000 --- a/scripts/resources/Weapons/Weapon.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Resource - -class_name Weapon - -@export var name: String diff --git a/scripts/resources/Weapons/WeaponResource.gd b/scripts/resources/Weapons/WeaponResource.gd new file mode 100644 index 0000000..699ca7c --- /dev/null +++ b/scripts/resources/Weapons/WeaponResource.gd @@ -0,0 +1,13 @@ +extends Resource + +class_name WeaponResource + +@export var name: String +@export var weapon_stats: WeaponStats +@export var weapon_scene: PackedScene + +func instantiate(parent: Node3D)->Weapon: + var weapon_instance = weapon_scene.instantiate() as Weapon + weapon_instance.init_weapon(weapon_stats) + parent.add_child(weapon_instance) + return weapon_instance diff --git a/scripts/resources/Weapons/WeaponStats.gd b/scripts/resources/Weapons/WeaponStats.gd index cea8e0b..109409e 100644 --- a/scripts/resources/Weapons/WeaponStats.gd +++ b/scripts/resources/Weapons/WeaponStats.gd @@ -4,3 +4,4 @@ class_name WeaponStats @export var damage: Damage +@export var fire_rate: FireRate