1
0
forked from akanyan/mu3-mods
Files
mu3-mods/NaiveRating/MU3/patch_OptionSelecterController.cs
akanyan 23331f8d56 feat: a decent rating selector?
Except it shows an arrow to the right when it shouldn't
2024-12-21 05:32:50 +00:00

48 lines
2.2 KiB
C#

using MU3.CustomUI;
using MU3.User;
using MU3.Util;
using System.Reflection;
using UnityEngine;
namespace MU3;
class patch_OptionSelecterController: OptionSelecterController {
private chengeParamFuncArray[] cpFuncArray = new chengeParamFuncArray[35];
public extern void orig_init(UserOption.OptionName id);
public new void init(UserOption.OptionName id) {
orig_init(id);
cpFuncArray[33].max = 2;
if(id == UserOption.OptionName.Rating) {
var rct = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent<RectTransform>();
var changer = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent<MU3UIImageChanger>();
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;
var newSprites = new Sprite[3];
newSprites[0] = Sprite.Create(tex, new Rect(1552.0f, 366.0f, 160.0f, 65.0f), new Vector2(80.0f, 0.0f));
newSprites[1] = Sprite.Create(tex, new Rect(1221.0f, 1488.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f));
newSprites[2] = Sprite.Create(tex, new Rect(1221.0f, 1410.0f, 160.0f, 70.0f), new Vector2(80.0f, 35.0f));
spritesFi.SetValue(changer, newSprites);
changer.patternNumber = (int)Singleton<UserManager>.instance.userOption.customSet.Rating;
}
}
private extern void orig_chengeParamOther(int currentParam);
private void chengeParamOther(int currentParam) {
if(myOptionId == UserOption.OptionName.Rating) {
var changer = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent<MU3UIImageChanger>();
changer.patternNumber = currentParam;
Singleton<UserManager>.instance.userOption.customSet.Rating = (UserOption.eRating)currentParam;
SingletonMonoBehaviour<SystemUI>.instance.userData.setUserDetail();
} else {
orig_chengeParamOther(currentParam);
}
}
}