/// <summary> /// Performs initial setup for the panel; we don't use Start() as that's not sufficiently reliable (race conditions), and is not needed with the dynamic create/destroy process. /// </summary> internal override void Setup(Transform parentTransform) { try { base.Setup(parentTransform); // Extend height and add 'clear all building settings' button. height += 40f; UIButton clearBuildingsButton = UIControls.AddButton(this, Margin, height - 40f, Translations.Translate("ABLC_CLR_BLD"), this.width - (Margin * 2), tooltip: Translations.Translate("ABLC_CLR_BLD_TIP")); clearBuildingsButton.eventClicked += ClearBuildings; // Add category labels. UILabel resLabel = AddLabel(Translations.Translate("ABLC_CAT_RES"), Margin, 50f, hAlign: UIHorizontalAlignment.Left); UILabel workLabel = AddLabel(Translations.Translate("ABLC_CAT_WRK"), Margin, 140f, hAlign: UIHorizontalAlignment.Left); // Add workplace min and max dropdowns. minWorkLevelDropDown = UIControls.AddLabelledDropDown(this, width - Margin - MenuWidth, 160f, Translations.Translate("ABLC_LVL_MIN"), 60f, accomodateLabel: false, tooltip: Translations.Translate("ABLC_CAT_WMN_TIP")); minWorkLevelDropDown.items = new string[] { "1", "2", "3" }; maxWorkLevelDropDown = UIControls.AddLabelledDropDown(this, width - Margin - MenuWidth, 190f, Translations.Translate("ABLC_LVL_MAX"), 60f, accomodateLabel: false, tooltip: Translations.Translate("ABLC_CAT_WMX_TIP")); maxWorkLevelDropDown.items = new string[] { "1", "2", "3" }; // Add random level checkbox. randomSpawnCheck = UIControls.LabelledCheckBox(this, 20f, 235f, Translations.Translate("ABLC_RAN_SPN"), tooltip: Translations.Translate("ABLC_RAN_SPN_TIP")); // Set initial district. DistrictChanged(); // Add event handlers. minLevelDropDown.eventSelectedIndexChanged += (control, index) => { // Don't do anything if events are disabled. if (!disableEvents) { DistrictsABLC.minResLevel[targetID] = (byte)index; // If the minimum level is now greater than the maximum level, increase the maximum to match the minimum. if (index > maxLevelDropDown.selectedIndex) { maxLevelDropDown.selectedIndex = index; } } }; maxLevelDropDown.eventSelectedIndexChanged += (control, index) => { // Don't do anything if events are disabled. if (!disableEvents) { DistrictsABLC.maxResLevel[targetID] = (byte)index; // If the maximum level is now less than the minimum level, reduce the minimum to match the maximum. if (index < minLevelDropDown.selectedIndex) { minLevelDropDown.selectedIndex = index; } } }; minWorkLevelDropDown.eventSelectedIndexChanged += (control, index) => { // Don't do anything if events are disabled. if (!disableEvents) { DistrictsABLC.minWorkLevel[targetID] = (byte)index; // If the minimum level is now greater than the maximum level, increase the maximum to match the minimum. if (index > maxWorkLevelDropDown.selectedIndex) { maxWorkLevelDropDown.selectedIndex = index; } } }; maxWorkLevelDropDown.eventSelectedIndexChanged += (control, index) => { // Don't do anything if events are disabled. if (!disableEvents) { DistrictsABLC.maxWorkLevel[targetID] = (byte)index; // If the maximum level is now less than the minimum level, reduce the minimum to match the maximum. if (index < minWorkLevelDropDown.selectedIndex) { minWorkLevelDropDown.selectedIndex = index; } } }; randomSpawnCheck.eventCheckChanged += (control, isChecked) => { // Don't do anything if events are disabled. if (!disableEvents) { // XOR relevant flag to toggle. DistrictsABLC.flags[targetID] ^= (byte)DistrictFlags.randomSpawnLevels; } }; upgradeButton.eventClicked += (control, clickEvent) => { LevelDistrict(targetID, true); }; downgradeButton.eventClicked += (control, clickEvent) => { LevelDistrict(targetID, false); }; } catch (Exception e) { Logging.LogException(e, "exception setting up district panel"); } }
/// <summary> /// Performs initial setup for the panel; we don't use Start() as that's not sufficiently reliable (race conditions), and is not needed with the dynamic create/destroy process. /// </summary> internal virtual void Setup(Transform parentTransform) { try { // Hide while we're setting up. isVisible = false; // Basic setup. autoLayout = false; backgroundSprite = "MenuPanel2"; opacity = 0.95f; isVisible = true; canFocus = true; isInteractive = true; size = new Vector3(220f, PanelHeight); // Set parent transform to game's district info panel. transform.parent = parentTransform; // Set position according to setting. if (ModSettings.onRight) { // On right of info panel. relativePosition = new Vector2(parent.width + 10f, 0f); } else { // On left of info panel. relativePosition = new Vector2(-(width + 10f), 0f); } // Decorative icon (top-left). UISprite iconSprite = AddUIComponent <UISprite>(); iconSprite.relativePosition = new Vector2(0f, 0f); iconSprite.height = 36f; iconSprite.width = 36f; iconSprite.atlas = Textures.ABLCButtonSprites; iconSprite.spriteName = "normal"; // Category labels nameLabel = AddLabel("", 0f, 27f, 0.6f); UILabel titleLabel = AddLabel(Translations.Translate("ABLC_SHORT"), 0f, Margin, 1.0f); // Level dropdowns. minLevelDropDown = UIControls.AddLabelledDropDown(this, width - Margin - MenuWidth, 70f, Translations.Translate("ABLC_LVL_MIN"), 60f, accomodateLabel: false, tooltip: MinLevelTip); minLevelDropDown.items = new string[] { "1", "2", "3", "4", "5" }; maxLevelDropDown = UIControls.AddLabelledDropDown(this, width - Margin - MenuWidth, 100f, Translations.Translate("ABLC_LVL_MAX"), 60f, accomodateLabel: false, tooltip: MaxLevelTip); maxLevelDropDown.items = new string[] { "1", "2", "3", "4", "5" }; // Apply button. upgradeButton = UIControls.AddButton(this, Margin, PanelHeight - 80f, Translations.Translate("ABLC_TRIG_UP"), this.width - (Margin * 2), tooltip: UpgradeTip); // Add 'downgrade' button. downgradeButton = UIControls.AddButton(this, Margin, PanelHeight - 40f, Translations.Translate("ABLC_TRIG_DWN"), this.width - (Margin * 2), tooltip: DowngradeTip); } catch (Exception e) { Logging.LogException(e, "exception setting up panel base"); } }