diff --git a/resources/Character.tres b/resources/Character.tres index 8f71bcb..8933959 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/CharacterResource.gd" id="1_8yb2m"] +[ext_resource type="Script" path="res://scripts/resources/Entity/EntityResource.gd" id="1_8yb2m"] [ext_resource type="Resource" uid="uid://qcjre5wwbrs3" path="res://resources/PlayerStats.tres" id="2_rc7x1"] [resource] diff --git a/resources/PlayerStats.tres b/resources/PlayerStats.tres index 7f28fbb..4f63a7f 100644 --- a/resources/PlayerStats.tres +++ b/resources/PlayerStats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CharacterStats" load_steps=12 format=3 uid="uid://qcjre5wwbrs3"] [ext_resource type="Script" path="res://scripts/resources/Stats/Armor.gd" id="1_c7135"] -[ext_resource type="Script" path="res://scripts/resources/Character/CharacterStats.gd" id="1_xti0a"] +[ext_resource type="Script" path="res://scripts/resources/Entity/EntityStats.gd" id="1_xti0a"] [ext_resource type="Script" path="res://scripts/resources/Stats/Health.gd" id="2_hsnpy"] [ext_resource type="Script" path="res://scripts/resources/Stats/MaxHealth.gd" id="3_26tso"] [ext_resource type="Script" path="res://scripts/resources/Stats/MovementSpeed.gd" id="4_goc2a"] diff --git a/scripts/Character.gd b/scripts/Character.gd deleted file mode 100644 index c5faaa3..0000000 --- a/scripts/Character.gd +++ /dev/null @@ -1,11 +0,0 @@ -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/Enemie.gd b/scripts/Enemie.gd new file mode 100644 index 0000000..cb1170c --- /dev/null +++ b/scripts/Enemie.gd @@ -0,0 +1 @@ +class_name Enemie extends Entity diff --git a/scripts/Entity.gd b/scripts/Entity.gd new file mode 100644 index 0000000..c38a410 --- /dev/null +++ b/scripts/Entity.gd @@ -0,0 +1,44 @@ +class_name Entity extends Node3D + + +var stats: EntityStats +var equipments: Array[Equipment] + +func init_entity(stats: EntityStats): + self.stats = stats; + +func equip(newEquipment: Equipment)-> void: + equipments.append(newEquipment) + +func unequip(equipmentToRemove: Equipment)-> void: + equipments.erase(equipmentToRemove) + +func get_max_health()->int: + var max_health = stats.max_health + for equipment in equipments: + max_health += equipment + + return max_health + +func get_health()->int: + return stats.health.value + +func get_armor()->int: + var armor = stats.armor + for equipment in equipments: + armor += equipment.stats.armor + return armor + +func get_Shield()->int: + var shield = stats.shield + for equipment in equipments: + shield += equipment.stats.shield + return shield + + +func get_movement_speed()->int: + var movement_speed = stats.movement_speed + for equipment in equipments: + movement_speed += equipment.stats.movement_speed + return movement_speed + diff --git a/scripts/Mech.gd b/scripts/Mech.gd new file mode 100644 index 0000000..0df29ca --- /dev/null +++ b/scripts/Mech.gd @@ -0,0 +1,28 @@ +extends Node3D + +class_name Mech + +var boots: Boots +var arms: Arms +var hydraulics: Hydraulics + + +func init_mech(boots: Boots, arms: Arms, hydraulics: Hydraulics): + self.boots = boots + self.arms = arms + self.hydraulics= hydraulics + +func get_max_health()-> int: + return boots.equipment_stats.max_health.value+arms.equipment_stats.max_health.value+hydraulics.equipment_stats.max_health.value + +func get_armor()-> int: + return boots.equipment_stats.armor.value+arms.equipment_stats.armor.value+hydraulics.equipment_stats.armor.value + +func get_shield()-> int: + return boots.equipment_stats.shield.value+arms.equipment_stats.shield.value+hydraulics.equipment_stats.shield.value + +func get_damage()-> int: + return boots.equipment_stats.damage.value+arms.equipment_stats.damage.value+hydraulics.equipment_stats.damage.value + +func get_movement_speed()-> int: + return boots.equipment_stats.movementSpeed.value+arms.equipment_stats.movementSpeed.value+hydraulics.equipment_stats.movementSpeed.value diff --git a/scripts/PlayerCharacter.gd b/scripts/PlayerCharacter.gd index eb022be..21b0ef6 100644 --- a/scripts/PlayerCharacter.gd +++ b/scripts/PlayerCharacter.gd @@ -1 +1,32 @@ -class_name PlayerCharacter extends Character +class_name PlayerCharacter extends Entity + +var mech: Mech + +func init_player_character(stats: EntityStats, mech: Mech): + init_entity(stats) + self.mech = mech; + +func get_max_health() -> int: + var max_health = base.get_max_health() + max_health += mech.get_max_health() + return max_health + +func get_armor() -> int: + var armor = stats.armor + armor += mech.get_armor() + for equipment in equipments: + armor += equipment.stats.armor + return armor + +func get_Shield() -> int: + var shield = stats.shield + for equipment in equipments: + shield += equipment.stats.shield + return shield + + +func get_movement_speed() -> int: + var movement_speed = stats.movement_speed + for equipment in equipments: + movement_speed += equipment.stats.movement_speed + return movement_speed diff --git a/scripts/Weapon.gd b/scripts/Weapon.gd index aaa86a2..68f27ec 100644 --- a/scripts/Weapon.gd +++ b/scripts/Weapon.gd @@ -6,6 +6,20 @@ var attachments: Array[Attachment] func init_weapon(stats: WeaponStats): self.stats = stats; - func attach(newAttachment: Attachment)-> void: attachments.append(newAttachment) + +func unattach(attachmentToRemove: Attachment)-> void: + attachments.erase(attachmentToRemove) + +func get_damage()->int: + var damage = stats.damage + for attachment in attachments: + damage += attachment.stats.damage + return damage + +func get_fire_rate()->int: + var fire_rate = stats.fire_rate + for attachment in attachments: + fire_rate += attachment.stats.fire_rate + return fire_rate diff --git a/scripts/resources/Character/CharacterResource.gd b/scripts/resources/Character/CharacterResource.gd deleted file mode 100644 index f08fe42..0000000 --- a/scripts/resources/Character/CharacterResource.gd +++ /dev/null @@ -1,13 +0,0 @@ -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/MechParts/MechBase.gd b/scripts/resources/Character/Equipment/MechParts/MechBase.gd deleted file mode 100644 index ec7479f..0000000 --- a/scripts/resources/Character/Equipment/MechParts/MechBase.gd +++ /dev/null @@ -1,10 +0,0 @@ -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/Entity/EntityResource.gd b/scripts/resources/Entity/EntityResource.gd new file mode 100644 index 0000000..022cdf7 --- /dev/null +++ b/scripts/resources/Entity/EntityResource.gd @@ -0,0 +1,13 @@ +extends Resource + +class_name EntityResource + +@export var entity_stats: entityStats +@export var entity_scene: PackedScene + + +func instantiate(parent: Node3D)->Entity: + var entity_instance = entity_scene.instantiate() as Entity + entity_instance.init_entity(entity_stats) + parent.add_child(entity_instance) + return entity_instance diff --git a/scripts/resources/Character/CharacterStats.gd b/scripts/resources/Entity/EntityStats.gd similarity index 86% rename from scripts/resources/Character/CharacterStats.gd rename to scripts/resources/Entity/EntityStats.gd index daa221a..819d07e 100644 --- a/scripts/resources/Character/CharacterStats.gd +++ b/scripts/resources/Entity/EntityStats.gd @@ -1,6 +1,6 @@ extends Resource -class_name CharacterStats +class_name EntityStats @export var max_health: MaxHealth @export var health: Health diff --git a/scripts/resources/Character/Equipment/EquipmentResource.gd b/scripts/resources/Equipment/EquipmentResource.gd similarity index 86% rename from scripts/resources/Character/Equipment/EquipmentResource.gd rename to scripts/resources/Equipment/EquipmentResource.gd index 1923a18..577d82b 100644 --- a/scripts/resources/Character/Equipment/EquipmentResource.gd +++ b/scripts/resources/Equipment/EquipmentResource.gd @@ -12,6 +12,3 @@ func instantiate(parent: Node3D)->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/Character/Equipment/EquipmentStats.gd b/scripts/resources/Equipment/EquipmentStats.gd similarity index 74% rename from scripts/resources/Character/Equipment/EquipmentStats.gd rename to scripts/resources/Equipment/EquipmentStats.gd index 8df73eb..a65b670 100644 --- a/scripts/resources/Character/Equipment/EquipmentStats.gd +++ b/scripts/resources/Equipment/EquipmentStats.gd @@ -7,6 +7,3 @@ 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/Equipment/MechParts/Arms.gd similarity index 100% rename from scripts/resources/Character/Equipment/MechParts/Arms.gd rename to scripts/resources/Equipment/MechParts/Arms.gd diff --git a/scripts/resources/Character/Equipment/MechParts/Boots.gd b/scripts/resources/Equipment/MechParts/Boots.gd similarity index 100% rename from scripts/resources/Character/Equipment/MechParts/Boots.gd rename to scripts/resources/Equipment/MechParts/Boots.gd diff --git a/scripts/resources/Character/Equipment/MechParts/Hydraulics.gd b/scripts/resources/Equipment/MechParts/Hydraulics.gd similarity index 100% rename from scripts/resources/Character/Equipment/MechParts/Hydraulics.gd rename to scripts/resources/Equipment/MechParts/Hydraulics.gd diff --git a/scripts/resources/Character/Equipment/MechParts/MechPartResource.gd b/scripts/resources/Equipment/MechParts/MechPartResource.gd similarity index 100% rename from scripts/resources/Character/Equipment/MechParts/MechPartResource.gd rename to scripts/resources/Equipment/MechParts/MechPartResource.gd diff --git a/singeltons/DamageHandler.gd b/singeltons/DamageHandler.gd new file mode 100644 index 0000000..4eff30e --- /dev/null +++ b/singeltons/DamageHandler.gd @@ -0,0 +1,9 @@ +extends Node + +class_name DamageHandler + + +func apply_damage(damage_dealer: Entity, damage_receiver: Entity, weapon: Weapon ): + damage_receiver.get_armor() + damage_receiver.get + pass