using UnityEngine; namespace DDD { public class GameLevelStateSo : ScriptableObject { public int Level = 1; private int _lastLevel; private void OnValidate() { if (Level != _lastLevel) { _lastLevel = Level; var dirtyEvt = GameEvents.SmartVariablesDirtyEvent; dirtyEvt.DomainFlags = SmartVariablesDomain.PlayerLevel; EventBus.Broadcast(dirtyEvt); } } public void SetLevel(int newLevel) { if (Level == newLevel) return; Level = newLevel; _lastLevel = Level; var dirtyEvt = GameEvents.SmartVariablesDirtyEvent; dirtyEvt.DomainFlags = SmartVariablesDomain.PlayerLevel; EventBus.Broadcast(dirtyEvt); } public void IncreaseLevel(int delta = 1) { if (delta == 0) return; Level += delta; _lastLevel = Level; var dirtyEvt = GameEvents.SmartVariablesDirtyEvent; dirtyEvt.DomainFlags = SmartVariablesDomain.PlayerLevel; EventBus.Broadcast(dirtyEvt); } } }