2025-08-17 12:49:06 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace DDD
|
|
|
|
{
|
2025-08-18 10:48:36 +00:00
|
|
|
public class GameLevelState : ScriptableObject
|
2025-08-17 12:49:06 +00:00
|
|
|
{
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|