Saltar al contenido principal

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

ParametroTipoDescripcion
playerWonbooltrue 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
}
}
}
Gestion de memoria

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.