internal static void Postfix(KnowledgeSkillTree __instance) { foreach (var knowledgeSkillBtns in Buttons.Values) { foreach (var megaKnowledge in knowledgeSkillBtns.Keys) { knowledgeSkillBtns[megaKnowledge].SetSelected(Main.MegaKnowledges[megaKnowledge].enabled); } } }
internal static void Postfix(KnowledgeSkillTree __instance) { knowledgeSkillTree = __instance; foreach (var(megaKnowledgeKey, megaKnowledge) in Main.MegaKnowledges) { var cloneFrom = __instance.GetComponentsInChildren <Component>() .First(component => component.name == megaKnowledge.cloneFrom).gameObject; var child = cloneFrom.transform.parent.FindChild(megaKnowledge.name); if (child != null) { return; } var newButton = Object.Instantiate(cloneFrom, cloneFrom.transform.parent, true); newButton.transform.Translate(megaKnowledge.offsetX, megaKnowledge.offsetY, 0); var btn = newButton.GetComponentInChildren <KnowledgeSkillBtn>(); newButton.name = megaKnowledge.name; var knowledgeModels = Game.instance.model.knowledgeSets.First(model => model.name == megaKnowledge.set).GetKnowledgeModels(); btn.ClickedEvent = new Action <KnowledgeSkillBtn>(skillBtn => { var hasAll = true; var btd6Player = Game.instance.GetBtd6Player(); foreach (var knowledgeModel in knowledgeModels) { if (!btd6Player.HasKnowledge(knowledgeModel.id)) { hasAll = false; } } if (!(Input.GetKey(KeyCode.LeftShift) || hasAll)) { foreach (var knowledgeSkillBtn in Buttons[megaKnowledge.set].Values) { knowledgeSkillBtn.SetState(KnowlegdeSkillBtnState.Available); } foreach (var mkv in Main.MegaKnowledges.Values.Where(mkv => mkv.set == megaKnowledge.set)) { mkv.enabled = false; } } if (Input.GetKey(KeyCode.LeftAlt)) { megaKnowledge.enabled = false; skillBtn.SetState(KnowlegdeSkillBtnState.Available); } else { megaKnowledge.enabled = true; skillBtn.SetState(KnowlegdeSkillBtnState.Purchased); knowledgeSkillTree.BtnClicked(skillBtn); knowledgeSkillTree.selectedPanelTitleTxt.SetText(megaKnowledge.name); knowledgeSkillTree.selectedPanelDescTxt.SetText(megaKnowledge.description); } }); btn.Construct(newButton); if (!Buttons.ContainsKey(megaKnowledge.set)) { Buttons[megaKnowledge.set] = new Dictionary <string, KnowledgeSkillBtn>(); } Buttons[megaKnowledge.set][megaKnowledgeKey] = btn; btn.SetState(megaKnowledge.enabled ? KnowlegdeSkillBtnState.Purchased : KnowlegdeSkillBtnState.Available); var image = btn.GetComponentsInChildren <Component>().First(component => component.name == "Icon") .GetComponent <Image>(); ResourceLoader.LoadSpriteFromSpriteReferenceAsync(new SpriteReference(megaKnowledge.GUID), image, false); image.mainTexture.filterMode = FilterMode.Trilinear; } foreach (var gameObject in knowledgeSkillTree.scrollers) { gameObject.GetComponent <RectTransform>().sizeDelta += new Vector2(0, 500); } }