generated from pancake-llc/package
-
Notifications
You must be signed in to change notification settings - Fork 12
Stat Modifier
Aprius edited this page Aug 28, 2024
·
3 revisions
public BaseStat attackStatBase;
private StatMediator _mediator;
private Stat _attack;
private void Start()
{
_mediator = new StatMediator();
_attack = new Stat(_mediator, attackStatBase);
var statModifierA = new StatModifier(attackStatBase.statType, new AddModifier(100), 0);
var statModifierB = new StatModifier(attackStatBase.statType, new MultiplyModifier(2), 1);
_mediator.AddModifier(statModifierA);
_mediator.AddModifier(statModifierB);
Debug.Log("Attack :" + _attack.Value);
App.Delay(1,
() =>
{
Debug.Log("Attack :" + _attack.Value);
_mediator.RemoveModifier(statModifierA);
Debug.Log("Attack :" + _attack.Value);
});
}
private void Update() { _mediator.Update(App.DeltaTime(ETimeMode.Normal)); }
- BaseStat : Contains basic stat information, you can create via menu
Create
>Pancake
>Misc
>Base Stat
using Pancake.Common;
using Pancake.StatModifier;
using Sisus.Init;
using UnityEngine;
public class Demo : MonoBehaviour<IStatModifierFactory>
{
public BaseStat attackStatBase;
private StatMediator _mediator;
private Stat _attack;
private IStatModifierFactory _factory;
protected override void Init(IStatModifierFactory argument) { _factory = argument; }
private void Start()
{
_mediator = new StatMediator();
_attack = new Stat(_mediator, attackStatBase);
var statModifierA = _factory.Create(EModifierType.Add, attackStatBase.statType, 100);
var statModifierB = _factory.Create(EModifierType.Multiply, attackStatBase.statType, 2, 1);
_mediator.AddModifier(statModifierA);
_mediator.AddModifier(statModifierB);
Debug.Log("Attack :" + _attack.Value);
App.Delay(1,
() =>
{
Debug.Log("Attack :" + _attack.Value);
_mediator.RemoveModifier(statModifierA);
Debug.Log("Attack :" + _attack.Value);
});
}
private void Update() { _mediator.Update(App.DeltaTime(ETimeMode.Normal)); }
}