token manager for projectile

This commit is contained in:
2026-05-16 01:29:02 +02:00
parent afa335e7bf
commit 4cd67023d9
7 changed files with 83 additions and 7 deletions

View File

@@ -15,6 +15,7 @@ using Gamesmiths.Forge.Tags;
using Godot;
using Movementtests.forge.abilities;
using Movementtests.interfaces;
using Movementtests.managers;
using Movementtests.scenes.components.knockback;
using Movementtests.systems;
using Movementtests.tools;
@@ -38,6 +39,8 @@ public partial class Enemy : CharacterBody3D,
public TagsManager TagsManager => this.DependOn<TagsManager>();
[Dependency]
public CuesManager CuesManager => this.DependOn<CuesManager>();
[Dependency]
public TokenManager TokenManager => this.DependOn<TokenManager>();
#endregion
@@ -140,13 +143,16 @@ public partial class Enemy : CharacterBody3D,
private void ProjectileTokenRequested(EventData obj)
{
if (IsStunned()) return;
// TODO: replace with token manager
var token = TokenManager.RequestToken(this);
if (token == null) return;
Events.Raise(new EventData<OnProjectileSpawned>
{
EventTags = Tag.RequestTag(TagsManager, "events.enemy.launch_projectile").GetSingleTagContainer()!,
Source = this,
Target = Target as IForgeEntity,
Payload = new OnProjectileSpawned(Vector3.Up, 20, Vector3.Up)
Payload = new OnProjectileSpawned(Vector3.Up, 20, Vector3.Up, Token: token)
});
}