Обзор SDK API
SDK MCE предоставляет чистый, стабильный публичный API для взаимодействия с движком из вашего игрового кода. Все интерфейсы SDK находятся в пространстве имён OpenMon.MCE.SDK.
Принципы проектирования
- На основе интерфейсов: Все публичные API представлены как интерфейсы, а не конкретные классы. Это позволяет реализации развиваться без нарушения вашего кода.
- Ориентированность на чтение: Большинство методов SDK -- запросы только для чтения. Мутации происходят через внутренние системы движка (CommandGraph, Inspector и т.д.).
- Событийная модель: Ключевые изменения состояния передаются через события C#.
- Внедрение через Zenject: Доступ к интерфейсам SDK через атрибут
[Inject].
Точка входа
Основная точка входа -- IMonsterCaptureEngine:
[Inject] private IMonsterCaptureEngine engine;
Через этот интерфейс вы получаете доступ ко всем подсистемам:
| Свойство | Интерфейс | Назначение |
|---|---|---|
engine.Database | IMonsterDatabase | Запросы к базе монстров, приёмов, предметов, типов |
engine.Battle | IBattleSystem | Состояние боя и события |
engine.Player | IPlayerData | Ростер игрока, деньги, имя, значки |
engine.SaveSystem | ISaveSystem | Операции сохранения/загрузки |
engine.Version | string | Строка версии движка |
Быстрый пример
using OpenMon.MCE.SDK;
using Zenject;
public class GameDashboard : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;
private void Start()
{
// Запрос к базе данных
var allMonsters = engine.Database.GetAllMonsters();
Debug.Log($"Database has {allMonsters.Count} monster species");
// Проверка состояния игрока
Debug.Log($"Player: {engine.Player.PlayerName}");
Debug.Log($"Team size: {engine.Player.PlayerRoster.Count}");
Debug.Log($"Money: {engine.Player.Money}");
Debug.Log($"Badges: {engine.Player.BadgeCount}");
// Прослушивание событий боя
engine.Battle.OnBattleStarted += () => Debug.Log("Battle!");
engine.Battle.OnBattleEnded += (won) => Debug.Log($"Won: {won}");
// Сохранение/загрузка
if (engine.SaveSystem.HasSaveData(0))
Debug.Log("Save slot 0 has data");
}
}
Подробную документа цию по каждому интерфейсу см. на отдельных страницах API.