diff --git a/addons/forge/nodes/ForgeEntity.cs b/addons/forge/nodes/ForgeEntity.cs index a79bbc90..567dea19 100644 --- a/addons/forge/nodes/ForgeEntity.cs +++ b/addons/forge/nodes/ForgeEntity.cs @@ -18,7 +18,7 @@ namespace Gamesmiths.Forge.Godot.Nodes; public partial class ForgeEntity : Node, IForgeEntity { [Export] - public ForgeTagContainer BaseTags { get; set; } = new(); + public ForgeTagContainer BaseTags { get; set; } [Export] public ForgeSharedVariableSet? SharedVariableDefinitions { get; set; } diff --git a/docs/.gdignore b/docs/.gdignore new file mode 100644 index 00000000..e69de29b diff --git a/docs/marketing/im-a-third-year-game-design-student-and-yesterday-we-were-v0-1ts56gpbg1lg1.webp b/docs/marketing/im-a-third-year-game-design-student-and-yesterday-we-were-v0-1ts56gpbg1lg1.webp new file mode 100644 index 00000000..2cb1b7ab Binary files /dev/null and b/docs/marketing/im-a-third-year-game-design-student-and-yesterday-we-were-v0-1ts56gpbg1lg1.webp differ diff --git a/forge/abilities/ForgeExplodingSwordBehavior.cs b/forge/abilities/ForgeExplodingSwordBehavior.cs index e9fa4e25..27361252 100644 --- a/forge/abilities/ForgeExplodingSwordBehavior.cs +++ b/forge/abilities/ForgeExplodingSwordBehavior.cs @@ -16,7 +16,7 @@ public class ExplodingSwordBehavior(PackedScene explosion) : IAbilityBehavior return; } - if (explosion.Instantiate() is not Explosion explosion1) + if (explosion.Instantiate() is not Explosion explo) { GD.Print("Cannot instantiate"); context.InstanceHandle.End(); @@ -31,10 +31,10 @@ public class ExplodingSwordBehavior(PackedScene explosion) : IAbilityBehavior GD.Print("EXPLOSION"); - explosion1.Radius = 6f; + explo.Radius = 6f; - owner.GetTree().GetRoot().CallDeferred(Node.MethodName.AddChild, explosion1); - explosion1.CallDeferred(Node3D.MethodName.SetGlobalPosition, owner.GlobalPosition); + owner.GetTree().GetRoot().CallDeferred(Node.MethodName.AddChild, explo); + explo.CallDeferred(Node3D.MethodName.SetGlobalPosition, owner.GlobalPosition); context.AbilityHandle.CommitAbility(); context.InstanceHandle.End(); @@ -45,15 +45,12 @@ public class ExplodingSwordBehavior(PackedScene explosion) : IAbilityBehavior } } -[Tool] [GlobalClass] public partial class ForgeExplodingSwordBehavior : ForgeAbilityBehavior { - [Export] public PackedScene? Explosion { get; set; } + [Export] public PackedScene Explosion { get; set; } public override IAbilityBehavior GetBehavior() { - if (Explosion == null) - throw new System.ArgumentException("Explosion is null"); return new ExplodingSwordBehavior(Explosion); } } \ No newline at end of file diff --git a/forge/calculators/ForgeRaiseEventTagExecution.cs b/forge/calculators/ForgeRaiseEventTagExecution.cs index 4840a9aa..6cc4878e 100644 --- a/forge/calculators/ForgeRaiseEventTagExecution.cs +++ b/forge/calculators/ForgeRaiseEventTagExecution.cs @@ -20,11 +20,8 @@ public class RaiseEventTagExecution(TagContainer eventTags) : CustomExecution { public override ModifierEvaluatedData[] EvaluateExecution(Effect effect, IForgeEntity target, EffectEvaluatedData? effectEvaluatedData) { - GD.Print("Custom execution executed"); var owner = effect.Ownership.Owner; if (owner == null) return []; - - GD.Print(eventTags.Tags.Count); foreach (var tag in eventTags.Tags) { GD.Print(tag); @@ -45,7 +42,7 @@ public class RaiseEventTagExecution(TagContainer eventTags) : CustomExecution [GlobalClass] public partial class ForgeRaiseEventTagExecution : ForgeCustomExecution { - [Export] ForgeTagContainer EventTags { get; set; } = new(); + [Export] ForgeTagContainer EventTags { get; set; } public override CustomExecution GetExecutionClass() { diff --git a/scenes/enemies/flying_enemy/flying_enemy.tscn b/scenes/enemies/flying_enemy/flying_enemy.tscn index 51673010..f8019abc 100644 --- a/scenes/enemies/flying_enemy/flying_enemy.tscn +++ b/scenes/enemies/flying_enemy/flying_enemy.tscn @@ -8,6 +8,7 @@ [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="Script" uid="uid://cw525n4mjqgw0" path="res://addons/forge/resources/ForgeTagContainer.cs" id="7_46wn3"] [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="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="8_46wn3"] @@ -16,23 +17,28 @@ [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"] +[sub_resource type="Resource" id="Resource_vfi88"] +script = ExtResource("7_46wn3") +ContainerTags = Array[String](["character.enemy"]) +metadata/_custom_type_script = "uid://cw525n4mjqgw0" + [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="Resource" id="Resource_yk4hc"] +script = ExtResource("8_46wn3") +Default = 1 +Min = 1 +Max = 100 + [sub_resource type="ViewportTexture" id="ViewportTexture_hf6k8"] viewport_path = NodePath("SubViewport") @@ -84,6 +90,7 @@ RMovement = ExtResource("4_dejyg") [node name="ForgeEntity" type="Node" parent="." unique_id=622209781] script = ExtResource("6_wxisp") +BaseTags = SubResource("Resource_vfi88") metadata/_custom_type_script = "uid://8uj04dfe8oql" [node name="ForgeAttributeSet" type="Node" parent="ForgeEntity" unique_id=1840910245] diff --git a/scenes/enemies/grounded_enemy/grounded_enemy.tscn b/scenes/enemies/grounded_enemy/grounded_enemy.tscn index 61ca45a9..c8a8c7dc 100644 --- a/scenes/enemies/grounded_enemy/grounded_enemy.tscn +++ b/scenes/enemies/grounded_enemy/grounded_enemy.tscn @@ -10,30 +10,36 @@ [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="PackedScene" uid="uid://bwx2um43k0ou4" path="res://scenes/components/health/CHealthbar.tscn" id="7_18xwy"] +[ext_resource type="Script" uid="uid://cw525n4mjqgw0" path="res://addons/forge/resources/ForgeTagContainer.cs" id="7_f22p3"] [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="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"] +[sub_resource type="Resource" id="Resource_4jf2q"] +script = ExtResource("7_f22p3") +ContainerTags = Array[String](["character.enemy"]) +metadata/_custom_type_script = "uid://cw525n4mjqgw0" + [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"] +[sub_resource type="Resource" id="Resource_yk4hc"] +script = ExtResource("7_x50ya") +Default = 1 +Min = 1 +Max = 100 + +[sub_resource type="ViewportTexture" id="ViewportTexture_ub34u"] viewport_path = NodePath("SubViewport") [sub_resource type="Resource" id="Resource_qj0ob"] @@ -84,6 +90,7 @@ RMovement = ExtResource("4_na24f") [node name="ForgeEntity" type="Node" parent="." unique_id=432521027] script = ExtResource("6_x50ya") +BaseTags = SubResource("Resource_4jf2q") metadata/_custom_type_script = "uid://8uj04dfe8oql" [node name="ForgeAttributeSet" type="Node" parent="ForgeEntity" unique_id=804252284] @@ -103,7 +110,7 @@ metadata/_custom_type_script = "uid://bjwrpv3jpsc1e" [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) -texture = SubResource("ViewportTexture_0mf3g") +texture = SubResource("ViewportTexture_ub34u") [node name="CDamageable" type="Node" parent="." unique_id=1601518000] script = ExtResource("7_1tw73") diff --git a/scenes/player_controller/PlayerController.tscn b/scenes/player_controller/PlayerController.tscn index abdad6bd..6ab18b29 100644 --- a/scenes/player_controller/PlayerController.tscn +++ b/scenes/player_controller/PlayerController.tscn @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bbbrf5ckydfna" path="res://scenes/player_controller/scripts/PlayerController.cs" id="1_poq2x"] [ext_resource type="PackedScene" uid="uid://cf3rrgr1imvv4" path="res://scenes/path/path.tscn" id="2_6lejt"] +[ext_resource type="Script" uid="uid://cw525n4mjqgw0" path="res://addons/forge/resources/ForgeTagContainer.cs" id="2_u8yay"] [ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_x835q"] [ext_resource type="Script" uid="uid://b44cse62qru7j" path="res://scenes/components/knockback/RKnockback.cs" id="3_cb2lu"] [ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://inputs/base_mode/base_mode.tres" id="3_cresl"] @@ -59,6 +60,11 @@ [ext_resource type="Texture2D" uid="uid://c40orhfdgsim" path="res://assets/ui/IconGodotNode/white/icon_circle.png" id="45_u8rdp"] [ext_resource type="PackedScene" uid="uid://cyw8p0p6a78tl" path="res://scenes/ui/healthbar/healthbar.tscn" id="47_76kmc"] +[sub_resource type="Resource" id="Resource_mpigw"] +script = ExtResource("2_u8yay") +ContainerTags = Array[String](["character.player"]) +metadata/_custom_type_script = "uid://cw525n4mjqgw0" + [sub_resource type="Resource" id="Resource_5gbhg"] script = ExtResource("11_u8yay") Tag = "events.player.empowered_action_used" @@ -148,6 +154,7 @@ bg_color = Color(0.15869555, 0.64034444, 0.906125, 1) [node name="Player" type="CharacterBody3D" unique_id=709076448] collision_mask = 272 script = ExtResource("1_poq2x") +BaseTags = SubResource("Resource_mpigw") EmpoweredActionUsed = SubResource("Resource_5gbhg") EmpoweredActionAbility = ExtResource("10_2rkt1") DefaultPermanentEffects = [ExtResource("5_2rkt1")] diff --git a/scenes/player_controller/components/weapon/WeaponSystem.cs b/scenes/player_controller/components/weapon/WeaponSystem.cs index a82322dd..e8a9d16c 100644 --- a/scenes/player_controller/components/weapon/WeaponSystem.cs +++ b/scenes/player_controller/components/weapon/WeaponSystem.cs @@ -40,9 +40,9 @@ public partial class WeaponSystem : RigidBody3D, IDamageDealer, IForgeEntity public delegate void WeaponRetrievedEventHandler(); [Export] - public ForgeTagContainer BaseTags { get; set; } = new(); + public ForgeTagContainer BaseTags { get; set; } [Export] public ForgeAbilityData[] WeaponAbilities { get; set; } = Array.Empty(); - [Export] public ForgeAbilityData FlyingTickAbility { get; set; } = new(); + [Export] public ForgeAbilityData FlyingTickAbility { get; set; } [Export] public RDamage RDamage { get; set; } @@ -262,6 +262,11 @@ public partial class WeaponSystem : RigidBody3D, IDamageDealer, IForgeEntity // TODO: Waiting on bug resolve _weaponFlyingAbility.Cancel(); }); + + Events.Subscribe(Tag.RequestTag(tagsManager, "events.weapon.flyingtick"), data => + { + GD.Print("Weapon tick triggered!"); + }); } public void WeaponLeft() diff --git a/scenes/player_controller/components/weapon/weapon.tscn b/scenes/player_controller/components/weapon/weapon.tscn index dd5c18ac..63d66ee6 100644 --- a/scenes/player_controller/components/weapon/weapon.tscn +++ b/scenes/player_controller/components/weapon/weapon.tscn @@ -1,11 +1,11 @@ [gd_scene format=3 uid="uid://ckm3d6k08a72u"] [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://cw525n4mjqgw0" path="res://addons/forge/resources/ForgeTagContainer.cs" id="2_l1xlx"] [ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_m0v1h"] [ext_resource type="Resource" uid="uid://cu0685gspk2fk" path="res://scenes/player_controller/resources/forge/exploding_sword_weapon_land.tres" id="2_pgbtr"] [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="Resource" uid="uid://busdbvfi3jiic" path="res://scenes/player_controller/resources/forge/exploding_sword_weapon_left.tres" id="3_7bruw"] [ext_resource type="ArrayMesh" uid="uid://cho5fixitrbds" path="res://assets/meshes/swords/resources/sword23.tres" id="3_svc06"] [ext_resource type="Resource" uid="uid://bl0mng4kl1xy8" path="res://scenes/player_controller/resources/forge/exploding_sword_weapon_flight.tres" id="4_2wsgo"] [ext_resource type="Resource" uid="uid://btnnpqann3ktp" path="res://scenes/player_controller/resources/forge/weapon_flying_tick_ability.tres" id="4_7bruw"] @@ -14,6 +14,11 @@ [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"] +[sub_resource type="Resource" id="Resource_06gln"] +script = ExtResource("2_l1xlx") +ContainerTags = Array[String](["weapon"]) +metadata/_custom_type_script = "uid://cw525n4mjqgw0" + [sub_resource type="Resource" id="Resource_jpdh0"] script = ExtResource("2_m0v1h") DamageDealt = 2.0 @@ -60,7 +65,8 @@ continuous_cd = true contact_monitor = true max_contacts_reported = 1 script = ExtResource("1_csqwk") -WeaponAbilities = [ExtResource("2_pgbtr"), ExtResource("3_7bruw"), ExtResource("4_2wsgo")] +BaseTags = SubResource("Resource_06gln") +WeaponAbilities = [ExtResource("2_pgbtr"), ExtResource("4_2wsgo")] FlyingTickAbility = ExtResource("4_7bruw") RDamage = SubResource("Resource_jpdh0") diff --git a/scenes/player_controller/scripts/PlayerController.cs b/scenes/player_controller/scripts/PlayerController.cs index 4726835b..f3069f3b 100644 --- a/scenes/player_controller/scripts/PlayerController.cs +++ b/scenes/player_controller/scripts/PlayerController.cs @@ -117,7 +117,7 @@ public partial class PlayerController : CharacterBody3D, [ExportCategory("Forge")] [ExportGroup("General")] [Export] - public ForgeTagContainer BaseTags { get; set; } = new(); + public ForgeTagContainer BaseTags { get; set; } [Export] public ForgeTag EmpoweredActionUsed; [ExportGroup("Abilities")]