Skip to main content

Stat

Overview

A generic stat implementation, allow a float to regenerate, drain, have a min and max. Perfect for quick interations and prototyping

Constructors

public Stat(StatData statData)
public Stat(float current, float maximum, float regenerateRate, float drainRate, float min = 0)

Events

public onStatEmpty;
public onStatFull;
public onStatUpdate;

Public Methods

public StatData GetStatData()
public virtual void Drain()
public virtual void Adjust(float amount)
public virtual void Regenerate()

Stat Data

The stat data is a container to store stat data in.

public struct StatData
{
public float current;
public float minimum;
public float maximum;
public float regenerateRate;
public float drainRate;

public StatData(float current, float minimum, float maximum, float regenerateRate, float drainRate)
{
this.current = current;
this.minimum = minimum;
this.maximum = maximum;
this.regenerateRate = regenerateRate;
this.drainRate = drainRate;
}
}

Example

A basic example of this would be using it for health.


//Set stat data inside inspector
[SerializedField] private StatData _healthData;

private Stat _health;

private void Awake()
{
//Load stat based on stat data on awake
_health = new StatData(_healthData);

//Assign delegates
_health.onEmpty += OnDeath;
_health.onUpdate += UIManager.HealthBarUpdate;
}

private void OnDeath() {}

private void Update()
{
//Health regeneration
_health.Regenerate();
}

public void OnTakeDamage(float damage) => _health.Adjust(-damage);