diff --git a/src/TSMapEditor/Config/Default/UI/Windows/AITriggersWindow.ini b/src/TSMapEditor/Config/Default/UI/Windows/AITriggersWindow.ini index 4a2e3e4e..75cc14c0 100644 --- a/src/TSMapEditor/Config/Default/UI/Windows/AITriggersWindow.ini +++ b/src/TSMapEditor/Config/Default/UI/Windows/AITriggersWindow.ini @@ -22,6 +22,7 @@ $CC13=ddSide:XNADropDown $CC14=lblSide:XNALabel $CC15=ddHouseType:XNADropDown $CC16=lblHouse:XNALabel +$CC17=chkEnabled:XNACheckBox $CCline1=panelLine1:XNAPanel $CCc1=lblConditionHeader:XNALabel $CCc2=ddConditionType:XNADropDown @@ -157,9 +158,14 @@ $X=getRight(ddSide) + (HORIZONTAL_SPACING * 2) $Y=getY(lblSide) $Text=translate(House:) +[chkEnabled] +$X=getX(lblName) +$Y=getBottom(ddSide) + VERTICAL_SPACING +$Text=translate(Enabled) + [panelLine1] $X=getX(lblSelectedAITrigger) -$Y=getBottom(ddHouseType) + (VERTICAL_SPACING * 3) +$Y=getBottom(chkEnabled) + (VERTICAL_SPACING * 3) $Width=getWidth(AITriggersWindow) - getX(panelLine1) - EMPTY_SPACE_SIDES $Height=0 diff --git a/src/TSMapEditor/Initialization/MapLoader.cs b/src/TSMapEditor/Initialization/MapLoader.cs index d9bbb5cb..641edf7d 100644 --- a/src/TSMapEditor/Initialization/MapLoader.cs +++ b/src/TSMapEditor/Initialization/MapLoader.cs @@ -1099,6 +1099,23 @@ public static void ReadAITriggerTypes(IMap map, IniFile mapIni) } Logger.Log("AITriggerTypes read successfully."); + + section = mapIni.GetSection("AITriggerTypesEnable"); + if (section == null) + return; + + foreach (var kvp in section.Keys) + { + string aiTriggerININame = kvp.Key; + + var aiTrigger = map.AITriggerTypes.Find(aiTriggerType => aiTriggerType.ININame == aiTriggerININame); + if (aiTrigger == null) + continue; + + aiTrigger.Enabled = Conversions.BooleanFromString(kvp.Value, aiTrigger.Enabled); + } + + Logger.Log("AITriggerTypesEnable read successfully."); } public static void ReadHouseTypes(IMap map, IniFile mapIni) diff --git a/src/TSMapEditor/Initialization/MapWriter.cs b/src/TSMapEditor/Initialization/MapWriter.cs index 8f7557f3..f2416c71 100644 --- a/src/TSMapEditor/Initialization/MapWriter.cs +++ b/src/TSMapEditor/Initialization/MapWriter.cs @@ -371,12 +371,10 @@ public static void WriteAITriggerTypes(List aiTriggerTypes, IniFi iniFile.AddSection(enablesSection); } - // Enable local AI triggers that haven't been enabled or disabled - // by the user yet + // Enable or disable local AI triggers for (int i = 0; i < aiTriggerTypes.Count; i++) - { - if (!enablesSection.KeyExists(aiTriggerTypes[i].ININame)) - enablesSection.SetStringValue(aiTriggerTypes[i].ININame, "yes"); + { + enablesSection.SetBooleanValue(aiTriggerTypes[i].ININame, aiTriggerTypes[i].Enabled, BooleanStringStyle.YESNO_LOWERCASE); } } diff --git a/src/TSMapEditor/Models/AITriggerType.cs b/src/TSMapEditor/Models/AITriggerType.cs index acb2a0c2..8c5d829e 100644 --- a/src/TSMapEditor/Models/AITriggerType.cs +++ b/src/TSMapEditor/Models/AITriggerType.cs @@ -91,6 +91,7 @@ public AITriggerType(string iniName) public bool Easy { get; set; } = true; public bool Medium { get; set; } = true; public bool Hard { get; set; } = true; + public bool Enabled { get; set; } = true; public AITriggerType Clone(string newUniqueId) { diff --git a/src/TSMapEditor/UI/Windows/AITriggersWindow.cs b/src/TSMapEditor/UI/Windows/AITriggersWindow.cs index 9399f6b4..082958c4 100644 --- a/src/TSMapEditor/UI/Windows/AITriggersWindow.cs +++ b/src/TSMapEditor/UI/Windows/AITriggersWindow.cs @@ -44,6 +44,7 @@ public AITriggersWindow(WindowManager windowManager, Map map) : base(windowManag private EditorTextBox tbName; private XNADropDown ddSide; private XNADropDown ddHouseType; + private XNACheckBox chkEnabled; private XNADropDown ddConditionType; private XNADropDown ddComparator; private EditorNumberTextBox tbQuantity; @@ -86,6 +87,7 @@ public override void Initialize() tbName = FindChild(nameof(tbName)); ddSide = FindChild(nameof(ddSide)); ddHouseType = FindChild(nameof(ddHouseType)); + chkEnabled = FindChild(nameof(chkEnabled)); ddConditionType = FindChild(nameof(ddConditionType)); ddComparator = FindChild(nameof(ddComparator)); tbQuantity = FindChild(nameof(tbQuantity)); @@ -358,6 +360,7 @@ private void EditAITrigger(AITriggerType aiTriggerType) tbName.TextChanged -= TbName_TextChanged; ddSide.SelectedIndexChanged -= DdSide_SelectedIndexChanged; ddHouseType.SelectedIndexChanged -= DdHouse_SelectedIndexChanged; + chkEnabled.CheckedChanged -= chkEnabled_CheckedChanged; ddConditionType.SelectedIndexChanged -= DdConditionType_SelectedIndexChanged; ddComparator.SelectedIndexChanged -= DdComparator_SelectedIndexChanged; tbQuantity.TextChanged -= TbQuantity_TextChanged; @@ -378,6 +381,7 @@ private void EditAITrigger(AITriggerType aiTriggerType) tbName.Text = string.Empty; ddSide.SelectedIndex = -1; ddHouseType.SelectedIndex = -1; + chkEnabled.Checked = false; ddConditionType.SelectedIndex = -1; ddComparator.SelectedIndex = -1; tbQuantity.Text = string.Empty; @@ -399,6 +403,7 @@ private void EditAITrigger(AITriggerType aiTriggerType) tbName.Text = editedAITrigger.Name; ddSide.SelectedIndex = editedAITrigger.Side < ddSide.Items.Count ? editedAITrigger.Side : 0; ddHouseType.SelectedIndex = ddHouseType.Items.FindIndex(ddi => ddi.Text == editedAITrigger.OwnerName); + chkEnabled.Checked = editedAITrigger.Enabled; ddConditionType.SelectedIndex = ((int)aiTriggerType.ConditionType + 1); ddComparator.SelectedIndex = (int)aiTriggerType.Comparator.ComparatorOperator; tbQuantity.Value = aiTriggerType.Comparator.Quantity; @@ -418,6 +423,7 @@ private void EditAITrigger(AITriggerType aiTriggerType) tbName.TextChanged += TbName_TextChanged; ddSide.SelectedIndexChanged += DdSide_SelectedIndexChanged; ddHouseType.SelectedIndexChanged += DdHouse_SelectedIndexChanged; + chkEnabled.CheckedChanged += chkEnabled_CheckedChanged; ddConditionType.SelectedIndexChanged += DdConditionType_SelectedIndexChanged; ddComparator.SelectedIndexChanged += DdComparator_SelectedIndexChanged; tbQuantity.TextChanged += TbQuantity_TextChanged; @@ -514,6 +520,11 @@ private void ChkEnabledOnHard_CheckedChanged(object sender, EventArgs e) editedAITrigger.Hard = chkEnabledOnHard.Checked; } + private void chkEnabled_CheckedChanged(object sender, EventArgs e) + { + editedAITrigger.Enabled = chkEnabled.Checked; + } + public void Open() { ListAITriggers();