using AxibugProtobuf; using UnityEngine; namespace AxibugEmuOnline.Client { public interface IEmuCore { GameObject gameObject { get; } /// 获得模拟器核心中的状态快照对象 object GetState(); /// 获得模拟器核心中的状态快照字节数据 byte[] GetStateBytes(); /// 加载状态快照 /// 该对象应该来自核心的方法的返回值,或是从返回的byte数组构建 void LoadState(object state); /// 加载状态快照 /// 该对象应该来自核心的返回的byte数组 void LoadStateFromBytes(byte[] data); /// 暂停核心推帧 void Pause(); /// 恢复核心推帧(从Pause状态恢复) void Resume(); /// 启动模拟器逻辑 MsgBool StartGame(RomFile romFile); /// 释放模拟器核心 void Dispose(); /// 重置核心,通常由模拟器核心提供的功能 void DoReset(); /// 获得模拟器核心的控制器设置器 /// IControllerSetuper GetControllerSetuper(); /// 核心所属平台 RomPlatformType Platform { get; } /// 获取当前模拟器帧序号,在加载快照和Reset后,应当重置为0 uint Frame { get; } } public static class IEnumCoreTool { public static bool IsNull(this IEmuCore core) { if (core == null) return true; return core.Equals(null); } } }