diff --git a/.gitignore b/.gitignore index 4ab1d4b..dea1651 100644 --- a/.gitignore +++ b/.gitignore @@ -352,4 +352,4 @@ MigrationBackup/ .idea/ **/protos/*.cs -**/Plugins/** +**/Plugins/**/*.dll \ No newline at end of file diff --git a/README.md b/README.md index ea5cac0..278f32b 100644 --- a/README.md +++ b/README.md @@ -34,29 +34,29 @@ actual binaries, `.meta` files of uncompiled platforms are cleaned up by Unity. In order to not accidentally commit those files, we recommend to ignore them: ```bash -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libz.a.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/VisualPinball.Engine.PinMAME.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/VisualPinball.Engine.PinMAME.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/VisualPinball.Engine.PinMAME.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta +git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/VisualPinball.Engine.PinMAME.dll.meta -git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta ``` ## License This plugin is licensed under the [MIT license](LICENSE). However since we link against PinMAME, the [MAME/BSD-3-Clause](https://github.com/vpinball/pinmame/blob/master/LICENSE) -must be honored as well. +must be honored as well. \ No newline at end of file diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta similarity index 100% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta index a5028c8..9c5d6fa 100644 --- a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta +++ b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9a12abde327b949e699c61497c4b2618 +guid: 65f3dcac0af3b4ff5b00f2edf91fe406 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta similarity index 95% rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta index 9c5d6fa..a5028c8 100644 --- a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta +++ b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 65f3dcac0af3b4ff5b00f2edf91fe406 +guid: 9a12abde327b949e699c61497c4b2618 PluginImporter: externalObjects: {} serializedVersion: 2 diff --git a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs index 76a051a..6d57986 100644 --- a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs +++ b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs @@ -742,25 +742,33 @@ public void SendInitialSwitches() } } - public void Switch(string id, bool isClosed) - { - if (_switches.ContainsKey(id)) { - if (_mechSwitches.Contains(_switchIdToPinMameIdMappings[_switches[id].Id])) { - // mech switches are triggered internally by pinmame. - return; - } - Logger.Info($"[PinMAME] => sw {id}: {isClosed} | {_switches[id].Description}"); - _pinMame.SetSwitch(_switchIdToPinMameIdMappings[_switches[id].Id], isClosed); - } else if (id == "s_spawn_ball") { - if (isClosed) { - _ballManager.CreateBall(new DebugBallCreator(630f, _playfieldComponent.Height / 2f)); - } - } else { - Logger.Error($"[PinMAME] Unknown switch \"{id}\"."); - } - - OnSwitchChanged?.Invoke(this, new SwitchEventArgs2(id, isClosed)); - } + public void Switch(string id, bool isClosed) + { + if (_switches.TryGetValue(id, out var sw)) { + if (_switchIdToPinMameIdMappings.TryGetValue(sw.Id, out var pinMameId) && _mechSwitches.Contains(pinMameId)) { + // mech switches are triggered internally by pinmame. + return; + } + if (_pinMame != null && _isRunning) { + if (Logger.IsDebugEnabled) { + Logger.Debug($"[PinMAME] => sw {id}: {isClosed} | {sw.Description}"); + } + if (_switchIdToPinMameIdMappings.TryGetValue(sw.Id, out pinMameId)) { + _pinMame.SetSwitch(pinMameId, isClosed); + } + } + } else if (id == "s_spawn_ball") { + if (isClosed) { + _ballManager.CreateBall(new DebugBallCreator(630f, _playfieldComponent.Height / 2f)); + } + } else { + if (Logger.IsErrorEnabled) { + Logger.Error($"[PinMAME] Unknown switch \"{id}\"."); + } + } + + OnSwitchChanged?.Invoke(this, new SwitchEventArgs2(id, isClosed)); + } public bool GetSwitch(string id) { diff --git a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj index 09a4aa4..a4da2fd 100644 --- a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj +++ b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj @@ -5,6 +5,8 @@ false true 9.0 + 1.0.0 + 3.7.0-beta1 win-x64 @@ -13,29 +15,43 @@ linux-x64 - - + + - - - - + + + + - + - - - - - + - - - - + + + + + + + + + ..\VisualPinball.Engine.PinMAME.Unity\Plugins\$(RuntimeIdentifier)\pinmame.dll + + + + + + + + + + + +