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(); var changer = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_OnOff").GetComponent(); 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.instance.userOption.customSet.Rating); } else if(id == UserOption.OptionName.Abort) { var changer = transform.Find("NUL_SWH_Option_00/NUL_Select/PAT_Clear").GetComponent(); 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(); changer.patternNumber = currentParam; Singleton.instance.userOption.customSet.Rating = (UserOption.eRating)currentParam; SingletonMonoBehaviour.instance.userData.setUserDetail(); } else { orig_chengeParamOther(currentParam); } } }