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()); }
private void InitColonistForSpecialization(HumanAI human, string specName, SpecializationDescriptor desc, Dictionary <string, Specialization> specs) { if (!specs.ContainsKey(specName)) { specs.Add(specName, desc.ToSpecialization(human, specs.Count)); } else { foreach (var subSpecName in specs[specName].SubSpecializations.Keys.ToArray() .Where(x => !desc.SubSpecializations.Keys.Contains(x))) { specs[specName].SubSpecializations.Remove(subSpecName); } } foreach (var subSpecName in desc.SubSpecializations.Keys.ToArray()) { InitColonistForSubSpecialization(human, subSpecName, desc.SubSpecializations[subSpecName], specs[specName]); } }