1
0
forked from akanyan/mu3-mods

fix(MPO): don't tap into toRatingFloat

Cleaner, safer, and should fix collab play
This commit is contained in:
2024-12-28 21:10:31 +00:00
parent c84898cb78
commit 566d17c230
5 changed files with 21 additions and 25 deletions

View File

@ -1,20 +1,22 @@
using MU3.Mod; using MU3.Mod;
using MU3.User;
namespace MU3.CustomUI; namespace MU3.CustomUI;
class patch_MU3UICounter: MU3UICounter { class patch_MU3UICounter: MU3UICounter {
public bool isRatingDisplay { get; set; }
protected extern void orig_calcNumFiguresFloat(double value); protected extern void orig_calcNumFiguresFloat(double value);
protected new void calcNumFiguresFloat(double value) { protected new void calcNumFiguresFloat(double value) {
orig_calcNumFiguresFloat(value); orig_calcNumFiguresFloat(value);
if(isDispSuffix) { if(isRatingDisplay) {
var b = CustomRating.GetSuffix(); var b = CustomRating.GetSuffix();
if(b != 0) { if(b != 0) {
pushFigureFront(b); pushFigureFront(b);
} }
} }
} }
public bool isDispSuffix { get; set; }
protected void pushFigureFront(byte c) { protected void pushFigureFront(byte c) {
for(int i = numFigures_; i > 0; --i) { for(int i = numFigures_; i > 0; --i) {
figures_[i] = figures_[i - 1]; figures_[i] = figures_[i - 1];
@ -22,4 +24,13 @@ class patch_MU3UICounter: MU3UICounter {
figures_[0] = c; figures_[0] = c;
numFigures_ += 1; numFigures_ += 1;
} }
public extern void orig_set_Counter(double value);
public void set_Counter(double value) {
if(isRatingDisplay && CustomRating.IsEnabled()) {
orig_set_Counter(UserUtil.toRatingFloat(CustomRating.Get()));
} else {
orig_set_Counter(value);
}
}
} }

View File

@ -7,9 +7,8 @@ class patch_ANM_CMN_UserDeta_01: ANM_CMN_UserDeta_01 {
public extern void orig_setUserDetail(); public extern void orig_setUserDetail();
public new void setUserDetail() { public new void setUserDetail() {
rating.isDispSuffix = true; rating.isRatingDisplay = true;
orig_setUserDetail(); orig_setUserDetail();
rating.setForceDirty(); rating.setForceDirty();
} }
} }

View File

@ -1,16 +0,0 @@
using MonoMod;
using MU3.Mod;
namespace MU3.User;
[MonoModPatch("global::MU3.User.UserUtil")]
public static class patch_UserUtil {
public extern static float orig_toRatingFloat(int rating);
public static float toRatingFloat(int rating) {
if(CustomRating.IsEnabled()) {
return orig_toRatingFloat(CustomRating.Get());
} else {
return orig_toRatingFloat(rating);
}
}
}

View File

@ -21,15 +21,17 @@ class patch_UIResultBattlePoint: UIResultBattlePoint {
public extern void orig_initTechRating(PlayInfo playInfo); public extern void orig_initTechRating(PlayInfo playInfo);
public new void initTechRating(PlayInfo playInfo) { public new void initTechRating(PlayInfo playInfo) {
counterScore_.isRatingDisplay = true;
if(!CustomRating.IsEnabled()) { if(!CustomRating.IsEnabled()) {
orig_initTechRating(playInfo); orig_initTechRating(playInfo);
return; return;
} }
int prevRating = ((patch_SessionResult)playInfo.sessionResult).prevCustomRating; int prevRating = ((patch_SessionResult)playInfo.sessionResult).prevCustomRating;
int rating1 = CustomRating.Get(); int rating1 = CustomRating.Get();
hideScore_?.SetActive(false); hideScore_?.SetActive(false);
counterScore_.isDispSuffix = true;
counterScore_.Counter = (double)UserUtil.toRatingFloat(rating1); counterScore_.Counter = (double)UserUtil.toRatingFloat(rating1);
int ratingPatternNo = UserUtil.toRatingPatternNo(rating1); int ratingPatternNo = UserUtil.toRatingPatternNo(rating1);
counterScore_.SpriteIndex = ratingPatternNo; counterScore_.SpriteIndex = ratingPatternNo;
@ -42,15 +44,15 @@ class patch_UIResultBattlePoint: UIResultBattlePoint {
} else if(0 < rating2) { } else if(0 < rating2) {
disable(counterScoreMinus_); disable(counterScoreMinus_);
if(counterScorePlus_ != null) { if(counterScorePlus_ != null) {
counterScorePlus_.Counter = rating2 * 0.01f + 1E-05f; counterScorePlus_.Counter = UserUtil.toRatingFloat(rating2);
} }
animator_.SetInteger(Sys.Const.AnimatorID_State, 0); animator_.SetInteger(Sys.Const.AnimatorID_State, 0);
} else { } else {
disable(counterScorePlus_); disable(counterScorePlus_);
if(counterScoreMinus_ != null) { if(counterScoreMinus_ != null) {
counterScoreMinus_.Counter = rating2 * 0.01f + 1E-05f; counterScoreMinus_.Counter = UserUtil.toRatingFloat(rating2);
} }
animator_.SetInteger(MU3.Sys.Const.AnimatorID_State, 1); animator_.SetInteger(Sys.Const.AnimatorID_State, 1);
} }
animator_.SetTrigger(Sys.Const.AnimatorID_In); animator_.SetTrigger(Sys.Const.AnimatorID_In);
} }

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net35</TargetFramework> <TargetFramework>net35</TargetFramework>
<Company>7EVENDAYS⇔HOLIDAYS</Company> <Company>7EVENDAYS⇔HOLIDAYS</Company>
<Version>3.0.0</Version> <Version>3.0.0.1</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Platforms>x64</Platforms> <Platforms>x64</Platforms>