From fd6a33d46c1f366cb79cbbeae747e0407f98c3e7 Mon Sep 17 00:00:00 2001 From: wcko87 Date: Thu, 4 May 2017 22:42:52 +0800 Subject: [PATCH] Track changes in valid music id because sometimes current musicid briefly changes to -1 --- rabi_splitter_WPF/RabiRibiDisplay.cs | 15 +++++++++++++-- rabi_splitter_WPF/RabiRibiState.cs | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/rabi_splitter_WPF/RabiRibiDisplay.cs b/rabi_splitter_WPF/RabiRibiDisplay.cs index cfbcaaf..e788d54 100644 --- a/rabi_splitter_WPF/RabiRibiDisplay.cs +++ b/rabi_splitter_WPF/RabiRibiDisplay.cs @@ -45,6 +45,7 @@ namespace rabi_splitter_WPF UpdateDebugArea(process); UpdateEntityData(process); + if (snapshot.musicid >= 0) rabiRibiState.lastValidMusicId = snapshot.musicid; prevSnapshot = snapshot; } @@ -77,9 +78,14 @@ namespace rabi_splitter_WPF #region Detect Music change - if (MusicChanged()) + if (MusicChanged() && !ValidMusicChanged()) { - DebugLog($"Music Change: {StaticData.GetMusicName(prevSnapshot.musicid)} -> {StaticData.GetMusicName(snapshot.musicid)}"); + DebugLog($"Invalid Music Change: {StaticData.GetMusicName(prevSnapshot.musicid)} -> {StaticData.GetMusicName(snapshot.musicid)}"); + } + + if (ValidMusicChanged()) + { + DebugLog($"Valid Music Change: {StaticData.GetMusicName(rabiRibiState.lastValidMusicId)} -> {StaticData.GetMusicName(snapshot.musicid)}"); } #endregion @@ -216,6 +222,11 @@ namespace rabi_splitter_WPF return prevSnapshot != null && prevSnapshot.musicid != snapshot.musicid; } + private bool ValidMusicChanged() + { + return rabiRibiState.lastValidMusicId >= 0 && snapshot.musicid >= 0 && rabiRibiState.lastValidMusicId != snapshot.musicid; + } + private bool MusicChangedTo(Music music) { return MusicChanged() && snapshot.CurrentMusicIs(music); diff --git a/rabi_splitter_WPF/RabiRibiState.cs b/rabi_splitter_WPF/RabiRibiState.cs index 5cff3a4..ebe8b49 100644 --- a/rabi_splitter_WPF/RabiRibiState.cs +++ b/rabi_splitter_WPF/RabiRibiState.cs @@ -14,5 +14,6 @@ namespace rabi_splitter_WPF class RabiRibiState { public GameStatus gameStatus = GameStatus.MENU; + public int lastValidMusicId = -1; } }