static bool Prefix(SkirmishSettings_Beta __instance, ref LanceConfiguration __result) { if (UiManager.Instance.ClickedQuickSkirmish) { Main.Logger.Log($"[SkirmishSettingsBetaFinalizeLancesPatch Prefix] Patching FinalizeLances"); CloudUserSettings playerSettings = ActiveOrDefaultSettings.CloudSettings; LastUsedLances lastUsedLances = playerSettings.LastUsedLances; if (lastUsedLances.ContainsKey(UNLIMITED_LANCE_COST)) { __result = lastUsedLances[UNLIMITED_LANCE_COST]; } else if (lastUsedLances.ContainsKey(WAR_LANCE_COST)) { __result = lastUsedLances[WAR_LANCE_COST]; } else if (lastUsedLances.ContainsKey(BATTLE_LANCE_COST)) { __result = lastUsedLances[BATTLE_LANCE_COST]; } else if (lastUsedLances.ContainsKey(CLASH_LANCE_COST)) { __result = lastUsedLances[CLASH_LANCE_COST]; } else { Main.Logger.LogError("[Quick Skirmish] Quick Skirmish cannot be used without a prevously used lance. Go into skirmish and launch at least once"); } return(false); } 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); } }