Перейти к основному содержимому

IBattleSystem

Контракт для взаимодействия с системой сражений из игрового кода. Предоставляет проверку состояния боя и подписку на события.

Пространство имён: OpenMon.MCE.SDK

Определение

public interface IBattleSystem
{
bool IsInBattle { get; }
event Action OnBattleStarted;
event Action<bool> OnBattleEnded;
}

Свойства

IsInBattle

Идёт ли в данный момент сражение.

Тип: bool

Возвращает true с момента загрузки сцены сражения до обработки результатов боя и возобновления открытого мира.

События

OnBattleStarted

Срабатывает при начале боя, после загрузки сцены сражения и инициализации BattleManager.

Сигнатура: event Action OnBattleStarted

OnBattleEnded

Срабатывает при завершении боя, до выгрузки сцены сражения.

Сигнатура: event Action<bool> OnBattleEnded

ПараметрТипОписание
playerWonbooltrue если игрок победил, false если игрок проиграл, сбежал или был побеждён

Пример использования

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()
{
// Отключение определённых элементов UI во время боя
if (battle.IsInBattle)
{
// Скрыть элементы HUD открытого мира
}
}
}
Управление памятью

Всегда отписывайтесь от событий в OnDisable() или OnDestroy() для предотвращения утечек памяти. Это особенно важно для MonoBehaviour'ов, которые могут быть уничтожены при переходах между сценами.