Move behavior identity onto runtime instances

This commit is contained in:
Meta Vens 2026-06-14 17:23:27 +01:00
commit a639569f72
6 changed files with 17 additions and 6 deletions

View file

@ -13,6 +13,7 @@ using static Unity.Mathematics.noise;
public abstract class Behavior
{
public BehaviorData Data { get; }
public string Kind { get; }
public EquippedItem Item { get; }
private ConsumableItemEffect Consumable { get; }
protected ItemManager ItemManager { get; }
@ -45,6 +46,7 @@ public abstract class Behavior
protected Behavior(BehaviorData data, EquippedItem item)
{
Data = data;
Kind = data?.Kind ?? "";
Item = item;
ItemManager = Item.ItemManager;
}
@ -52,6 +54,7 @@ public abstract class Behavior
protected Behavior(BehaviorData data, ConsumableItemEffect consumable)
{
Data = data;
Kind = data?.Kind ?? "";
Consumable = consumable;
ItemManager = consumable.Entity.ItemManager;
}

View file

@ -61,7 +61,7 @@ public class StatModifier : Behavior, IInitializableBehavior, IDisposable, IAlwa
_stats = Entity.Equipment
.Where(HasRequiredBehavior)
.SelectMany(gear => gear.Behaviors ?? Array.Empty<Behavior>())
.Where(behavior => BehaviorKindMatches(behavior.Data.Kind, _data.Stat.Target))
.Where(behavior => BehaviorKindMatches(behavior.Kind, _data.Stat.Target))
.Select(FindTargetStat)
.Where(stat => stat != null)
.ToArray();
@ -103,7 +103,7 @@ public class StatModifier : Behavior, IInitializableBehavior, IDisposable, IAlwa
{
return string.IsNullOrWhiteSpace(_data.RequireBehavior) ||
(gear?.Behaviors ?? Array.Empty<Behavior>())
.Any(behavior => BehaviorKindMatches(behavior.Data.Kind, _data.RequireBehavior));
.Any(behavior => BehaviorKindMatches(behavior.Kind, _data.RequireBehavior));
}
private void ApplyModifier()