ProjectDDD/Assets/_DDD/_Scripts/GameState/GameLevelStateSo.cs

42 lines
1.2 KiB
C#

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);
}
}
}