From 67a8ad07e56599bfd22bd21aafabc57dfbce01f1 Mon Sep 17 00:00:00 2001 From: HawkingLaughing Date: Fri, 28 Nov 2025 05:27:54 +0800 Subject: [PATCH] =?UTF-8?q?[O]=20=E4=BC=98=E5=8C=96CustomIntroCinematic?= =?UTF-8?q?=EF=BC=9A=E5=BD=93=E7=8E=A9=E5=AE=B6=E6=9C=89=E6=88=90=E7=BB=A9?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E8=A7=A6=E5=8F=91=E5=BC=80=E5=9C=BA=E8=A7=86?= =?UTF-8?q?=E9=A2=91=20(#92)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [F]优化CustomIntroCinematic:当玩家有成绩时不触发开场视频 * Update AquaMai.Mods.csproj * Update AquaMai.Mods.csproj * Update AquaMai.Mods.csproj * 增加选项 * 还原 using --------- Co-authored-by: Clansty --- AquaMai.Mods/Fancy/CustomIntroCinematic.cs | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/AquaMai.Mods/Fancy/CustomIntroCinematic.cs b/AquaMai.Mods/Fancy/CustomIntroCinematic.cs index d064e0a2..94205d17 100644 --- a/AquaMai.Mods/Fancy/CustomIntroCinematic.cs +++ b/AquaMai.Mods/Fancy/CustomIntroCinematic.cs @@ -14,7 +14,6 @@ using MelonLoader; using Process; using UnityEngine; using UnityEngine.Video; -using Monitor; namespace AquaMai.Mods.Fancy; @@ -41,6 +40,12 @@ public class CustomIntroCinematic "效果演示: https://www.bilibili.com/video/BV1jTxVzjETG")] private static readonly string IntroMovieDir = "LocalAssets/IntroMovies"; + [ConfigEntry(name: "仅在未玩过乐曲时播放", + zh: "开启后,仅当 1P 2P 双方均没有玩过这首乐曲时播放开场视频", + en: "Only play the intro cinematic when both players have not played the song")] + private static readonly bool onlyPlayWhenNotPlayed = false; + + private static bool _isInitialized = false; private static Dictionary _targetIDMovieDict = new Dictionary(); @@ -924,9 +929,29 @@ public class CustomIntroCinematic Manager.Party.Party.IManager PartyManager = Manager.Party.Party.Party.Get(); if (SingletonStateMachine.Instance.Backup.gameSetting.MachineGroupID != DB.MachineGroupID.OFF && PartyManager != null && PartyManager.IsJoinAndActive()) return true; + + //获取曲目ID + var musicId = GameManager.SelectMusicID[0]; + + if (onlyPlayWhenNotPlayed) + { + //任一玩家拥有曲目成绩时不生效 + for (int i = 0; i < 4; ++i) + { + var playerData = Singleton.Instance.GetUserData(i); + if (playerData != null) + { + for (int j = 0; j < 6; ++j) + { + playerData.ScoreDic[j].TryGetValue(musicId, out UserScore musicScore); + if (musicScore != null) + return true; + } + } + } + } // 检查当前选择的歌曲是否为目标歌曲 - var musicId = GameManager.SelectMusicID[0]; if (_targetIDMovieDict.TryGetValue(musicId, out var videoPath)) { MelonLogger.Msg($"[CustomIntroCinematic] Play intro cinematic for music {musicId}");