Vision general de la API del SDK
El SDK de MCE proporciona una superficie de API publica limpia y estable para interactuar con el motor desde su codigo de juego. Todas las interfaces del SDK residen en el namespace OpenMon.MCE.SDK.
Principios de diseno
- Basado en interfaces: Todas las APIs publicas se exponen como interfaces, no como clases concretas. Esto permite que la implementacion evolucione sin romper su codigo.
- Orientado a lectura: La mayoria de los metodos del SDK son consultas de solo lectura. Las mutaciones ocurren a traves de los sistemas internos del motor (CommandGraph, Inspector, etc.).
- Orientado a eventos: Los cambios de estado clave se comunican a traves de eventos de C#.
- Inyectado con Zenject: Acceda a las interfaces del SDK mediante el atributo
[Inject].
Punto de entrada
El punto de entrada principal es IMonsterCaptureEngine:
[Inject] private IMonsterCaptureEngine engine;
Desde esta interfaz, accede a todos los subsistemas:
| Propiedad | Interfaz | Proposito |
|---|---|---|
engine.Database | IMonsterDatabase | Consultar monstruos, movimientos, objetos, tipos |
engine.Battle | IBattleSystem | Estado de batalla y eventos |
engine.Player | IPlayerData | Equipo del jugador, dinero, nombre, medallas |
engine.SaveSystem | ISaveSystem | Operaciones de guardado/carga |
engine.Version | string | Cadena de version del motor |
Ejemplo rapido
using OpenMon.MCE.SDK;
using Zenject;
public class GameDashboard : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;
private void Start()
{
// Query database
var allMonsters = engine.Database.GetAllMonsters();
Debug.Log($"Database has {allMonsters.Count} monster species");
// Check player state
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}");
// Listen to battle events
engine.Battle.OnBattleStarted += () => Debug.Log("Battle!");
engine.Battle.OnBattleEnded += (won) => Debug.Log($"Won: {won}");
// Save/load
if (engine.SaveSystem.HasSaveData(0))
Debug.Log("Save slot 0 has data");
}
}
Consulte las paginas individuales de la API para la documentacion detallada de cada interfaz.