1
0
forked from akanyan/mu3-mods
Files
mu3-mods/Extras/MoreProfileOptions/MU3/patch_OptionSelecterController.cs
2024-12-28 01:57:37 +00:00

89 lines
3.9 KiB
C#

using MonoMod;
using MU3.CustomUI;
using MU3.User;
using MU3.Util;
using System;
using System.Reflection;
using UnityEngine;
namespace MU3;
class patch_OptionSelecterController: OptionSelecterController {
private chengeParamFuncArray[] cpFuncArray = new chengeParamFuncArray[35];
[MonoModIgnore]
private extern void setInputCursor(int currentParam);
private extern void orig_setupCpFuncArray();
private void setupCpFuncArray() {
orig_setupCpFuncArray();
cpFuncArray[33].max = 4;
cpFuncArray[4].max = 7;
}
public extern void orig_init(UserOption.OptionName id);
public new void init(UserOption.OptionName id) {
orig_init(id);
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>();
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 tex = ((Sprite[])spritesFi.GetValue(changer))[0].texture;
spritesFi.SetValue(changer, new Sprite[5]);
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);
if(Type.GetType("TranslationEntry") != null) {
// ENpatch is active
tex.LoadImage(Mod.AbortTextureEn.Bytes);
} else {
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));
}
}
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);
}
}
}