Trying custom execution periodic data

This commit is contained in:
2026-03-28 18:20:47 +01:00
parent cc70fb361b
commit ef454e9502
5 changed files with 36 additions and 54 deletions

View File

@@ -90,8 +90,7 @@ public partial class Enemy : CharacterBody3D,
var baseTags = new TagContainer(
forgeManager.TagsManager,
[
Tag.RequestTag(forgeManager.TagsManager, "character.player"),
Tag.RequestTag(forgeManager.TagsManager, "class.warrior")
Tag.RequestTag(forgeManager.TagsManager, "character.enemy")
]);
Attributes = new EntityAttributes(new EnemyAttributeSet());

View File

@@ -106,7 +106,7 @@ public partial class WeaponSystem : RigidBody3D, IDamageDealer, IForgeEntity
FlyingState.StateEntered += FlyingStarted;
FlyingState.StateExited += FlyingEnded;
WeaponFlyingTick.Timeout += RaiseWeaponFlyingTickEvent;
// WeaponFlyingTick.Timeout += RaiseWeaponFlyingTickEvent;
}
public void FlyingStarted()

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using Gamesmiths.Forge.Abilities;
using Gamesmiths.Forge.Core;
using Gamesmiths.Forge.Effects;
using Gamesmiths.Forge.Effects.Calculator;
using Gamesmiths.Forge.Effects.Components;
using Gamesmiths.Forge.Effects.Duration;
using Gamesmiths.Forge.Effects.Magnitudes;
@@ -22,6 +23,7 @@ using Movementtests.player_controller.Scripts;
using Movementtests.scenes.player_controller.scripts;
using Movementtests.tools;
using Movementtests.forge.abilities;
using Movementtests.tools.calculators;
using Movementtests.tools.effects;
using RustyOptions;
@@ -771,7 +773,18 @@ public partial class PlayerController : CharacterBody3D,
);
EffectsManager.ApplyEffect(new Effect(flyingGrantEffect, new EffectOwnership(this, this)));
flyingWeaponEffect = new EffectData(
"Flying Weapon",
new DurationData(DurationType.Infinite),
customExecutions:
[
new FlyingWeaponExecution(WeaponSystem)
],
periodicData: new PeriodicData(new ScalableFloat(1f), false, PeriodInhibitionRemovedPolicy.ResetPeriod)
);
flyingWeaponEffectHandle = EffectsManager.ApplyEffect(new Effect(flyingWeaponEffect, new EffectOwnership(this, this)));
flyingWeaponEffectHandle?.SetInhibit(true);
}
// Forge events
var weaponLeftToken = WeaponSystem.Events.Subscribe<WeaponLeftPayload>(WeaponSystem.WeaponLeftTag, OnWeaponLeft);
@@ -779,8 +792,13 @@ public partial class PlayerController : CharacterBody3D,
var weaponLandedToken = WeaponSystem.Events.Subscribe<WeaponLandPayload>(WeaponSystem.WeaponLandTag, OnWeaponLanded);
}
private EffectData flyingWeaponEffect;
private ActiveEffectHandle? flyingWeaponEffectHandle;
public void OnWeaponLeft(EventData<WeaponLeftPayload> data)
{
//flyingWeaponEffectHandle?.SetInhibit(false);
var target = data.Target;
var tagsManager = ForgeManager.GetTagsManager(this);
@@ -791,6 +809,8 @@ public partial class PlayerController : CharacterBody3D,
public void OnWeaponLanded(EventData<WeaponLandPayload> data)
{
flyingWeaponEffectHandle?.SetInhibit(true);
var source = data.Source;
var target = data.Target;
var magnitude = data.EventMagnitude;