forked from akanyan/mu3-mods
feat(MPO): add textures and fix an edge case
This commit is contained in:
33
Extras/MoreProfileOptions/MU3/patch_ANM_PLY_retire_score.cs
Normal file
33
Extras/MoreProfileOptions/MU3/patch_ANM_PLY_retire_score.cs
Normal file
@ -0,0 +1,33 @@
|
||||
using MU3.CustomUI;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MU3;
|
||||
|
||||
class patch_ANM_PLY_retire_score: ANM_PLY_retire_score {
|
||||
private MU3UIImageChanger _rank;
|
||||
|
||||
private extern void orig_Awake();
|
||||
private void Awake() {
|
||||
orig_Awake();
|
||||
|
||||
var spritesFi = typeof(MU3UIImageChanger).GetField("_sprites", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
|
||||
var oldSprites = (Sprite[])spritesFi.GetValue(_rank);
|
||||
spritesFi.SetValue(_rank, new Sprite[6]);
|
||||
|
||||
for(var i = 0; i < 3; ++i) {
|
||||
_rank.setSprite(i, oldSprites[i]);
|
||||
}
|
||||
var pivot = oldSprites[0].pivot;
|
||||
|
||||
Texture2D tex = new Texture2D(2, 2);
|
||||
tex.LoadImage(Mod.AbortTexture.Bytes);
|
||||
tex.anisoLevel = 1;
|
||||
tex.filterMode = FilterMode.Bilinear;
|
||||
|
||||
_rank.setSprite(3, Sprite.Create(tex, new Rect(54, 256 - 117, 57, 31), pivot));
|
||||
_rank.setSprite(4, Sprite.Create(tex, new Rect(0, 256 - 117, 53, 31), pivot));
|
||||
_rank.setSprite(5, Sprite.Create(tex, new Rect(0, 256 - 149, 53, 31), pivot));
|
||||
}
|
||||
}
|
@ -9,44 +9,44 @@ class patch_BattleUI: BattleUI {
|
||||
private UIRetireInfo _retireInfo;
|
||||
private SessionInfo _sessionInfo;
|
||||
public new void setRetireInfo(UserOption.eAbort abort) {
|
||||
UIRetireInfo.Rank rank;
|
||||
patch_UIRetireInfo.Rank rank;
|
||||
int num;
|
||||
|
||||
var pabort = (patch_UserOption.eAbort)abort;
|
||||
switch(pabort) {
|
||||
case patch_UserOption.eAbort.S:
|
||||
rank = UIRetireInfo.Rank.S;
|
||||
rank = patch_UIRetireInfo.Rank.S;
|
||||
num = 1010000 - TechnicalRankID.S.getLower();
|
||||
break;
|
||||
case patch_UserOption.eAbort.SS:
|
||||
rank = UIRetireInfo.Rank.SS;
|
||||
rank = patch_UIRetireInfo.Rank.SS;
|
||||
num = 1010000 - TechnicalRankID.SS.getLower();
|
||||
break;
|
||||
case patch_UserOption.eAbort.SSS:
|
||||
rank = UIRetireInfo.Rank.SSS;
|
||||
rank = patch_UIRetireInfo.Rank.SSS;
|
||||
num = 1010000 - TechnicalRankID.SSS.getLower();
|
||||
break;
|
||||
case patch_UserOption.eAbort.SSS1:
|
||||
rank = UIRetireInfo.Rank.S;
|
||||
rank = patch_UIRetireInfo.Rank.SSS1;
|
||||
num = 1010000 - TechnicalRankID.SSS1.getLower();
|
||||
break;
|
||||
case patch_UserOption.eAbort.PB:
|
||||
UserManager userManager = Singleton<UserManager>.instance;
|
||||
var userFumen = userManager.getUserFumen(_sessionInfo.musicData.id, _sessionInfo.musicLevel, create: false);
|
||||
var previousPb = userFumen?.TechScoreMax ?? 0;
|
||||
rank = UIRetireInfo.Rank.S;
|
||||
rank = patch_UIRetireInfo.Rank.PB;
|
||||
num = 1010000 - Math.Max(previousPb, TechnicalRankID.AA.getLower());
|
||||
break;
|
||||
case patch_UserOption.eAbort.FB:
|
||||
case patch_UserOption.eAbort.AA:
|
||||
rank = UIRetireInfo.Rank.S;
|
||||
rank = patch_UIRetireInfo.Rank.AA;
|
||||
num = 1010000 - TechnicalRankID.AA.getLower();
|
||||
break;
|
||||
default:
|
||||
rank = UIRetireInfo.Rank.MAX;
|
||||
rank = patch_UIRetireInfo.Rank.MAX;
|
||||
num = 0;
|
||||
break;
|
||||
}
|
||||
_retireInfo.setupRetireInfo(rank, num);
|
||||
_retireInfo.setupRetireInfo((UIRetireInfo.Rank)rank, num);
|
||||
}
|
||||
}
|
||||
|
@ -13,11 +13,18 @@ class patch_OptionSelecterController: OptionSelecterController {
|
||||
[MonoModIgnore]
|
||||
private extern void setInputCursor(int currentParam);
|
||||
|
||||
private extern void orig_setupCpFuncArray();
|
||||
private void setupCpFuncArray() {
|
||||
orig_setupCpFuncArray();
|
||||
cpFuncArray[33].max = 3;
|
||||
cpFuncArray[4].max = 7;
|
||||
}
|
||||
|
||||
public extern void orig_init(UserOption.OptionName id);
|
||||
public new void init(UserOption.OptionName id) {
|
||||
orig_init(id);
|
||||
cpFuncArray[33].max = 3;
|
||||
cpFuncArray[4].max = 7;
|
||||
|
||||
var spritesFi = typeof(MU3UIImageChanger).GetField("_sprites", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
|
||||
if(id == UserOption.OptionName.Rating) {
|
||||
var rct = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent<RectTransform>();
|
||||
@ -26,19 +33,38 @@ class patch_OptionSelecterController: OptionSelecterController {
|
||||
rct.anchoredPosition = new Vector3(0f, -5f, 0);
|
||||
rct.sizeDelta = new Vector2(158, 70);
|
||||
|
||||
var spritesFi = typeof(MU3UIImageChanger).GetField("_sprites", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||
var tex = ((Sprite[])spritesFi.GetValue(changer))[0].texture;
|
||||
spritesFi.SetValue(changer, new Sprite[4]);
|
||||
|
||||
changer.setSprite(0, Sprite.Create(tex, new Rect(1552.0f, 366.0f, 160.0f, 65.0f), new Vector2(80.0f, 0.0f)));
|
||||
changer.setSprite(1, Sprite.Create(tex, new Rect(1221.0f, 1488.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
changer.setSprite(2, Sprite.Create(tex, new Rect(1223.0f, 1410.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
changer.setSprite(3, Sprite.Create(tex, new Rect(1508.0f, 1346.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
//changer.setSprite(4, Sprite.Create(tex, new Rect(1389.0f, 1424.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
//changer.setSprite(5, Sprite.Create(tex, new Rect(941.0f, 1502.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
//changer.setSprite(6, Sprite.Create(tex, new Rect(797.0f, 1604.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f)));
|
||||
changer.setSprite(0, Sprite.Create(tex, new Rect(1552, 366, 160, 65), new Vector2(80, 0)));
|
||||
changer.setSprite(1, Sprite.Create(tex, new Rect(1221, 1488, 160, 70), new Vector2(80, 35)));
|
||||
changer.setSprite(2, Sprite.Create(tex, new Rect(1223, 1410, 160, 70), new Vector2(80, 35)));
|
||||
changer.setSprite(3, Sprite.Create(tex, new Rect(1508, 1346, 160, 70), new Vector2(80, 35)));
|
||||
//changer.setSprite(4, Sprite.Create(tex, new Rect(1389, 1424, 160, 70), new Vector2(8, 35)));
|
||||
//changer.setSprite(5, Sprite.Create(tex, new Rect(941, 1502, 160, 70), new Vector2(8, 35)));
|
||||
//changer.setSprite(6, Sprite.Create(tex, new Rect(797, 1604, 160, 70), new Vector2(8, 35)));
|
||||
|
||||
setInputCursor((int)Singleton<UserManager>.instance.userOption.customSet.Rating);
|
||||
} else if(id == UserOption.OptionName.Abort) {
|
||||
var changer = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_Clear").GetComponent<MU3UIImageChanger>();
|
||||
|
||||
var oldSprites = (Sprite[])spritesFi.GetValue(changer);
|
||||
spritesFi.SetValue(changer, new Sprite[8]);
|
||||
|
||||
for(var i = 0; i < 4; ++i) {
|
||||
changer.setSprite(i, oldSprites[i]);
|
||||
}
|
||||
var pivot = oldSprites[0].pivot;
|
||||
|
||||
Texture2D tex = new Texture2D(2, 2);
|
||||
tex.LoadImage(Mod.AbortTexture.Bytes);
|
||||
tex.anisoLevel = 1;
|
||||
tex.filterMode = FilterMode.Bilinear;
|
||||
|
||||
changer.setSprite(4, Sprite.Create(tex, new Rect(3, 256 - 82, 115, 81), pivot));
|
||||
changer.setSprite(5, Sprite.Create(tex, new Rect(119, 256 - 200, 110, 75), pivot));
|
||||
changer.setSprite(6, Sprite.Create(tex, new Rect(2, 256 - 240, 110, 75), pivot));
|
||||
changer.setSprite(7, Sprite.Create(tex, new Rect(137, 256 - 105, 110, 75), pivot));
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,12 +79,4 @@ class patch_OptionSelecterController: OptionSelecterController {
|
||||
orig_chengeParamOther(currentParam);
|
||||
}
|
||||
}
|
||||
|
||||
private extern void orig_chengeParamAbort(int currentParam);
|
||||
private void chengeParamAbort(int currentParam) {
|
||||
string text = "NUL_SWH_Option_00/NUL_Select/PAT_Clear";
|
||||
GameObject gameObject = transform.Find(text).gameObject;
|
||||
MU3UIImageChanger component = gameObject.GetComponent<MU3UIImageChanger>();
|
||||
component.patternNumber = currentParam > 4 ? 0 : currentParam;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ class patch_UIResultBattlePoint: UIResultBattlePoint {
|
||||
|
||||
public extern void orig_initTechRating(PlayInfo playInfo);
|
||||
public new void initTechRating(PlayInfo playInfo) {
|
||||
counterScore_.isDispSuffix = CustomRating.IsEnabled();
|
||||
if(!CustomRating.IsEnabled()) {
|
||||
orig_initTechRating(playInfo);
|
||||
return;
|
||||
|
30
Extras/MoreProfileOptions/MU3/patch_UIRetireInfo.cs
Normal file
30
Extras/MoreProfileOptions/MU3/patch_UIRetireInfo.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using MonoMod;
|
||||
|
||||
namespace MU3;
|
||||
|
||||
class patch_UIRetireInfo: UIRetireInfo {
|
||||
private ANM_PLY_retire_score _retireScore;
|
||||
private bool _isEnable;
|
||||
|
||||
[MonoModEnumReplace]
|
||||
public new enum Rank {
|
||||
S,
|
||||
SS,
|
||||
SSS,
|
||||
SSS1,
|
||||
PB,
|
||||
AA,
|
||||
MAX
|
||||
}
|
||||
|
||||
public extern void orig_setupRetireInfo(Rank rank, int score);
|
||||
public void setupRetireInfo(Rank rank, int score) {
|
||||
if(rank == Rank.MAX) {
|
||||
_isEnable = false;
|
||||
return;
|
||||
}
|
||||
_isEnable = true;
|
||||
_retireScore.setRank((UIRetireInfo.Rank)rank);
|
||||
_retireScore.setScore(score);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user