Skip to content

Commit 827ce5c

Browse files
authored
Add support for disabling local AI Triggers
1 parent c6bdf98 commit 827ce5c

File tree

5 files changed

+39
-6
lines changed

5 files changed

+39
-6
lines changed

src/TSMapEditor/Config/Default/UI/Windows/AITriggersWindow.ini

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ $CC13=ddSide:XNADropDown
2222
$CC14=lblSide:XNALabel
2323
$CC15=ddHouseType:XNADropDown
2424
$CC16=lblHouse:XNALabel
25+
$CC17=chkEnabled:XNACheckBox
2526
$CCline1=panelLine1:XNAPanel
2627
$CCc1=lblConditionHeader:XNALabel
2728
$CCc2=ddConditionType:XNADropDown
@@ -157,9 +158,14 @@ $X=getRight(ddSide) + (HORIZONTAL_SPACING * 2)
157158
$Y=getY(lblSide)
158159
$Text=translate(House:)
159160

161+
[chkEnabled]
162+
$X=getX(lblName)
163+
$Y=getBottom(ddSide) + VERTICAL_SPACING
164+
$Text=translate(Enabled)
165+
160166
[panelLine1]
161167
$X=getX(lblSelectedAITrigger)
162-
$Y=getBottom(ddHouseType) + (VERTICAL_SPACING * 3)
168+
$Y=getBottom(chkEnabled) + (VERTICAL_SPACING * 3)
163169
$Width=getWidth(AITriggersWindow) - getX(panelLine1) - EMPTY_SPACE_SIDES
164170
$Height=0
165171

src/TSMapEditor/Initialization/MapLoader.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,23 @@ public static void ReadAITriggerTypes(IMap map, IniFile mapIni)
10911091
}
10921092

10931093
Logger.Log("AITriggerTypes read successfully.");
1094+
1095+
section = mapIni.GetSection("AITriggerTypesEnable");
1096+
if (section == null)
1097+
return;
1098+
1099+
foreach (var kvp in section.Keys)
1100+
{
1101+
string aiTriggerININame = kvp.Key;
1102+
1103+
var aiTrigger = map.AITriggerTypes.Find(aiTriggerType => aiTriggerType.ININame == aiTriggerININame);
1104+
if (aiTrigger == null)
1105+
continue;
1106+
1107+
aiTrigger.Enabled = Conversions.BooleanFromString(kvp.Value, aiTrigger.Enabled);
1108+
}
1109+
1110+
Logger.Log("AITriggerTypesEnable read successfully.");
10941111
}
10951112

10961113
public static void ReadHouseTypes(IMap map, IniFile mapIni)

src/TSMapEditor/Initialization/MapWriter.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,10 @@ public static void WriteAITriggerTypes(List<AITriggerType> aiTriggerTypes, IniFi
371371
iniFile.AddSection(enablesSection);
372372
}
373373

374-
// Enable local AI triggers that haven't been enabled or disabled
375-
// by the user yet
374+
// Enable or disable local AI triggers
376375
for (int i = 0; i < aiTriggerTypes.Count; i++)
377-
{
378-
if (!enablesSection.KeyExists(aiTriggerTypes[i].ININame))
379-
enablesSection.SetStringValue(aiTriggerTypes[i].ININame, "yes");
376+
{
377+
enablesSection.SetBooleanValue(aiTriggerTypes[i].ININame, aiTriggerTypes[i].Enabled, BooleanStringStyle.YESNO_LOWERCASE);
380378
}
381379
}
382380

src/TSMapEditor/Models/AITriggerType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public AITriggerType(string iniName)
9191
public bool Easy { get; set; } = true;
9292
public bool Medium { get; set; } = true;
9393
public bool Hard { get; set; } = true;
94+
public bool Enabled { get; set; } = true;
9495

9596
public AITriggerType Clone(string newUniqueId)
9697
{

src/TSMapEditor/UI/Windows/AITriggersWindow.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public AITriggersWindow(WindowManager windowManager, Map map) : base(windowManag
4444
private EditorTextBox tbName;
4545
private XNADropDown ddSide;
4646
private XNADropDown ddHouseType;
47+
private XNACheckBox chkEnabled;
4748
private XNADropDown ddConditionType;
4849
private XNADropDown ddComparator;
4950
private EditorNumberTextBox tbQuantity;
@@ -86,6 +87,7 @@ public override void Initialize()
8687
tbName = FindChild<EditorTextBox>(nameof(tbName));
8788
ddSide = FindChild<XNADropDown>(nameof(ddSide));
8889
ddHouseType = FindChild<XNADropDown>(nameof(ddHouseType));
90+
chkEnabled = FindChild<XNACheckBox>(nameof(chkEnabled));
8991
ddConditionType = FindChild<XNADropDown>(nameof(ddConditionType));
9092
ddComparator = FindChild<XNADropDown>(nameof(ddComparator));
9193
tbQuantity = FindChild<EditorNumberTextBox>(nameof(tbQuantity));
@@ -358,6 +360,7 @@ private void EditAITrigger(AITriggerType aiTriggerType)
358360
tbName.TextChanged -= TbName_TextChanged;
359361
ddSide.SelectedIndexChanged -= DdSide_SelectedIndexChanged;
360362
ddHouseType.SelectedIndexChanged -= DdHouse_SelectedIndexChanged;
363+
chkEnabled.CheckedChanged -= chkEnabled_CheckedChanged;
361364
ddConditionType.SelectedIndexChanged -= DdConditionType_SelectedIndexChanged;
362365
ddComparator.SelectedIndexChanged -= DdComparator_SelectedIndexChanged;
363366
tbQuantity.TextChanged -= TbQuantity_TextChanged;
@@ -378,6 +381,7 @@ private void EditAITrigger(AITriggerType aiTriggerType)
378381
tbName.Text = string.Empty;
379382
ddSide.SelectedIndex = -1;
380383
ddHouseType.SelectedIndex = -1;
384+
chkEnabled.Checked = false;
381385
ddConditionType.SelectedIndex = -1;
382386
ddComparator.SelectedIndex = -1;
383387
tbQuantity.Text = string.Empty;
@@ -399,6 +403,7 @@ private void EditAITrigger(AITriggerType aiTriggerType)
399403
tbName.Text = editedAITrigger.Name;
400404
ddSide.SelectedIndex = editedAITrigger.Side < ddSide.Items.Count ? editedAITrigger.Side : 0;
401405
ddHouseType.SelectedIndex = ddHouseType.Items.FindIndex(ddi => ddi.Text == editedAITrigger.OwnerName);
406+
chkEnabled.Checked = editedAITrigger.Enabled;
402407
ddConditionType.SelectedIndex = ((int)aiTriggerType.ConditionType + 1);
403408
ddComparator.SelectedIndex = (int)aiTriggerType.Comparator.ComparatorOperator;
404409
tbQuantity.Value = aiTriggerType.Comparator.Quantity;
@@ -418,6 +423,7 @@ private void EditAITrigger(AITriggerType aiTriggerType)
418423
tbName.TextChanged += TbName_TextChanged;
419424
ddSide.SelectedIndexChanged += DdSide_SelectedIndexChanged;
420425
ddHouseType.SelectedIndexChanged += DdHouse_SelectedIndexChanged;
426+
chkEnabled.CheckedChanged += chkEnabled_CheckedChanged;
421427
ddConditionType.SelectedIndexChanged += DdConditionType_SelectedIndexChanged;
422428
ddComparator.SelectedIndexChanged += DdComparator_SelectedIndexChanged;
423429
tbQuantity.TextChanged += TbQuantity_TextChanged;
@@ -514,6 +520,11 @@ private void ChkEnabledOnHard_CheckedChanged(object sender, EventArgs e)
514520
editedAITrigger.Hard = chkEnabledOnHard.Checked;
515521
}
516522

523+
private void chkEnabled_CheckedChanged(object sender, EventArgs e)
524+
{
525+
editedAITrigger.Enabled = chkEnabled.Checked;
526+
}
527+
517528
public void Open()
518529
{
519530
ListAITriggers();

0 commit comments

Comments
 (0)