Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Game.Tools.Extensions;
- using UnityEngine;
- namespace Game.Stats
- {
- public sealed class Stat : IStat
- {
- private readonly int _max;
- private readonly IStatChanged _changed;
- private int _value;
- public Stat(int max, IStatChanged changed)
- {
- _max = max.ThrowExceptionIfLessThanOrEqualToZero(nameof(max));
- _value = max;
- _changed = changed ?? throw new ArgumentNullException(nameof(changed));
- }
- public void Add(int value = 1) =>
- ChangeValue(value);
- public void Subtract(int value = 1) =>
- ChangeValue(-value);
- private void ChangeValue(int value)
- {
- _value += value;
- _value = Mathf.Clamp(_value, 0, _max);
- _changed.OnStatChanged(_value, _max);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement