Advertisement
Pro_Unit

Stat

Feb 5th, 2023
908
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.73 KB | None | 0 0
  1. using System;
  2. using Game.Tools.Extensions;
  3. using UnityEngine;
  4.  
  5. namespace Game.Stats
  6. {
  7.     public sealed class Stat : IStat
  8.     {
  9.         private readonly int _max;
  10.         private readonly IStatChanged _changed;
  11.  
  12.         private int _value;
  13.  
  14.         public Stat(int max, IStatChanged changed)
  15.         {
  16.             _max = max.ThrowExceptionIfLessThanOrEqualToZero(nameof(max));
  17.             _value = max;
  18.             _changed = changed ?? throw new ArgumentNullException(nameof(changed));
  19.         }
  20.  
  21.         public void Add(int value = 1) =>
  22.             ChangeValue(value);
  23.  
  24.         public void Subtract(int value = 1) =>
  25.             ChangeValue(-value);
  26.  
  27.         private void ChangeValue(int value)
  28.         {
  29.             _value += value;
  30.             _value = Mathf.Clamp(_value, 0, _max);
  31.  
  32.             _changed.OnStatChanged(_value, _max);
  33.         }
  34.     }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement