public static bool Prefix(CombatHUDMechwarriorTray __instance, CombatGameState Combat, CombatHUD HUD) { Logger.M.TWL(0, "CombatHUDMechwarriorTray.Init prefix"); if (DropManagement.settings.additinalPlayerMechSlots == 0) { Logger.M.WL(1, "no additional portraits needed"); return(true); } try { //int portraitsCount = 8; int portraitsCount = Combat.LocalPlayerTeam.unitCount > (Settings.DEFAULT_MECH_SLOTS + Settings.MAX_ADDITINAL_MECH_SLOTS) ? Settings.DEFAULT_MECH_SLOTS + Settings.MAX_ADDITINAL_MECH_SLOTS : Combat.LocalPlayerTeam.unitCount; if (__instance.PortraitHolders.Length >= portraitsCount) { Logger.M.WL(1, "no additional portraits needed"); return(true); } GameObject[] portraitHolders = new GameObject[portraitsCount]; HBSDOTweenToggle[] portraitTweens = new HBSDOTweenToggle[portraitsCount]; GameObject layout = __instance.PortraitHolders[0].transform.parent.gameObject; //layout.transform.localScale //GameObject elayout = GameObject.Instantiate(layout); //elayout.transform.localPosition += Vector3.up * (-30.0f); for (int index = 0; index < portraitHolders.Length; ++index) { if (index < __instance.PortraitHolders.Length) { portraitHolders[index] = __instance.PortraitHolders[index]; continue; } GameObject srcPortraitHolder = portraitHolders[index % (__instance.PortraitHolders.Length)]; GameObject newPortraitHolder = GameObject.Instantiate(srcPortraitHolder, srcPortraitHolder.transform.parent); Vector3[] corners = new Vector3[4]; srcPortraitHolder.GetComponent <RectTransform>().GetWorldCorners(corners); float height = corners[2].z - corners[0].z; //Logger.M.WL(1, "portrait. index:" + index + " corners 0:" + corners[0] + " 1:" + corners[1] + " 2:" + corners[2] + " 3:" + corners[3]); foreach (Component component in srcPortraitHolder.GetComponentsInChildren <Component>()) { Logger.M.WL(2, component.name + ":" + component.GetType() + ":" + component.GetInstanceID()); } newPortraitHolder.SetActive(true); portraitHolders[index] = newPortraitHolder; newPortraitHolder.GetComponent <RectTransform>().GetWorldCorners(corners); } __instance.PortraitHolders = portraitHolders; float spacing = 117.2f; if (__instance.portraitTweens.Length > 1) { Vector3[] corners0 = new Vector3[4]; __instance.portraitTweens[0].gameObject.GetComponent <RectTransform>().GetWorldCorners(corners0); Vector3[] corners1 = new Vector3[4]; __instance.portraitTweens[1].gameObject.GetComponent <RectTransform>().GetWorldCorners(corners1); spacing = corners1[0].x - corners0[0].x; } float diff = 0f; Vector3[] cornersl = new Vector3[4]; __instance.portraitTweens[__instance.portraitTweens.Length - 1].gameObject.GetComponent <RectTransform>().GetWorldCorners(cornersl); Vector3[] cornersf = new Vector3[4]; __instance.portraitTweens[0].gameObject.GetComponent <RectTransform>().GetWorldCorners(cornersf); diff = cornersl[0].x - cornersf[0].x + spacing; for (int index = 0; index < portraitTweens.Length; ++index) { if (index < __instance.portraitTweens.Length) { portraitTweens[index] = __instance.portraitTweens[index]; continue; } HBSDOTweenToggle srcPortraitTween = portraitTweens[index % (__instance.portraitTweens.Length)]; GameObject newPortraitTweenGO = GameObject.Instantiate(srcPortraitTween.gameObject, srcPortraitTween.gameObject.transform.parent); HBSDOTweenToggle newPortraitTween = newPortraitTweenGO.GetComponent <HBSDOTweenToggle>(); newPortraitTweenGO.transform.localPosition += Vector3.right * diff; newPortraitTween.TweenObjects[0] = portraitHolders[index]; //Logger.M.WL(1, "tween. index:" + index + " corners 0:" + corners[0] + " 1:" + corners[1] + " 2:" + corners[2] + " 3:" + corners[3]); portraitTweens[index] = newPortraitTween; //newPortraitTween.GetComponent<RectTransform>().GetWorldCorners(corners); //Logger.M.WL(1, "tween. index:" + (__instance.portraitTweens.Length + index) + " corners 0:" + corners[0] + " 1:" + corners[1] + " 2:" + corners[2] + " 3:" + corners[3]); } __instance.portraitTweens = portraitTweens; return(true); } catch (Exception e) { Logger.M.TWL(0, e.ToString(), true); return(true); } }
public void SetupQuickSkirmishMenu() { GameObject mainMenuScreenGo = GameObject.Find("uixPrfPanl_mainMenu-Screen_V3(Clone)"); GameObject layoutMainNavigationGo = GameObject.Find("layout_main-nav"); GameObject mainNavigationActions = layoutMainNavigationGo.FindRecursive("layout-actions-radioSet"); GameObject skirmishButton = mainNavigationActions.FindRecursive("button-SKIRMISH"); GameObject quickSkirmishButtonGo = GameObject.Instantiate(skirmishButton); quickSkirmishButtonGo.name = "button-QUICK-SKIRMISH"; RectTransform quickSkirmishButtonTransform = (RectTransform)quickSkirmishButtonGo.transform; quickSkirmishButtonTransform.SetParent(mainNavigationActions.transform, false); // Reposition submenus RectTransform layoutActionsCampaignTransform = layoutMainNavigationGo.FindRecursive("layout-actions-Campaign").GetComponent <RectTransform>(); layoutActionsCampaignTransform.anchoredPosition = new Vector2(-183, layoutActionsCampaignTransform.anchoredPosition.y); RectTransform layoutActionsSkirmishTransform = layoutMainNavigationGo.FindRecursive("layout-actions-Skirmish").GetComponent <RectTransform>(); layoutActionsSkirmishTransform.anchoredPosition = new Vector2(30, layoutActionsSkirmishTransform.anchoredPosition.y); // Resize the navigation area holding the buttons RectTransform mainNavigationActionsTransform = (RectTransform)mainNavigationActions.transform; mainNavigationActionsTransform.sizeDelta = new Vector2(900, mainNavigationActionsTransform.sizeDelta.y); // Resize the background image behind the buttons RectTransform mainNavigationActionsBackgroundTransform = (RectTransform)mainNavigationActions.FindRecursive("bgFill").transform; mainNavigationActionsBackgroundTransform.sizeDelta = new Vector2(0, mainNavigationActionsBackgroundTransform.sizeDelta.y); // Set the button text TextMeshProUGUI quickSkirmishText = quickSkirmishButtonGo.FindRecursive("button_text").GetComponent <TextMeshProUGUI>(); quickSkirmishText.SetText("Quick Skirmish"); // Change the decoration position RectTransform leftDecorationTransform = (RectTransform)mainMenuScreenGo.FindRecursive("bracket-left").transform; RectTransform rightDecorationTransform = (RectTransform)mainMenuScreenGo.FindRecursive("bracket-right").transform; leftDecorationTransform.anchoredPosition = new Vector2(-190, leftDecorationTransform.anchoredPosition.y); rightDecorationTransform.anchoredPosition = new Vector2(190, rightDecorationTransform.anchoredPosition.y); HBSRadioSet mainMenuRadioSet = mainNavigationActions.GetComponent <HBSRadioSet>(); mainMenuRadioSet.AddButtonToRadioSet(quickSkirmishButtonGo.GetComponent <HBSButton>()); // Set up click event HBSDOTweenToggle quickSkirmishToggleButton = quickSkirmishButtonGo.GetComponent <HBSDOTweenToggle>(); UnityEvent onClickEvent = new UnityEvent(); quickSkirmishToggleButton.OnClicked = onClickEvent; onClickEvent.RemoveAllListeners(); onClickEvent.AddListener(OnQuickSkirmishButtonClicked); // Check if there are any valid last used lances, if not - disable the button CloudUserSettings playerSettings = ActiveOrDefaultSettings.CloudSettings; LastUsedLances lastUsedLances = playerSettings.LastUsedLances; if (lastUsedLances.Count <= 0) { quickSkirmishToggleButton.SetState(ButtonState.Unavailable, true); } }