Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
            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);
                }
            }