public static void CharaMigrateUI_OnBeforeStart_AddElements(CharaMigrateUI __instance) => AddElements(null, null, __instance);
private static void AddElements(CharaChangeUI change, CharaLookEditUI lookedit, CharaMigrateUI migrate) { Traverse trav; if (change != null) { trav = Traverse.Create(change); } else if (lookedit != null) { trav = Traverse.Create(lookedit); } else if (migrate != null) { trav = Traverse.Create(migrate); } else { return; } trav.Field("_infos").SetValue(new GameLoadCharaFileSystem.GameCharaFileInfo[girlCount]); var oldelements = trav.Field("_elements").GetValue <RectTransform[]>(); List <RectTransform> newelements = new List <RectTransform>(); newelements.AddRange(oldelements); var oldcharaButtons = trav.Field("_charaButtons").GetValue <Button[]>(); List <Button> newCharaButtons = new List <Button>(); newCharaButtons.AddRange(oldcharaButtons); var oldcharaTexts = trav.Field("_charaTexts").GetValue <Text[]>(); List <Text> newCharaTexts = new List <Text>(); newCharaTexts.AddRange(oldcharaTexts); List <Button> newCharaArrowButtons = new List <Button>(); if (migrate != null) { var oldcharaArrowButtons = trav.Field("_charaArrowButtons").GetValue <Button[]>(); newCharaArrowButtons.AddRange(oldcharaArrowButtons); } int oldElementsLength = oldelements.Length; for (int i = 0; i < girlCount - oldElementsLength; i++) { var copy = Instantiate(oldelements[oldElementsLength - 1], oldelements[oldElementsLength - 1].transform.parent); copy.name = $"Element_{i+oldElementsLength:00}"; newelements.Add(copy); newCharaButtons.Add(copy.transform.Find("Button").GetComponent <Button>()); newCharaTexts.Add(copy.transform.Find("Button/Text").GetComponent <Text>()); if (migrate != null) { newCharaArrowButtons.Add(copy.transform.Find("arrow").GetComponent <Button>()); } } trav.Field("_elements").SetValue(newelements.ToArray()); trav.Field("_charaButtons").SetValue(newCharaButtons.ToArray()); trav.Field("_charaTexts").SetValue(newCharaTexts.ToArray()); if (migrate != null) { trav.Field("_charaArrowButtons").SetValue(newCharaArrowButtons.ToArray()); } }