public static void InitPrefix(ProfessionDetailPanel __instance, ProfessionType type)
        {
            //We don't add this panel for Soldier or NoJob
            if (type != ProfessionType.Soldier && type != ProfessionType.NoJob)
            {
                //Checks if we already initialized the Specialization Panel.  If so, do nothing
                SpecializationPanel p = __instance.GetComponentInChildren <SpecializationPanel>(true);
                if (p != null)
                {
                    return;
                }

                //Get the parent of the original panel
                GameObject parent = __instance.specializationTogglePanel.transform.parent.gameObject;

                //Create our own panel
                GameObject newSpecPanel = GameObject.Instantiate(ModHandler.mods.gameObjects["SpecializationPanelModded"], parent.transform);
                p = newSpecPanel.GetComponent <SpecializationPanel>();
                p.Init(type, AbsoluteProfessionPrioritiesMod.GetSpecializationDescriptors()[type].Values.ToList());

                //For the collapse button to work, we need to add our panel to the accordion
                //We also remove the original panel from it
                AccordionPanel aPanel = __instance.GetComponent <AccordionPanel>();
                aPanel.accordionObjects.Add(newSpecPanel);
                aPanel.accordionObjects.Remove(__instance.specializationTogglePanel.gameObject);

                //Removing the original panel from the UI would cause bugs so instead we just disable it
                __instance.specializationTogglePanel.gameObject.SetActive(false);
            }
        }
Ejemplo n.º 2
0
        public void Init(SpecializationPanel parent, SpecializationDescriptor spec, int maxValue)
        {
            this.ParentPanel        = parent;
            this.SpecializationName = spec.Name;

            canAutoManage = spec.CanAutoManageSubSpecializations;
            this.AutoPriorityToggle.gameObject.SetActive(spec.CanAutoManageSubSpecializations);

            if (spec.CanAutoManageSubSpecializations)
            {
                this.AutoPriorityText.gameObject.SetActive(false);
                this.AutoPriorityText.gameObject.AddComponent <TooltipHoverable>().Init("",
                                                                                        Localization.GetText($"Specialization_{spec.Profession}_{spec.Name}_AutoManageTooltip"));
                this.AutoPriorityText.gameObject.SetActive(true);
            }

            this.SpecializationToggle.MaxValue        = maxValue;
            this.SpecializationToggle.ToggleText.text = spec.GetDisplayName();

            if (spec.SubSpecializations.Count == 0)
            {
                SubExpandButton.gameObject.SetActive(false);
                SubCollapseButton.gameObject.SetActive(false);
                AutoPriorityToggle.gameObject.SetActive(false);
            }
            else
            {
                foreach (var sub in spec.SubSpecializations.Values)
                {
                    OrderableToggle subToggle = GameObject.Instantiate(this.SubSpecializationToggleTemplate.gameObject).GetComponent <OrderableToggle>();
                    subToggle.transform.SetParent(this.SubSpecializationsContainer.transform);
                    subToggle.name            = sub.Name;
                    subToggle.ToggleText.text = sub.GetDisplayName();
                    subToggle.MaxValue        = spec.SubSpecializations.Count - 1;
                    subToggle.gameObject.SetActive(true);

                    subToggle.UpButton.onClick.AddListener(() => SubSpecializationToggle_ButtonUpClicked(subToggle));
                    subToggle.DownButton.onClick.AddListener(() => SubSpecializationToggle_ButtonDownClicked(subToggle));
                    subToggle.Toggle.onValueChanged.AddListener((x) => SubSpecializationToggle_ToggleValueChanged(subToggle));
                    subToggle.OrderInput.onValueChanged.AddListener((x) => SubSpecializationToggle_InputValueChanged(subToggle));

                    this.SubSpecToggles.Add(sub.Name, subToggle);
                }

                OrderSubSpecializations();
            }

            this.SpecializationToggle.OrderInput.onValueChanged.AddListener((x) => SpecializationToggle_InputValueChanged());
            this.SpecializationToggle.Toggle.onValueChanged.AddListener((x) => SpecializationToggle_ToggleValueChanged());

            this.SubCollapseButton.onClick.AddListener(SpecializationToggle_CollapseButtonClicked);
            this.SubExpandButton.onClick.AddListener(SpecializationToggle_ExpandButtonClicked);

            this.AutoPriorityToggle.onValueChanged.AddListener(this.AutoManageToggle_ValueChanged);
            this.DistanceInput.onValueChanged.AddListener((x) => this.DistanceInput_ValueChanged());
        }
        public static void SetHumanPostFix(ProfessionDetailPanel __instance, HumanAI human)
        {
            //Get our new panel
            SpecializationPanel p = __instance.GetComponentInChildren <SpecializationPanel>(true);

            //If it exists (depends on the stage of the lifecycle of the UI)
            //If it does, call SetHuman on our panel
            if (p != null)
            {
                p.SetHuman(human);
            }
        }