IBattleSystem
Contrato para interactuar con el sistema de batalla desde el codigo del juego. Proporciona verificacion del estado de batalla y suscripcion a eventos.
Namespace: OpenMon.MCE.SDK
Definicion
public interface IBattleSystem
{
bool IsInBattle { get; }
event Action OnBattleStarted;
event Action<bool> OnBattleEnded;
}
Propiedades
IsInBattle
Si una batalla esta actualmente en progreso.
Tipo: bool
Devuelve true desde el momento en que se carga la escena de batalla hasta que los resultados de la batalla son procesados y el mundo de exploracion se reanuda.
Eventos
OnBattleStarted
Se dispara cuando comienza una batalla, despues de que la escena de batalla se ha cargado y el BattleManager se ha inicializado.
Firma: event Action OnBattleStarted
OnBattleEnded
Se dispara cuando concluye una batalla, antes de que la escena de batalla se descargue.
Firma: event Action<bool> OnBattleEnded
| Parametro | Tipo | Descripcion |
|---|---|---|
playerWon | bool | true si el jugador gano, false si el jugador perdio, huyo o fue derrotado |
Ejemplo de uso
using OpenMon.MCE.SDK;
using Zenject;
public class BattleTracker : MonoBehaviour
{
[Inject] private IBattleSystem battle;
private int totalBattles;
private int wins;
private void OnEnable()
{
battle.OnBattleStarted += OnBattleStart;
battle.OnBattleEnded += OnBattleEnd;
}
private void OnDisable()
{
battle.OnBattleStarted -= OnBattleStart;
battle.OnBattleEnded -= OnBattleEnd;
}
private void OnBattleStart()
{
totalBattles++;
}
private void OnBattleEnd(bool playerWon)
{
if (playerWon) wins++;
Debug.Log($"Record: {wins}/{totalBattles}");
}
private void Update()
{
// Disable certain UI when in battle
if (battle.IsInBattle)
{
// Hide overworld HUD elements
}
}
}
Siempre desuscrbase de eventos en OnDisable() u OnDestroy() para prevenir fugas de memoria. Esto es especialmente importante para MonoBehaviours que pueden ser destruidos durante transiciones de escena.