moving further through forge godot-available resources and interfaces
This commit is contained in:
@@ -3,6 +3,7 @@ using Gamesmiths.Forge.Core;
|
|||||||
using Gamesmiths.Forge.Effects;
|
using Gamesmiths.Forge.Effects;
|
||||||
using Gamesmiths.Forge.Events;
|
using Gamesmiths.Forge.Events;
|
||||||
using Gamesmiths.Forge.Godot.Core;
|
using Gamesmiths.Forge.Godot.Core;
|
||||||
|
using Gamesmiths.Forge.Godot.Nodes;
|
||||||
using Gamesmiths.Forge.Tags;
|
using Gamesmiths.Forge.Tags;
|
||||||
using Godot;
|
using Godot;
|
||||||
using Movementtests.interfaces;
|
using Movementtests.interfaces;
|
||||||
@@ -64,16 +65,38 @@ public partial class Enemy : CharacterBody3D,
|
|||||||
set => CHealth.CurrentHealth = value;
|
set => CHealth.CurrentHealth = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityAttributes Attributes { get; set; } = null!;
|
// Perfectly forward the IForgeEntity interface to the ForgeEntity component
|
||||||
public EntityTags Tags { get; set; } = null!;
|
public EntityAttributes Attributes
|
||||||
public EffectsManager EffectsManager { get; set; } = null!;
|
{
|
||||||
public EntityAbilities Abilities { get; set; } = null!;
|
get => _forgeEntity.Attributes;
|
||||||
public EventManager Events { get; set; } = null!;
|
set => _forgeEntity.Attributes = value;
|
||||||
|
}
|
||||||
|
public EntityTags Tags
|
||||||
|
{
|
||||||
|
get => _forgeEntity.Tags;
|
||||||
|
set => _forgeEntity.Tags = value;
|
||||||
|
}
|
||||||
|
public EffectsManager EffectsManager
|
||||||
|
{
|
||||||
|
get => _forgeEntity.EffectsManager;
|
||||||
|
set => _forgeEntity.EffectsManager = value;
|
||||||
|
}
|
||||||
|
public EntityAbilities Abilities
|
||||||
|
{
|
||||||
|
get => _forgeEntity.Abilities;
|
||||||
|
set => _forgeEntity.Abilities = value;
|
||||||
|
}
|
||||||
|
public EventManager Events
|
||||||
|
{
|
||||||
|
get => _forgeEntity.Events;
|
||||||
|
set => _forgeEntity.Events = value;
|
||||||
|
}
|
||||||
|
|
||||||
// Private stuff
|
// Private stuff
|
||||||
private Area3D _damageBox = null!;
|
private Area3D _damageBox = null!;
|
||||||
internal Node3D _target = null!;
|
internal Node3D _target = null!;
|
||||||
private Healthbar _healthbar = null!;
|
private Healthbar _healthbar = null!;
|
||||||
|
private ForgeEntity _forgeEntity;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
@@ -85,19 +108,7 @@ public partial class Enemy : CharacterBody3D,
|
|||||||
{
|
{
|
||||||
_damageBox = GetNode<Area3D>("DamageBox");
|
_damageBox = GetNode<Area3D>("DamageBox");
|
||||||
_target = GetNode<Node3D>("CTarget");
|
_target = GetNode<Node3D>("CTarget");
|
||||||
|
_forgeEntity = GetNode<ForgeEntity>("ForgeEntity");
|
||||||
// Forge stuff
|
|
||||||
var baseTags = new TagContainer(
|
|
||||||
ForgeManagers.Instance.TagsManager,
|
|
||||||
[
|
|
||||||
Tag.RequestTag(ForgeManagers.Instance.TagsManager, "character.enemy")
|
|
||||||
]);
|
|
||||||
|
|
||||||
Attributes = new EntityAttributes(new EnemyAttributeSet());
|
|
||||||
Tags = new EntityTags(baseTags);
|
|
||||||
EffectsManager = new EffectsManager(this, ForgeManagers.Instance.CuesManager);
|
|
||||||
Abilities = new(this);
|
|
||||||
Events = new();
|
|
||||||
|
|
||||||
CDamageable = (GetNode<Node>("CDamageable") as IDamageable)!;
|
CDamageable = (GetNode<Node>("CDamageable") as IDamageable)!;
|
||||||
CMovement = (GetNode<Node>("CMovement") as IMoveable)!;
|
CMovement = (GetNode<Node>("CMovement") as IMoveable)!;
|
||||||
|
|||||||
@@ -6,14 +6,34 @@
|
|||||||
[ext_resource type="Resource" uid="uid://dgo65k2ceqfvy" path="res://scenes/enemies/flying_enemy/flying_enemy_damage.tres" id="2_on7rt"]
|
[ext_resource type="Resource" uid="uid://dgo65k2ceqfvy" path="res://scenes/enemies/flying_enemy/flying_enemy_damage.tres" id="2_on7rt"]
|
||||||
[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="4_dejyg"]
|
[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="4_dejyg"]
|
||||||
[ext_resource type="Script" uid="uid://bjwrpv3jpsc1e" path="res://scenes/components/health/CHealth.cs" id="4_ys4jv"]
|
[ext_resource type="Script" uid="uid://bjwrpv3jpsc1e" path="res://scenes/components/health/CHealth.cs" id="4_ys4jv"]
|
||||||
|
[ext_resource type="Script" uid="uid://8uj04dfe8oql" path="res://addons/forge/nodes/ForgeEntity.cs" id="6_wxisp"]
|
||||||
|
[ext_resource type="Script" uid="uid://cxihb42t2mfqi" path="res://addons/forge/nodes/ForgeAttributeSet.cs" id="7_2digf"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dmw5ibwrb483f" path="res://scenes/components/movement/CFlyingMovement.tscn" id="7_vaeds"]
|
[ext_resource type="PackedScene" uid="uid://dmw5ibwrb483f" path="res://scenes/components/movement/CFlyingMovement.tscn" id="7_vaeds"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwx2um43k0ou4" path="res://scenes/components/health/CHealthbar.tscn" id="7_ykkxn"]
|
[ext_resource type="PackedScene" uid="uid://bwx2um43k0ou4" path="res://scenes/components/health/CHealthbar.tscn" id="7_ykkxn"]
|
||||||
|
[ext_resource type="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="8_46wn3"]
|
||||||
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="8_on7rt"]
|
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="8_on7rt"]
|
||||||
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/components/damage/CDamageable.cs" id="8_uotso"]
|
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/components/damage/CDamageable.cs" id="8_uotso"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/components/knockback/CKnockback.tscn" id="10_dejyg"]
|
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/components/knockback/CKnockback.tscn" id="10_dejyg"]
|
||||||
[ext_resource type="Resource" uid="uid://dt7a1io5o0b8s" path="res://scenes/enemies/flying_enemy/flying_enemy_knockback.tres" id="11_mpa2u"]
|
[ext_resource type="Resource" uid="uid://dt7a1io5o0b8s" path="res://scenes/enemies/flying_enemy/flying_enemy_knockback.tres" id="11_mpa2u"]
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_ykkxn"]
|
[sub_resource type="Resource" id="Resource_oj1ws"]
|
||||||
|
script = ExtResource("8_46wn3")
|
||||||
|
Default = 50
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_yk4hc"]
|
||||||
|
script = ExtResource("8_46wn3")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_wxisp"]
|
||||||
|
script = ExtResource("8_46wn3")
|
||||||
|
Default = 2
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="ViewportTexture" id="ViewportTexture_hf6k8"]
|
||||||
viewport_path = NodePath("SubViewport")
|
viewport_path = NodePath("SubViewport")
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_jnv07"]
|
[sub_resource type="Resource" id="Resource_jnv07"]
|
||||||
@@ -62,6 +82,20 @@ RDamage = ExtResource("2_on7rt")
|
|||||||
RKnockback = ExtResource("11_mpa2u")
|
RKnockback = ExtResource("11_mpa2u")
|
||||||
RMovement = ExtResource("4_dejyg")
|
RMovement = ExtResource("4_dejyg")
|
||||||
|
|
||||||
|
[node name="ForgeEntity" type="Node" parent="." unique_id=622209781]
|
||||||
|
script = ExtResource("6_wxisp")
|
||||||
|
metadata/_custom_type_script = "uid://8uj04dfe8oql"
|
||||||
|
|
||||||
|
[node name="ForgeAttributeSet" type="Node" parent="ForgeEntity" unique_id=1840910245]
|
||||||
|
script = ExtResource("7_2digf")
|
||||||
|
AttributeSetClass = "EnemyAttributeSet"
|
||||||
|
InitialAttributeValues = Dictionary[String, ExtResource("8_46wn3")]({
|
||||||
|
"Health": SubResource("Resource_oj1ws"),
|
||||||
|
"Speed": SubResource("Resource_wxisp"),
|
||||||
|
"Strength": SubResource("Resource_yk4hc")
|
||||||
|
})
|
||||||
|
metadata/_custom_type_script = "uid://cxihb42t2mfqi"
|
||||||
|
|
||||||
[node name="CHealth" type="Node" parent="." unique_id=1717035166]
|
[node name="CHealth" type="Node" parent="." unique_id=1717035166]
|
||||||
script = ExtResource("4_ys4jv")
|
script = ExtResource("4_ys4jv")
|
||||||
RHealth = ExtResource("2_ma2bq")
|
RHealth = ExtResource("2_ma2bq")
|
||||||
@@ -69,7 +103,7 @@ metadata/_custom_type_script = "uid://bjwrpv3jpsc1e"
|
|||||||
|
|
||||||
[node name="CHealthBar" parent="." unique_id=1635725931 instance=ExtResource("7_ykkxn")]
|
[node name="CHealthBar" parent="." unique_id=1635725931 instance=ExtResource("7_ykkxn")]
|
||||||
transform = Transform3D(0.3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.70000005, 0)
|
transform = Transform3D(0.3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.70000005, 0)
|
||||||
texture = SubResource("ViewportTexture_ykkxn")
|
texture = SubResource("ViewportTexture_hf6k8")
|
||||||
|
|
||||||
[node name="CDamageable" type="Node" parent="." unique_id=1785297232]
|
[node name="CDamageable" type="Node" parent="." unique_id=1785297232]
|
||||||
script = ExtResource("8_uotso")
|
script = ExtResource("8_uotso")
|
||||||
|
|||||||
@@ -6,14 +6,34 @@
|
|||||||
[ext_resource type="Script" uid="uid://b6y3ugfydvch0" path="res://scenes/components/damage/RDamageModifier.cs" id="2_r3cnf"]
|
[ext_resource type="Script" uid="uid://b6y3ugfydvch0" path="res://scenes/components/damage/RDamageModifier.cs" id="2_r3cnf"]
|
||||||
[ext_resource type="Resource" uid="uid://bohbojc68j7y1" path="res://scenes/enemies/grounded_enemy/grounded_enemy_health.tres" id="2_w4lm8"]
|
[ext_resource type="Resource" uid="uid://bohbojc68j7y1" path="res://scenes/enemies/grounded_enemy/grounded_enemy_health.tres" id="2_w4lm8"]
|
||||||
[ext_resource type="Resource" uid="uid://bqq6uukbdfysr" path="res://scenes/enemies/grounded_enemy/grounded_enemy_movement.tres" id="4_na24f"]
|
[ext_resource type="Resource" uid="uid://bqq6uukbdfysr" path="res://scenes/enemies/grounded_enemy/grounded_enemy_movement.tres" id="4_na24f"]
|
||||||
|
[ext_resource type="Script" uid="uid://8uj04dfe8oql" path="res://addons/forge/nodes/ForgeEntity.cs" id="6_x50ya"]
|
||||||
|
[ext_resource type="Script" uid="uid://cxihb42t2mfqi" path="res://addons/forge/nodes/ForgeAttributeSet.cs" id="6_yk4hc"]
|
||||||
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/components/damage/CDamageable.cs" id="7_1tw73"]
|
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/components/damage/CDamageable.cs" id="7_1tw73"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwx2um43k0ou4" path="res://scenes/components/health/CHealthbar.tscn" id="7_18xwy"]
|
[ext_resource type="PackedScene" uid="uid://bwx2um43k0ou4" path="res://scenes/components/health/CHealthbar.tscn" id="7_18xwy"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dbr7ioio158ew" path="res://scenes/components/movement/CGroundedMovement.tscn" id="7_qyswd"]
|
[ext_resource type="PackedScene" uid="uid://dbr7ioio158ew" path="res://scenes/components/movement/CGroundedMovement.tscn" id="7_qyswd"]
|
||||||
|
[ext_resource type="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="7_x50ya"]
|
||||||
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="8_6d4gl"]
|
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="8_6d4gl"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/components/knockback/CKnockback.tscn" id="10_jqqi6"]
|
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/components/knockback/CKnockback.tscn" id="10_jqqi6"]
|
||||||
[ext_resource type="Resource" uid="uid://cektf6waf4s04" path="res://scenes/enemies/grounded_enemy/grounded_enemy_knockback.tres" id="11_8k3xb"]
|
[ext_resource type="Resource" uid="uid://cektf6waf4s04" path="res://scenes/enemies/grounded_enemy/grounded_enemy_knockback.tres" id="11_8k3xb"]
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_18xwy"]
|
[sub_resource type="Resource" id="Resource_f22p3"]
|
||||||
|
script = ExtResource("7_x50ya")
|
||||||
|
Default = 100
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_yk4hc"]
|
||||||
|
script = ExtResource("7_x50ya")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_x50ya"]
|
||||||
|
script = ExtResource("7_x50ya")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="ViewportTexture" id="ViewportTexture_0mf3g"]
|
||||||
viewport_path = NodePath("SubViewport")
|
viewport_path = NodePath("SubViewport")
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_qj0ob"]
|
[sub_resource type="Resource" id="Resource_qj0ob"]
|
||||||
@@ -62,6 +82,20 @@ RDamage = ExtResource("2_bn56u")
|
|||||||
RKnockback = ExtResource("11_8k3xb")
|
RKnockback = ExtResource("11_8k3xb")
|
||||||
RMovement = ExtResource("4_na24f")
|
RMovement = ExtResource("4_na24f")
|
||||||
|
|
||||||
|
[node name="ForgeEntity" type="Node" parent="." unique_id=432521027]
|
||||||
|
script = ExtResource("6_x50ya")
|
||||||
|
metadata/_custom_type_script = "uid://8uj04dfe8oql"
|
||||||
|
|
||||||
|
[node name="ForgeAttributeSet" type="Node" parent="ForgeEntity" unique_id=804252284]
|
||||||
|
script = ExtResource("6_yk4hc")
|
||||||
|
AttributeSetClass = "EnemyAttributeSet"
|
||||||
|
InitialAttributeValues = Dictionary[String, ExtResource("7_x50ya")]({
|
||||||
|
"Health": SubResource("Resource_f22p3"),
|
||||||
|
"Speed": SubResource("Resource_x50ya"),
|
||||||
|
"Strength": SubResource("Resource_yk4hc")
|
||||||
|
})
|
||||||
|
metadata/_custom_type_script = "uid://cxihb42t2mfqi"
|
||||||
|
|
||||||
[node name="CHealth" type="Node" parent="." unique_id=188153645]
|
[node name="CHealth" type="Node" parent="." unique_id=188153645]
|
||||||
script = ExtResource("2_gsmti")
|
script = ExtResource("2_gsmti")
|
||||||
RHealth = ExtResource("2_w4lm8")
|
RHealth = ExtResource("2_w4lm8")
|
||||||
@@ -69,7 +103,7 @@ metadata/_custom_type_script = "uid://bjwrpv3jpsc1e"
|
|||||||
|
|
||||||
[node name="CHealthBar" parent="." unique_id=1278247727 instance=ExtResource("7_18xwy")]
|
[node name="CHealthBar" parent="." unique_id=1278247727 instance=ExtResource("7_18xwy")]
|
||||||
transform = Transform3D(0.4, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2, 0)
|
transform = Transform3D(0.4, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2, 0)
|
||||||
texture = SubResource("ViewportTexture_18xwy")
|
texture = SubResource("ViewportTexture_0mf3g")
|
||||||
|
|
||||||
[node name="CDamageable" type="Node" parent="." unique_id=1601518000]
|
[node name="CDamageable" type="Node" parent="." unique_id=1601518000]
|
||||||
script = ExtResource("7_1tw73")
|
script = ExtResource("7_1tw73")
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://clfggn87oeg1s" path="res://scenes/player_controller/audio/InteractiveSFX.tres" id="9_jb43f"]
|
[ext_resource type="AudioStream" uid="uid://clfggn87oeg1s" path="res://scenes/player_controller/audio/InteractiveSFX.tres" id="9_jb43f"]
|
||||||
[ext_resource type="Resource" uid="uid://bebstkm608wxx" path="res://inputs/base_mode/aim_pressed.tres" id="9_nob5r"]
|
[ext_resource type="Resource" uid="uid://bebstkm608wxx" path="res://inputs/base_mode/aim_pressed.tres" id="9_nob5r"]
|
||||||
[ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://inputs/base_mode/jump.tres" id="10_4u7i3"]
|
[ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://inputs/base_mode/jump.tres" id="10_4u7i3"]
|
||||||
|
[ext_resource type="Script" uid="uid://cxihb42t2mfqi" path="res://addons/forge/nodes/ForgeAttributeSet.cs" id="10_pw5r7"]
|
||||||
|
[ext_resource type="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="11_2rkt1"]
|
||||||
[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://inputs/base_mode/hit.tres" id="11_cresl"]
|
[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://inputs/base_mode/hit.tres" id="11_cresl"]
|
||||||
[ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://scenes/player_controller/components/head/head_system.tscn" id="11_rxwoh"]
|
[ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://scenes/player_controller/components/head/head_system.tscn" id="11_rxwoh"]
|
||||||
[ext_resource type="Resource" uid="uid://d2r0ur8k3cuu3" path="res://inputs/base_mode/dash.tres" id="12_34snm"]
|
[ext_resource type="Resource" uid="uid://d2r0ur8k3cuu3" path="res://inputs/base_mode/dash.tres" id="12_34snm"]
|
||||||
@@ -71,6 +73,28 @@ script = ExtResource("4_abfq8")
|
|||||||
StartingHealth = 10.0
|
StartingHealth = 10.0
|
||||||
metadata/_custom_type_script = "uid://baiapod3csndf"
|
metadata/_custom_type_script = "uid://baiapod3csndf"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_u8yay"]
|
||||||
|
script = ExtResource("11_2rkt1")
|
||||||
|
Default = 100
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_uqalc"]
|
||||||
|
script = ExtResource("11_2rkt1")
|
||||||
|
Default = 100
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_cn5a8"]
|
||||||
|
script = ExtResource("11_2rkt1")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_b0xmb"]
|
||||||
|
script = ExtResource("11_2rkt1")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_xc2g5"]
|
[sub_resource type="CapsuleMesh" id="CapsuleMesh_xc2g5"]
|
||||||
height = 1.7
|
height = 1.7
|
||||||
|
|
||||||
@@ -172,6 +196,17 @@ MinimumWallRunHorizontalSpeed = 8.0
|
|||||||
WallRunAltitudeLossSpeed = 8.0
|
WallRunAltitudeLossSpeed = 8.0
|
||||||
WallRunSpeedThreshold = 1.0
|
WallRunSpeedThreshold = 1.0
|
||||||
|
|
||||||
|
[node name="PlayerAttributeSet" type="Node" parent="." unique_id=421846088]
|
||||||
|
script = ExtResource("10_pw5r7")
|
||||||
|
AttributeSetClass = "PlayerAttributeSet"
|
||||||
|
InitialAttributeValues = Dictionary[String, ExtResource("11_2rkt1")]({
|
||||||
|
"Health": SubResource("Resource_u8yay"),
|
||||||
|
"Mana": SubResource("Resource_uqalc"),
|
||||||
|
"Speed": SubResource("Resource_cn5a8"),
|
||||||
|
"Strength": SubResource("Resource_b0xmb")
|
||||||
|
})
|
||||||
|
metadata/_custom_type_script = "uid://cxihb42t2mfqi"
|
||||||
|
|
||||||
[node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")]
|
[node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")]
|
||||||
RHealth = ExtResource("4_m8gvy")
|
RHealth = ExtResource("4_m8gvy")
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Gamesmiths.Forge.Abilities;
|
using Gamesmiths.Forge.Abilities;
|
||||||
|
using Gamesmiths.Forge.Attributes;
|
||||||
using Gamesmiths.Forge.Core;
|
using Gamesmiths.Forge.Core;
|
||||||
using Gamesmiths.Forge.Effects;
|
using Gamesmiths.Forge.Effects;
|
||||||
using Gamesmiths.Forge.Effects.Calculator;
|
using Gamesmiths.Forge.Effects.Calculator;
|
||||||
@@ -10,6 +11,8 @@ using Gamesmiths.Forge.Effects.Magnitudes;
|
|||||||
using Gamesmiths.Forge.Effects.Periodic;
|
using Gamesmiths.Forge.Effects.Periodic;
|
||||||
using Gamesmiths.Forge.Events;
|
using Gamesmiths.Forge.Events;
|
||||||
using Gamesmiths.Forge.Godot.Core;
|
using Gamesmiths.Forge.Godot.Core;
|
||||||
|
using Gamesmiths.Forge.Godot.Nodes;
|
||||||
|
using Gamesmiths.Forge.Godot.Resources;
|
||||||
using Gamesmiths.Forge.Tags;
|
using Gamesmiths.Forge.Tags;
|
||||||
using Godot;
|
using Godot;
|
||||||
using GodotStateCharts;
|
using GodotStateCharts;
|
||||||
@@ -47,6 +50,10 @@ public partial class WeaponSystem : RigidBody3D, IDamageDealer, IForgeEntity
|
|||||||
[Signal]
|
[Signal]
|
||||||
public delegate void WeaponRetrievedEventHandler();
|
public delegate void WeaponRetrievedEventHandler();
|
||||||
|
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public ForgeTagContainer BaseTags { get; set; } = new();
|
||||||
|
|
||||||
[Export]
|
[Export]
|
||||||
public RDamage RDamage { get; set; }
|
public RDamage RDamage { get; set; }
|
||||||
[Export(PropertyHint.Range, "0,100,1,or_greater")]
|
[Export(PropertyHint.Range, "0,100,1,or_greater")]
|
||||||
@@ -147,14 +154,22 @@ public partial class WeaponSystem : RigidBody3D, IDamageDealer, IForgeEntity
|
|||||||
|
|
||||||
WeaponFlyingAbilityTag = Tag.RequestTag(tagsManager,"abilities.weapon.flying");
|
WeaponFlyingAbilityTag = Tag.RequestTag(tagsManager,"abilities.weapon.flying");
|
||||||
|
|
||||||
var baseTags = new TagContainer(
|
List<AttributeSet> attributeSetList = [];
|
||||||
tagsManager,
|
foreach (Node node in GetChildren())
|
||||||
[
|
{
|
||||||
Tag.RequestTag(tagsManager, "weapon"),
|
if (node is ForgeAttributeSet attributeSetNode)
|
||||||
]);
|
{
|
||||||
|
AttributeSet? attributeSet = attributeSetNode.GetAttributeSet();
|
||||||
|
|
||||||
Attributes = new EntityAttributes(new WeaponAttributeSet());
|
if (attributeSet is not null)
|
||||||
Tags = new EntityTags(baseTags);
|
{
|
||||||
|
attributeSetList.Add(attributeSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Attributes = new EntityAttributes([.. attributeSetList]);
|
||||||
|
|
||||||
|
Tags = new(BaseTags.GetTagContainer());
|
||||||
EffectsManager = new EffectsManager(this, cuesManager);
|
EffectsManager = new EffectsManager(this, cuesManager);
|
||||||
Abilities = new(this);
|
Abilities = new(this);
|
||||||
Events = new();
|
Events = new();
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://iii3wfto4t5b" path="res://scenes/player_controller/components/weapon/WeaponSystem.cs" id="1_csqwk"]
|
[ext_resource type="Script" uid="uid://iii3wfto4t5b" path="res://scenes/player_controller/components/weapon/WeaponSystem.cs" id="1_csqwk"]
|
||||||
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_m0v1h"]
|
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_m0v1h"]
|
||||||
|
[ext_resource type="Script" uid="uid://cxihb42t2mfqi" path="res://addons/forge/nodes/ForgeAttributeSet.cs" id="3_3xjpi"]
|
||||||
[ext_resource type="Script" uid="uid://couw105c3bde4" path="res://addons/godot_state_charts/state_chart.gd" id="3_5owyf"]
|
[ext_resource type="Script" uid="uid://couw105c3bde4" path="res://addons/godot_state_charts/state_chart.gd" id="3_5owyf"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://cho5fixitrbds" path="res://assets/meshes/swords/resources/sword23.tres" id="3_svc06"]
|
[ext_resource type="ArrayMesh" uid="uid://cho5fixitrbds" path="res://assets/meshes/swords/resources/sword23.tres" id="3_svc06"]
|
||||||
|
[ext_resource type="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="4_q6xv7"]
|
||||||
[ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="4_svc06"]
|
[ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="4_svc06"]
|
||||||
[ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="5_m0v1h"]
|
[ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="5_m0v1h"]
|
||||||
[ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="6_jpdh0"]
|
[ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="6_jpdh0"]
|
||||||
@@ -13,6 +15,12 @@ script = ExtResource("2_m0v1h")
|
|||||||
DamageDealt = 2.0
|
DamageDealt = 2.0
|
||||||
metadata/_custom_type_script = "uid://jitubgv6judn"
|
metadata/_custom_type_script = "uid://jitubgv6judn"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_pgbtr"]
|
||||||
|
script = ExtResource("4_q6xv7")
|
||||||
|
Default = 1
|
||||||
|
Min = 1
|
||||||
|
Max = 100
|
||||||
|
|
||||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_avini"]
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_avini"]
|
||||||
height = 1.0
|
height = 1.0
|
||||||
radius = 0.1
|
radius = 0.1
|
||||||
@@ -50,6 +58,14 @@ max_contacts_reported = 1
|
|||||||
script = ExtResource("1_csqwk")
|
script = ExtResource("1_csqwk")
|
||||||
RDamage = SubResource("Resource_jpdh0")
|
RDamage = SubResource("Resource_jpdh0")
|
||||||
|
|
||||||
|
[node name="WeaponAttributeSet" type="Node" parent="." unique_id=14845649]
|
||||||
|
script = ExtResource("3_3xjpi")
|
||||||
|
AttributeSetClass = "WeaponAttributeSet"
|
||||||
|
InitialAttributeValues = Dictionary[String, ExtResource("4_q6xv7")]({
|
||||||
|
"Level": SubResource("Resource_pgbtr")
|
||||||
|
})
|
||||||
|
metadata/_custom_type_script = "uid://cxihb42t2mfqi"
|
||||||
|
|
||||||
[node name="WeaponFlyingTick" type="Timer" parent="." unique_id=656309486]
|
[node name="WeaponFlyingTick" type="Timer" parent="." unique_id=656309486]
|
||||||
wait_time = 0.2
|
wait_time = 0.2
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Gamesmiths.Forge.Abilities;
|
using Gamesmiths.Forge.Abilities;
|
||||||
|
using Gamesmiths.Forge.Attributes;
|
||||||
using Gamesmiths.Forge.Core;
|
using Gamesmiths.Forge.Core;
|
||||||
using Gamesmiths.Forge.Effects;
|
using Gamesmiths.Forge.Effects;
|
||||||
using Gamesmiths.Forge.Effects.Calculator;
|
using Gamesmiths.Forge.Effects.Calculator;
|
||||||
@@ -11,6 +12,8 @@ using Gamesmiths.Forge.Effects.Modifiers;
|
|||||||
using Gamesmiths.Forge.Effects.Periodic;
|
using Gamesmiths.Forge.Effects.Periodic;
|
||||||
using Gamesmiths.Forge.Events;
|
using Gamesmiths.Forge.Events;
|
||||||
using Gamesmiths.Forge.Godot.Core;
|
using Gamesmiths.Forge.Godot.Core;
|
||||||
|
using Gamesmiths.Forge.Godot.Nodes;
|
||||||
|
using Gamesmiths.Forge.Godot.Resources;
|
||||||
using Gamesmiths.Forge.Godot.Resources.Abilities;
|
using Gamesmiths.Forge.Godot.Resources.Abilities;
|
||||||
using Gamesmiths.Forge.Tags;
|
using Gamesmiths.Forge.Tags;
|
||||||
|
|
||||||
@@ -109,6 +112,8 @@ public partial class PlayerController : CharacterBody3D,
|
|||||||
// Forge stuff
|
// Forge stuff
|
||||||
[ExportCategory("Forge")]
|
[ExportCategory("Forge")]
|
||||||
[ExportGroup("General")]
|
[ExportGroup("General")]
|
||||||
|
[Export]
|
||||||
|
public ForgeTagContainer BaseTags { get; set; } = new();
|
||||||
[Export] public REmpoweredAction EmpoweredAction = null!;
|
[Export] public REmpoweredAction EmpoweredAction = null!;
|
||||||
[Export] public RManaRegen ManaRegen = null!;
|
[Export] public RManaRegen ManaRegen = null!;
|
||||||
|
|
||||||
@@ -444,14 +449,22 @@ public partial class PlayerController : CharacterBody3D,
|
|||||||
// Forge stuff
|
// Forge stuff
|
||||||
var tagsManager = ForgeManagers.Instance.TagsManager;
|
var tagsManager = ForgeManagers.Instance.TagsManager;
|
||||||
var cuesManager = ForgeManagers.Instance.CuesManager;
|
var cuesManager = ForgeManagers.Instance.CuesManager;
|
||||||
var baseTags = new TagContainer(
|
|
||||||
tagsManager,
|
|
||||||
[
|
|
||||||
Tag.RequestTag(tagsManager, "character.player")
|
|
||||||
]);
|
|
||||||
|
|
||||||
Attributes = new EntityAttributes(new PlayerAttributeSet());
|
List<AttributeSet> attributeSetList = [];
|
||||||
Tags = new EntityTags(baseTags);
|
foreach (Node node in GetChildren())
|
||||||
|
{
|
||||||
|
if (node is ForgeAttributeSet attributeSetNode)
|
||||||
|
{
|
||||||
|
AttributeSet? attributeSet = attributeSetNode.GetAttributeSet();
|
||||||
|
|
||||||
|
if (attributeSet is not null)
|
||||||
|
{
|
||||||
|
attributeSetList.Add(attributeSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Attributes = new EntityAttributes([.. attributeSetList]);
|
||||||
|
Tags = new(BaseTags.GetTagContainer());
|
||||||
EffectsManager = new EffectsManager(this, cuesManager);
|
EffectsManager = new EffectsManager(this, cuesManager);
|
||||||
Abilities = new(this);
|
Abilities = new(this);
|
||||||
Events = new();
|
Events = new();
|
||||||
@@ -467,11 +480,6 @@ public partial class PlayerController : CharacterBody3D,
|
|||||||
var manaRegenEffect = new Effect(ManaRegen.ManaRegen(tagsManager), new EffectOwnership(this, this));
|
var manaRegenEffect = new Effect(ManaRegen.ManaRegen(tagsManager), new EffectOwnership(this, this));
|
||||||
_manaRegenEffectHandle = EffectsManager.ApplyEffect(manaRegenEffect);
|
_manaRegenEffectHandle = EffectsManager.ApplyEffect(manaRegenEffect);
|
||||||
|
|
||||||
var health = Attributes["PlayerAttributeSet.Health"].CurrentValue; // 100
|
|
||||||
var mana = Attributes["PlayerAttributeSet.Mana"].CurrentValue; // 100
|
|
||||||
var strength = Attributes["PlayerAttributeSet.Strength"].CurrentValue; // 10
|
|
||||||
var speed = Attributes["PlayerAttributeSet.Speed"].CurrentValue; // 5
|
|
||||||
|
|
||||||
// DashIndicator = GetNode<TextureRect>("%DashIndicator");
|
// DashIndicator = GetNode<TextureRect>("%DashIndicator");
|
||||||
PowerCooldownIndicator = GetNode<ColorRect>("%DashCooldownIndicator");
|
PowerCooldownIndicator = GetNode<ColorRect>("%DashCooldownIndicator");
|
||||||
PowerCooldownIndicator.Visible = false;
|
PowerCooldownIndicator.Visible = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user