From 6738890408aa9140e0dcb7beb5eecaa27e6c2137 Mon Sep 17 00:00:00 2001 From: akanyan Date: Mon, 22 Jul 2024 23:51:35 +0900 Subject: [PATCH] rewrite basically --- .../patch_OperationManager.cs | 55 ++++++++++--------- .../MU3.Sequence/patch_Advertise.cs | 20 +++---- AttractVideoPlayer/MU3/patch_AdvManager.cs | 41 +++++--------- 3 files changed, 53 insertions(+), 63 deletions(-) diff --git a/AttractVideoPlayer/MU3.OperationManager/patch_OperationManager.cs b/AttractVideoPlayer/MU3.OperationManager/patch_OperationManager.cs index 4c1a075..96b64e1 100644 --- a/AttractVideoPlayer/MU3.OperationManager/patch_OperationManager.cs +++ b/AttractVideoPlayer/MU3.OperationManager/patch_OperationManager.cs @@ -1,40 +1,45 @@ -using System.Collections.ObjectModel; -using UnityEngine; +using System; +using System.Collections.ObjectModel; +using System.IO; namespace MU3.Operation; class patch_OperationManager: OperationManager { - private static readonly string CurrentSongIndexFilePath = "BepInEx/monomod/AttractVideoPlayer.currentSongIndex.txt"; + private static readonly string _fname = "data_advert_cache.txt"; private ReadOnlyCollection _movieDataList; + private int _movieIndex; + + ~patch_OperationManager() { + try { + File.WriteAllText(_fname, _movieIndex.ToString()); + } catch(Exception) {} + } + public int MovieIndex { + set { + _movieIndex = (value + _movieDataList.Count) % _movieDataList.Count; + } + get { + return _movieIndex; + } + } public new MovieData movieData { get { if(_movieDataList.Count > 0) { - int currentSongIndex = 0; - try { - currentSongIndex = int.Parse(System.IO.File.ReadAllText(CurrentSongIndexFilePath)); - } catch(System.Exception) { - saveCurrentSongIndex(0); - } - - if(currentSongIndex < 0) { - currentSongIndex = _movieDataList.Count - 1; - saveCurrentSongIndex(currentSongIndex); - } - - if(currentSongIndex >= _movieDataList.Count) { - currentSongIndex = 0; - saveCurrentSongIndex(currentSongIndex); - } - - Debug.Log("currentSongIndex: " + currentSongIndex); - - return _movieDataList[currentSongIndex]; + return _movieDataList[_movieIndex]; } return null; } } - private void saveCurrentSongIndex(int currentSongIndex) { - System.IO.File.WriteAllText(CurrentSongIndexFilePath, currentSongIndex.ToString()); + public extern void orig_initialize(); + + public new void initialize() { + orig_initialize(); + try { + _movieIndex = Math.Max(0, int.Parse(File.ReadAllText(_fname))); + } catch(Exception) { + _movieIndex = 0; + } + } } \ No newline at end of file diff --git a/AttractVideoPlayer/MU3.Sequence/patch_Advertise.cs b/AttractVideoPlayer/MU3.Sequence/patch_Advertise.cs index e01e722..ed96a89 100644 --- a/AttractVideoPlayer/MU3.Sequence/patch_Advertise.cs +++ b/AttractVideoPlayer/MU3.Sequence/patch_Advertise.cs @@ -1,18 +1,18 @@ -using MU3.AM; -using MU3.Operation; -using MU3.Util; +using MU3.Util; namespace MU3.Sequence; class patch_Advertise: Advertise { - private bool checkButtonOrAime() { - if(SingletonStateMachine.instance.aimeReader.advCheck()) { - Singleton.instance.loginType = OperationManager.LoginType.Aime; - return true; - } + // Exclude Back/Left/Right + private bool anyKeyDown() { UIInput instance = Singleton.instance; - if(instance.getTriggerOn(UIInput.Key.Decision) || instance.getTriggerOn(UIInput.Key.OptionBackward) || instance.getTriggerOn(UIInput.Key.OptionForward) || instance.getTriggerOn(UIInput.Key.SkipRight) || instance.getTriggerOn(UIInput.Key.MenuLeft) || instance.getTriggerOn(UIInput.Key.MenuRight)) { - Singleton.instance.loginType = OperationManager.LoginType.Button; + if(instance.getTriggerOn(UIInput.Key.Decision) + || instance.getTriggerOn(UIInput.Key.OptionBackward) + || instance.getTriggerOn(UIInput.Key.OptionForward) + || instance.getTriggerOn(UIInput.Key.SkipLeft) + || instance.getTriggerOn(UIInput.Key.SkipRight) + || instance.getTriggerOn(UIInput.Key.MenuLeft) + || instance.getTriggerOn(UIInput.Key.MenuRight)) { return true; } return false; diff --git a/AttractVideoPlayer/MU3/patch_AdvManager.cs b/AttractVideoPlayer/MU3/patch_AdvManager.cs index 0f30463..67708c5 100644 --- a/AttractVideoPlayer/MU3/patch_AdvManager.cs +++ b/AttractVideoPlayer/MU3/patch_AdvManager.cs @@ -1,47 +1,32 @@ -using MU3.Util; +using MU3.Operation; +using MU3.Util; using UnityEngine; namespace MU3; class patch_AdvManager: AdvManager { - private static readonly string CurrentSongIndexFilePath = "BepInEx/monomod/AttractVideoPlayer.currentSongIndex.txt"; - private static readonly float DelayBetweenButtonPress = 0.5f; - private float lastButtonPressedTime = 0f; - private GameObject objMovie; private CriManaMovieMaterial movieController; - private extern bool orig_initMovie(); - public new bool initMovie() { - return orig_initMovie(); - } private extern bool orig_exec(); public new bool exec() { - if(Time.time - lastButtonPressedTime > DelayBetweenButtonPress) { - if(Singleton.instance.getStateOn(UIInput.Key.Service)) { - lastButtonPressedTime = Time.time; - - movieController?.player.Pause(!movieController.player.IsPaused()); - } else if(Singleton.instance.getStateOn(UIInput.Key.L2)) { - lastButtonPressedTime = Time.time; - - addOffsetToCurrentSongIndexAndPlayMovie(-1); - } else if(Singleton.instance.getStateOn(UIInput.Key.L3)) { - lastButtonPressedTime = Time.time; - - addOffsetToCurrentSongIndexAndPlayMovie(1); + if(movieController?.player?.status == CriMana.Player.Status.Playing) { + if(Singleton.instance.getTriggerOn(UIInput.Key.Service)) { + movieController.player.Pause(!movieController.player.IsPaused()); + } else if(Singleton.instance.getTriggerOn(UIInput.Key.L2)) { + addMovieOffset(-1); + } else if(Singleton.instance.getTriggerOn(UIInput.Key.L3)) { + addMovieOffset(1); } } return orig_exec(); } - public void addOffsetToCurrentSongIndexAndPlayMovie(int offset) { - try { - int currentSongIndex = int.Parse(System.IO.File.ReadAllText(CurrentSongIndexFilePath)) + offset; - System.IO.File.WriteAllText(CurrentSongIndexFilePath, currentSongIndex.ToString()); - } catch(System.Exception) { } + public void addMovieOffset(int offset) { + var om = (patch_OperationManager)Singleton.instance; + om.MovieIndex += offset; - movieController?.Stop(); + movieController.Stop(); Utility.destroyGameObject(ref movieController); Utility.destroyGameObject(ref objMovie);