diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgee.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgee.cs index e1654a05..17ed2dca 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgee.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgee.cs @@ -1,4 +1,4 @@ -using AxibugEmuOnline.Client; +锘縰sing AxibugEmuOnline.Client; using AxibugEmuOnline.Client.ClientCore; using AxibugProtobuf; using Essgee; @@ -17,19 +17,19 @@ using System.Text; using UnityEngine; using UnityEngine.UI; -public class UEssgee : MonoBehaviour, IEmuCore +public class UEssgee : IEmuCore { public static UEssgee instance; public static System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); public static bool bInGame => instance?.emulatorHandler?.IsRunning == true ? true : false; - public RomPlatformType Platform => mPlatform; + public override RomPlatformType Platform => mPlatform; - public uint Frame => (uint)emulatorHandler.AxiEmuRunFrame; + public override uint Frame => (uint)emulatorHandler.AxiEmuRunFrame; - public Texture OutputPixel => graphicsHandler.rawBufferWarper; + public override Texture OutputPixel => graphicsHandler.rawBufferWarper; - public RawImage DrawCanvas => graphicsHandler.DrawCanvas; + public override RawImage DrawCanvas => graphicsHandler.DrawCanvas; public static bool bLogicUpdatePause { get; private set; } #region @@ -71,38 +71,38 @@ public class UEssgee : MonoBehaviour, IEmuCore } - #region EmuCore接入实现 + #region EmuCore鎺ュ叆瀹炵幇 - public object GetState() + public override object GetState() { return emulatorHandler.GetStateData(); } - public byte[] GetStateBytes() + public override byte[] GetStateBytes() { return emulatorHandler.GetStateData(); } - public void LoadState(object state) + public override void LoadState(object state) { emulatorHandler.SetStateData((byte[])state); } - public void LoadStateFromBytes(byte[] data) + public override void LoadStateFromBytes(byte[] data) { emulatorHandler.SetStateData(data); } - public void Pause() + public override void Pause() { bLogicUpdatePause = false; } - public void Resume() + public override void Resume() { bLogicUpdatePause = true; } - public MsgBool StartGame(RomFile romFile) + public override MsgBool StartGame(RomFile romFile) { mPlatform = romFile.Platform; @@ -110,7 +110,7 @@ public class UEssgee : MonoBehaviour, IEmuCore bLogicUpdatePause = true; - //保存当前正在进行的游戏存档 + //淇濆瓨褰撳墠姝e湪杩涜鐨勬父鎴忓瓨妗 if (emulatorHandler != null && !emulatorHandler.IsRunning) { emulatorHandler.SaveCartridge(); @@ -119,10 +119,10 @@ public class UEssgee : MonoBehaviour, IEmuCore if (LoadAndRunCartridge(romFile.LocalFilePath)) return true; else - return "Rom加载失败"; + return "Rom鍔犺浇澶辫触"; } - public void Dispose() + public override void Dispose() { if (!emulatorHandler.IsRunning) { @@ -131,36 +131,36 @@ public class UEssgee : MonoBehaviour, IEmuCore ShutdownEmulation(); } - public void DoReset() + public override void DoReset() { emulatorHandler.SaveCartridge(); emulatorHandler.Reset(); } - public IControllerSetuper GetControllerSetuper() + public override IControllerSetuper GetControllerSetuper() { return mUniKeyboard.ControllerMapper; } - public bool PushEmulatorFrame() + public override bool PushEmulatorFrame() { if (!emulatorHandler.IsRunning) return false; if (!bLogicUpdatePause) return false; - //采集本帧Input + //閲囬泦鏈抚Input bool bhadNext = mUniKeyboard.SampleInput(); - //如果未收到Input数据,核心帧不推进 + //濡傛灉鏈敹鍒癐nput鏁版嵁,鏍稿績甯т笉鎺ㄨ繘 if (!bhadNext) return false; emulatorHandler.Update_Frame(); return true; } - public void AfterPushFrame() + public override void AfterPushFrame() { } - public void GetAudioParams(out int frequency, out int channels) + public override void GetAudioParams(out int frequency, out int channels) { frequency = soundHandler.sampleRate; channels = soundHandler.channle; @@ -169,10 +169,10 @@ public class UEssgee : MonoBehaviour, IEmuCore void InitAll(IGameMetaReources metaresources, IEssgeeIOSupport uegIO, string CustonDataDir) { - //初始化配置 + //鍒濆鍖栭厤缃 InitAppEnvironment(CustonDataDir, uegIO); InitEmu(); - //细节初始化 + //缁嗚妭鍒濆鍖 InitializeHandlers(metaresources); } @@ -218,7 +218,7 @@ public class UEssgee : MonoBehaviour, IEmuCore if (AppEnvironment.EnableLogger) { - //TODO 关闭Debug + //TODO 鍏抽棴Debug //Logger.Flush(); //Logger.Close(); } @@ -229,7 +229,7 @@ public class UEssgee : MonoBehaviour, IEmuCore //keysDown = new List(); } - #region 细节初始化 + #region 缁嗚妭鍒濆鍖 private void InitializeHandlers(IGameMetaReources metaresources) { @@ -277,7 +277,7 @@ public class UEssgee : MonoBehaviour, IEmuCore #endregion void Dispose(bool disposing) { - //TODO 释放时 + //TODO 閲婃斁鏃 //if (disposing) //{ // if (components != null) components.Dispose(); @@ -289,10 +289,10 @@ public class UEssgee : MonoBehaviour, IEmuCore //base.Dispose(disposing); } - #region 配置 + #region 閰嶇疆 private static void LoadConfiguration() { - //TODO 暂时跳过这里的配置加载 + //TODO 鏆傛椂璺宠繃杩欓噷鐨勯厤缃姞杞 //Directory.CreateDirectory(EmuStandInfo.programDataDirectory); //if (!File.Exists(EmuStandInfo.programConfigPath) || (EmuStandInfo.Configuration = EmuStandInfo.programConfigPath.DeserializeFromFile()) == null) //{ @@ -397,12 +397,12 @@ public class UEssgee : MonoBehaviour, IEmuCore } public static void SaveConfiguration() { - //不用保存这个配置 + //涓嶇敤淇濆瓨杩欎釜閰嶇疆 //EmuStandInfo.Configuration.SerializeToFile(EmuStandInfo.programConfigPath); } #endregion - #region 模拟器基本设置 + #region 妯℃嫙鍣ㄥ熀鏈缃 public void SetEmuFpsLimit(bool bOpen) { @@ -427,12 +427,12 @@ public class UEssgee : MonoBehaviour, IEmuCore } #endregion - #region 模拟器生命周期 + #region 妯℃嫙鍣ㄧ敓鍛藉懆鏈 private void PowerOnWithoutCartridge(Type machineType) { - //TODO IsRecording?? 可能需要实现 + //TODO IsRecording?? 鍙兘闇瑕佸疄鐜 //if (soundHandler.IsRecording) // soundHandler.CancelRecording(); @@ -456,7 +456,7 @@ public class UEssgee : MonoBehaviour, IEmuCore var (machineType, romData) = CartridgeLoader.Load(fileName, "ROM image"); - //TODO IsRecording?? 可能需要实现 + //TODO IsRecording?? 鍙兘闇瑕佸疄鐜 //if (soundHandler.IsRecording) // soundHandler.CancelRecording(); @@ -481,13 +481,13 @@ public class UEssgee : MonoBehaviour, IEmuCore //toggleLayersToolStripMenuItem.Enabled = enableChannelsToolStripMenuItem.Enabled = true; - //初始化不同平台的按钮 + //鍒濆鍖栦笉鍚屽钩鍙扮殑鎸夐挳 mUniKeyboard.Init(emulatorHandler.emulator); emulatorHandler.Startup(); - //初始化音频 + //鍒濆鍖栭煶棰 soundHandler.Initialize(); //SizeAndPositionWindow(); @@ -549,7 +549,7 @@ public class UEssgee : MonoBehaviour, IEmuCore //{ if (!AppEnvironment.TemporaryDisableCustomExceptionForm) { - //TODO debug窗口? + //TODO debug绐楀彛锛 //(_, ExceptionResult result, string prefix, string postfix) = ExceptionForm.GetExceptionInfo(ex); //if (result == ExceptionResult.Continue) @@ -661,7 +661,7 @@ public class UEssgee : MonoBehaviour, IEmuCore } #endregion - #region 模拟器内部事件 + #region 妯℃嫙鍣ㄥ唴閮ㄤ簨浠 private void EmulatorHandler_SendLogMessage(object sender, SendLogMessageEventArgs e) { @@ -699,7 +699,7 @@ public class UEssgee : MonoBehaviour, IEmuCore private void EmulatorHandler_SizeScreen(object sender, SizeScreenEventArgs e) { - //TODO 待实现 屏幕大小 + //TODO 寰呭疄鐜 灞忓箷澶у皬 //this.CheckInvokeMethod(delegate () //{ @@ -710,7 +710,7 @@ public class UEssgee : MonoBehaviour, IEmuCore private void EmulatorHandler_ChangeViewport(object sender, ChangeViewportEventArgs e) { - //TODO 待实现 + //TODO 寰呭疄鐜 //this.CheckInvokeMethod(delegate () //{ @@ -721,7 +721,7 @@ public class UEssgee : MonoBehaviour, IEmuCore private void EmulatorHandler_PollInput(object sender, PollInputEventArgs e) { - //TODO Input实现 + //TODO Input瀹炵幇 //e.Keyboard = mUniKeyboard.mKeyCodeCore.GetPressedKeys(); e.Keyboard.AddRange(mUniKeyboard.GetPressedKeys()); @@ -775,7 +775,7 @@ public class UEssgee : MonoBehaviour, IEmuCore /* Images, ex. GB Printer printouts */ //image.Save(filePath); - //TODO 图像存储 + //TODO 鍥惧儚瀛樺偍 } else if (e.Data is byte[] raw) { @@ -801,7 +801,7 @@ public class UEssgee : MonoBehaviour, IEmuCore if (emulatorHandler.IsPaused) { - //TODO 音频暂停? + //TODO 闊抽鏆傚仠锛 //soundHandler?.ClearSampleBuffer(); } } @@ -825,7 +825,7 @@ public class UEssgee : MonoBehaviour, IEmuCore // waveHeader.FileLength += (uint)e.MixedSamples.Length; //} - //TODO 音频处理 + //TODO 闊抽澶勭悊 //soundHandler.SubmitSamples(e.MixedSamples, e.ChannelSamples, e.MixedSamples.Length); soundHandler.SubmitSamples(e.MixedSamples, e.ChannelSamples, e.MixedSamplesLength); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs index eaef5d52..764a1a18 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UMAME.cs @@ -9,7 +9,7 @@ using System.Text; using UnityEngine; using UnityEngine.UI; -public class UMAME : MonoBehaviour, IEmuCore +public class UMAME : IEmuCore { public static UMAME instance { get; private set; } public MAMEEmu emu { get; private set; } @@ -38,9 +38,9 @@ public class UMAME : MonoBehaviour, IEmuCore public string EmuDataPath { get { return App.PersistentDataPath(Platform); } } public string RomPath => EmuDataPath + "/RemoteRoms/"; public string SavePath => EmuDataPath + "/sav/"; - public RomPlatformType Platform { get { return mPlatform; } } + public override RomPlatformType Platform { get { return mPlatform; } } RomPlatformType mPlatform = RomPlatformType.Cps1; - public uint Frame => (uint)emu.currEmuFrame; + public override uint Frame => (uint)emu.currEmuFrame; void Awake() { instance = this; @@ -67,31 +67,31 @@ public class UMAME : MonoBehaviour, IEmuCore StopGame(); } #region 瀹炵幇鎺ュ彛 - public object GetState() + public override object GetState() { return SaveState(); } - public byte[] GetStateBytes() + public override byte[] GetStateBytes() { return SaveState(); } - public void LoadState(object state) + public override void LoadState(object state) { LoadState((byte[])state); } - public void LoadStateFromBytes(byte[] data) + public override void LoadStateFromBytes(byte[] data) { LoadState(data); } - public void Pause() + public override void Pause() { bLogicUpdatePause = false; } - public void Resume() + public override void Resume() { bLogicUpdatePause = true; } - public MsgBool StartGame(RomFile romFile) + public override MsgBool StartGame(RomFile romFile) { mPlatform = romFile.Platform; mTimeSpan.InitStandTime(); @@ -100,22 +100,22 @@ public class UMAME : MonoBehaviour, IEmuCore else return "Rom鍔犺浇澶辫触"; } - public void Dispose() + public override void Dispose() { StopGame(); } - public void DoReset() + public override void DoReset() { StopGame(); LoadGame(mChangeRomName, false); } - public IControllerSetuper GetControllerSetuper() + public override IControllerSetuper GetControllerSetuper() { return mUniKeyboard.ControllerMapper; } - public void GetAudioParams(out int frequency, out int channels) + public override void GetAudioParams(out int frequency, out int channels) { mUniSoundPlayer.GetAudioParams(out frequency, out channels); } @@ -160,7 +160,7 @@ public class UMAME : MonoBehaviour, IEmuCore } } - public bool PushEmulatorFrame() + public override bool PushEmulatorFrame() { if (!bInGame) return false; if (!bLogicUpdatePause) return false; @@ -175,7 +175,7 @@ public class UMAME : MonoBehaviour, IEmuCore emu.UpdateFrame(); return true; } - public void AfterPushFrame() + public override void AfterPushFrame() { mFPS.text = ($"fpsv {mUniVideoPlayer.videoFPS.ToString("F2")} fpsa {mUniSoundPlayer.audioFPS.ToString("F2")} ,Idx:{App.roomMgr.netReplay?.mCurrClientFrameIdx},RIdx:{App.roomMgr.netReplay?.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay?.mRemoteForwardCount} ,RD:{App.roomMgr.netReplay?.mRemoteForwardCount} ,D:{App.roomMgr.netReplay?.mDiffFrameCount} ,Q:{App.roomMgr.netReplay?.mNetReplayQueue.Count}"); } @@ -227,9 +227,9 @@ public class UMAME : MonoBehaviour, IEmuCore } - public Texture OutputPixel => mUniVideoPlayer.rawBufferWarper; + public override Texture OutputPixel => mUniVideoPlayer.rawBufferWarper; - public RawImage DrawCanvas => mUniVideoPlayer.DrawCanvas; + public override RawImage DrawCanvas => mUniVideoPlayer.DrawCanvas; } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs index 5421409f..2f318b37 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/NesEmulator/NesEmulator.cs @@ -11,7 +11,7 @@ using VirtualNes.Core.Debug; namespace AxibugEmuOnline.Client { - public class NesEmulator : MonoBehaviour, IEmuCore + public class NesEmulator : IEmuCore { public VideoProvider VideoProvider; public AudioProvider AudioProvider; @@ -35,12 +35,12 @@ namespace AxibugEmuOnline.Client AudioProvider.NesEmu = this; } - public RomPlatformType Platform => RomPlatformType.Nes; + public override RomPlatformType Platform => RomPlatformType.Nes; private CoreSupporter m_coreSupporter; /// /// 鎸囧畾ROM寮濮嬫父鎴 /// - public MsgBool StartGame(RomFile rom) + public override MsgBool StartGame(RomFile rom) { StopGame(); @@ -63,28 +63,28 @@ namespace AxibugEmuOnline.Client } } - public void Pause() + public override void Pause() { IsPause = true; } - public void Resume() + public override void Resume() { IsPause = false; } - public void DoReset() + public override void DoReset() { NesCore.Reset(); } - public void LoadState(object state) + public override void LoadState(object state) { NesCore.LoadState((State)state); } - public object GetState() + public override object GetState() { return NesCore.GetState(); } @@ -93,7 +93,7 @@ namespace AxibugEmuOnline.Client /// 鑾峰彇鍗虫椂瀛樻。 /// /// - public byte[] GetStateBytes() + public override byte[] GetStateBytes() { return NesCore.GetState().ToBytes(); } @@ -104,14 +104,14 @@ namespace AxibugEmuOnline.Client /// /// - public void LoadStateFromBytes(byte[] data) + public override void LoadStateFromBytes(byte[] data) { var st = new State(); st.FromByte(data); NesCore.LoadState(st); } - public uint Frame => NesCore.FrameCount; + public override uint Frame => NesCore.FrameCount; /// /// 鍋滄娓告垙 @@ -127,7 +127,7 @@ namespace AxibugEmuOnline.Client private ControllerState m_lastState; #endif //鎺ㄨ繘甯 - public bool PushEmulatorFrame() + public override bool PushEmulatorFrame() { if (NesCore == null || IsPause) return false; @@ -145,23 +145,22 @@ namespace AxibugEmuOnline.Client NesCore.pad.Sync(controlState); NesCore.EmulateFrame(true); - return true; } - public unsafe void AfterPushFrame() + public override unsafe void AfterPushFrame() { var screenBuffer = NesCore.ppu.GetScreenPtr(); VideoProvider.SetDrawData(screenBuffer); } - public IControllerSetuper GetControllerSetuper() + public override IControllerSetuper GetControllerSetuper() { return ControllerMapper; } - public void Dispose() + public override void Dispose() { StopGame(); } @@ -197,9 +196,9 @@ namespace AxibugEmuOnline.Client } #endif - public Texture OutputPixel => VideoProvider.OutputPixel; - public RawImage DrawCanvas => VideoProvider.Drawer; - public void GetAudioParams(out int frequency, out int channels) + public override Texture OutputPixel => VideoProvider.OutputPixel; + public override RawImage DrawCanvas => VideoProvider.Drawer; + public override void GetAudioParams(out int frequency, out int channels) { AudioProvider.GetAudioParams(out frequency, out channels); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/StoicGooseEmulator/UStoicGoose.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/StoicGooseEmulator/UStoicGoose.cs index 37758fd7..469b7ed0 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/StoicGooseEmulator/UStoicGoose.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/StoicGooseEmulator/UStoicGoose.cs @@ -11,7 +11,7 @@ using UnityEngine; using UnityEngine.UI; using CartridgeMetadata = StoicGoose.Core.Cartridges.Metadata; -public class UStoicGoose : MonoBehaviour, IEmuCore +public class UStoicGoose : IEmuCore { public static UStoicGoose instance; public static System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); @@ -49,44 +49,44 @@ public class UStoicGoose : MonoBehaviour, IEmuCore public string CurrRomName { get; private set; } #region 瀹炵幇IEmuCore - public RomPlatformType Platform => mPlatform; + public override RomPlatformType Platform => mPlatform; - public uint Frame => (uint)emulatorHandler.AxiEmuRunFrame; + public override uint Frame => (uint)emulatorHandler.AxiEmuRunFrame; - public Texture OutputPixel => graphicsHandler.rawBufferWarper; + public override Texture OutputPixel => graphicsHandler.rawBufferWarper; - public RawImage DrawCanvas => graphicsHandler.DrawCanvas; - public object GetState() + public override RawImage DrawCanvas => graphicsHandler.DrawCanvas; + public override object GetState() { throw new NotImplementedException(); } - public byte[] GetStateBytes() + public override byte[] GetStateBytes() { throw new NotImplementedException(); } - public void LoadState(object state) + public override void LoadState(object state) { throw new NotImplementedException(); } - public void LoadStateFromBytes(byte[] data) + public override void LoadStateFromBytes(byte[] data) { throw new NotImplementedException(); } - public void Pause() + public override void Pause() { PauseEmulation(); } - public void Resume() + public override void Resume() { UnpauseEmulation(); } - public MsgBool StartGame(RomFile romFile) + public override MsgBool StartGame(RomFile romFile) { mPlatform = romFile.Platform; @@ -105,7 +105,7 @@ public class UStoicGoose : MonoBehaviour, IEmuCore return "Rom鍔犺浇澶辫触"; } - public void Dispose() + public override void Dispose() { //淇濆瓨褰撳墠姝e湪杩涜鐨勬父鎴忓瓨妗 if (emulatorHandler != null && !emulatorHandler.IsRunning) @@ -115,27 +115,27 @@ public class UStoicGoose : MonoBehaviour, IEmuCore EmuClose(); } - public void DoReset() + public override void DoReset() { ResetEmulation(); } - public IControllerSetuper GetControllerSetuper() + public override IControllerSetuper GetControllerSetuper() { throw new NotImplementedException(); } - public bool PushEmulatorFrame() + public override bool PushEmulatorFrame() { throw new NotImplementedException(); } - public void AfterPushFrame() + public override void AfterPushFrame() { throw new NotImplementedException(); } - public void GetAudioParams(out int frequency, out int channels) + public override void GetAudioParams(out int frequency, out int channels) { throw new NotImplementedException(); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/IEmuCore.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/IEmuCore.cs index b2e721b2..37d36f94 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/IEmuCore.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/IEmuCore.cs @@ -4,52 +4,41 @@ using UnityEngine.UI; namespace AxibugEmuOnline.Client { - public interface IEmuCore + public abstract class IEmuCore : MonoBehaviour { - GameObject gameObject { get; } - /// 鑾峰緱妯℃嫙鍣ㄦ牳蹇冧腑鐨勭姸鎬佸揩鐓у璞 - object GetState(); + public abstract object GetState(); /// 鑾峰緱妯℃嫙鍣ㄦ牳蹇冧腑鐨勭姸鎬佸揩鐓у瓧鑺傛暟鎹 - byte[] GetStateBytes(); + public abstract byte[] GetStateBytes(); /// 鍔犺浇鐘舵佸揩鐓 /// 璇ュ璞″簲璇ユ潵鑷牳蹇冪殑鏂规硶鐨勮繑鍥炲,鎴栨槸浠杩斿洖鐨刡yte鏁扮粍鏋勫缓 - void LoadState(object state); + public abstract void LoadState(object state); /// 鍔犺浇鐘舵佸揩鐓 /// 璇ュ璞″簲璇ユ潵鑷牳蹇冪殑杩斿洖鐨刡yte鏁扮粍 - void LoadStateFromBytes(byte[] data); + public abstract void LoadStateFromBytes(byte[] data); /// 鏆傚仠鏍稿績鎺ㄥ抚 - void Pause(); + public abstract void Pause(); /// 鎭㈠鏍稿績鎺ㄥ抚(浠嶱ause鐘舵佹仮澶) - void Resume(); + public abstract void Resume(); /// 鍚姩妯℃嫙鍣ㄩ昏緫 - MsgBool StartGame(RomFile romFile); + public abstract MsgBool StartGame(RomFile romFile); /// 閲婃斁妯℃嫙鍣ㄦ牳蹇 - void Dispose(); + public abstract void Dispose(); /// 閲嶇疆鏍稿績,閫氬父鐢辨ā鎷熷櫒鏍稿績鎻愪緵鐨勫姛鑳 - void DoReset(); + public abstract void DoReset(); /// 鑾峰緱妯℃嫙鍣ㄦ牳蹇冪殑鎺у埗鍣ㄨ缃櫒 /// - IControllerSetuper GetControllerSetuper(); + public abstract IControllerSetuper GetControllerSetuper(); /// 鏍稿績鎵灞炲钩鍙 - RomPlatformType Platform { get; } + public abstract RomPlatformType Platform { get; } /// 鑾峰彇褰撳墠妯℃嫙鍣ㄥ抚搴忓彿,鍦ㄥ姞杞藉揩鐓у拰Reset鍚,搴斿綋閲嶇疆涓0 - uint Frame { get; } + public abstract uint Frame { get; } /// 妯℃嫙鍣ㄦ牳蹇冩帹甯 - bool PushEmulatorFrame(); + public abstract bool PushEmulatorFrame(); /// 妯℃嫙鍣ㄦ牳蹇冩帹甯х粨鏉 - void AfterPushFrame(); - public void GetAudioParams(out int frequency, out int channels); - Texture OutputPixel { get; } - RawImage DrawCanvas { get; } - } - - public static class IEnumCoreTool - { - public static bool IsNull(this IEmuCore core) - { - if (core == null) return true; - return core.Equals(null); - } + public abstract void AfterPushFrame(); + public abstract void GetAudioParams(out int frequency, out int channels); + public abstract Texture OutputPixel { get; } + public abstract RawImage DrawCanvas { get; } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs index a46290aa..d53608f6 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs @@ -29,7 +29,7 @@ namespace AxibugEmuOnline.Client.Manager private void OnSelfJoinRoom() { //濡傛灉褰撳墠姝e湪娓告垙涓,灏卞厛缁撴潫娓告垙 - if (!m_emuCore.IsNull()) StopGame(); + if (m_emuCore != null) StopGame(); var roomInfo = App.roomMgr.mineRoomMiniInfo; roomInfo.FetchRomFileInRoomInfo((_, romFile) => @@ -48,7 +48,7 @@ namespace AxibugEmuOnline.Client.Manager public void BeginGame(RomFile romFile) { - if (!m_emuCore.IsNull()) return; + if (m_emuCore != null) return; switch (romFile.Platform) { @@ -120,7 +120,7 @@ namespace AxibugEmuOnline.Client.Manager public void StopGame() { - if (m_emuCore.IsNull()) return; + if (m_emuCore == null) return; m_emuCore.Dispose(); GameObject.Destroy(m_emuCore.gameObject); m_emuCore = null; @@ -133,7 +133,7 @@ namespace AxibugEmuOnline.Client.Manager public void ResetGame() { - if (m_emuCore.IsNull()) return; + if (m_emuCore == null) return; m_emuCore.DoReset(); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs index dcf73f6e..6a8b0dea 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs @@ -65,7 +65,7 @@ namespace AxibugEmuOnline.Client void PushCoreFrame() { - if (Core.IsNull()) return; + if (Core == null) return; //fluash netMsg NetMsg.Instance.DequeueNesMsg(); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI_Scaler.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI_Scaler.cs index 4c9fad7e..c53eed55 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI_Scaler.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI_Scaler.cs @@ -32,7 +32,7 @@ namespace AxibugEmuOnline.Client { get { - if (m_gameUI.Core.IsNull()) return false; + if (m_gameUI.Core == null) return false; var isSetMode = App.settings.ScreenScaler.IsSetMode(m_gameUI.Core.Platform); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/LaunchUI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/LaunchUI.cs index 4b1e0964..a375a2ed 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/LaunchUI.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/LaunchUI.cs @@ -49,7 +49,7 @@ namespace AxibugEmuOnline.Client private void Update() { - if (CommandDispatcher.Instance.Mode == CommandListener.ScheduleType.Gaming && App.emu.Core.IsNull()) + if (CommandDispatcher.Instance.Mode == CommandListener.ScheduleType.Gaming && App.emu.Core == null) CommandDispatcher.Instance.Mode = CommandListener.ScheduleType.Normal; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs index c7146aed..35ea2a58 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs @@ -90,7 +90,7 @@ public class ControllerInfo : MonoBehaviour } else { - if (App.emu.Core.IsNull()) + if (App.emu.Core == null) { SetDisconnect(); return; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs index 02d800d1..6ea98099 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs @@ -35,7 +35,7 @@ public class ControllerInfoPanel : MonoBehaviour } else //涓嶅湪鎴块棿涓,鐩存帴璁剧疆 { - if (App.emu.Core.IsNull()) return; + if (App.emu.Core == null) return; var setuper = App.emu.Core.GetControllerSetuper(); if (setuper == null) return; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs index f3c21da0..5cbf80f4 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs @@ -24,7 +24,7 @@ public class XMBInfoBar : MonoBehaviour private void Update() { - ControlSlotInfoNode.SetActiveEx(!App.emu.Core.IsNull()); + ControlSlotInfoNode.SetActiveEx(App.emu.Core != null); } void OnDisable() @@ -46,7 +46,7 @@ public class XMBInfoBar : MonoBehaviour ValueTuple m_lastFrameInfo; private void RefreshFps() { - if (App.emu.Core.IsNull()) + if (App.emu.Core == null) FPS.gameObject.SetActiveEx(false); else {