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

Обзор SDK API

SDK MCE предоставляет чистый, стабильный публичный API для взаимодействия с движком из вашего игрового кода. Все интерфейсы SDK находятся в пространстве имён OpenMon.MCE.SDK.

Принципы проектирования

  • На основе интерфейсов: Все публичные API представлены как интерфейсы, а не конкретные классы. Это позволяет реализации развиваться без нарушения вашего кода.
  • Ориентированность на чтение: Большинство методов SDK -- запросы только для чтения. Мутации происходят через внутренние системы движка (CommandGraph, Inspector и т.д.).
  • Событийная модель: Ключевые изменения состояния передаются через события C#.
  • Внедрение через Zenject: Доступ к интерфейсам SDK через атрибут [Inject].

Точка входа

Основная точка входа -- IMonsterCaptureEngine:

[Inject] private IMonsterCaptureEngine engine;

Через этот интерфейс вы получаете доступ ко всем подсистемам:

СвойствоИнтерфейсНазначение
engine.DatabaseIMonsterDatabaseЗапросы к базе монстров, приёмов, предметов, типов
engine.BattleIBattleSystemСостояние боя и события
engine.PlayerIPlayerDataРостер игрока, деньги, имя, значки
engine.SaveSystemISaveSystemОперации сохранения/загрузки
engine.VersionstringСтрока версии движка

Быстрый пример

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.