Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Core.Interfaces;
- using UnityEngine;
- namespace Game
- {
- public class Coins : ScriptableObject, IOriginator<IMemento>
- {
- [SerializeField] private int _value;
- public int Value
- {
- get => _value;
- private set
- {
- if (value == _value)
- return;
- _value = value;
- }
- }
- public bool IsEmpty => Value <= 0;
- public void Add() => Value++;
- public void Add(int amount)
- {
- if (amount < 0)
- throw new ArgumentException("Argument less than zero.", nameof(amount));
- Value += amount;
- }
- #region Memento
- public IMemento SaveState() => new Memento(_value);
- public void RestoreState(IMemento memento) => _value = (int)memento.State;
- public void ResetToDefaultState() => _value = 0;
- [Serializable]
- public struct Memento : IMemento
- {
- private readonly int _value;
- public int Value => _value;
- public object State => Value;
- public Memento(int value) => _value = value;
- }
- #endregion
- }
- }
Add Comment
Please, Sign In to add comment