AttractVideoPlayer #2
@ -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<MovieData> _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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -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<AMManager, AMManager.EState>.instance.aimeReader.advCheck()) {
|
||||
Singleton<OperationManager>.instance.loginType = OperationManager.LoginType.Aime;
|
||||
return true;
|
||||
}
|
||||
// Exclude Back/Left/Right
|
||||
private bool anyKeyDown() {
|
||||
UIInput instance = Singleton<UIInput>.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<OperationManager>.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)
|
||||
akanyan marked this conversation as resolved
Outdated
|
||||
|| instance.getTriggerOn(UIInput.Key.MenuLeft)
|
||||
|| instance.getTriggerOn(UIInput.Key.MenuRight)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -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<UIInput>.instance.getStateOn(UIInput.Key.Service)) {
|
||||
lastButtonPressedTime = Time.time;
|
||||
|
||||
movieController?.player.Pause(!movieController.player.IsPaused());
|
||||
} else if(Singleton<UIInput>.instance.getStateOn(UIInput.Key.L2)) {
|
||||
lastButtonPressedTime = Time.time;
|
||||
|
||||
addOffsetToCurrentSongIndexAndPlayMovie(-1);
|
||||
} else if(Singleton<UIInput>.instance.getStateOn(UIInput.Key.L3)) {
|
||||
lastButtonPressedTime = Time.time;
|
||||
|
||||
addOffsetToCurrentSongIndexAndPlayMovie(1);
|
||||
if(movieController?.player?.status == CriMana.Player.Status.Playing) {
|
||||
if(Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.Service)) {
|
||||
movieController.player.Pause(!movieController.player.IsPaused());
|
||||
} else if(Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.L2)) {
|
||||
addMovieOffset(-1);
|
||||
} else if(Singleton<UIInput>.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<OperationManager>.instance;
|
||||
om.MovieIndex += offset;
|
||||
|
||||
movieController?.Stop();
|
||||
movieController.Stop();
|
||||
Utility.destroyGameObject(ref movieController);
|
||||
Utility.destroyGameObject(ref objMovie);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
doesn't this effectively disable guest login?
oh crap you are right... I would be tempted to say we don't care about guest login but I don't like to remove a feature.
Let me cook something...