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);
     }
 }
Esempio n. 2
0
        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);
            }
        }