Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 57 additions & 33 deletions src/TSMapEditor/Config/UI/Windows/BasicSectionConfigWindow.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,27 @@ $CC06=tbPercent:EditorNumberTextBox
$CC07=lblPercent:XNALabel
$CC08=tbInitialTime:EditorNumberTextBox
$CC09=lblInitialTime:XNALabel
$CC10=chkEndOfGame:XNACheckBox
$CC11=chkOneTimeOnly:XNACheckBox
$CC12=chkSkipScore:XNACheckBox
$CC13=chkSkipMapSelect:XNACheckBox
$CC14=chkIgnoreGlobalAITriggers:XNACheckBox
$CC10=tbHomeCell:EditorNumberTextBox
$CC11=lblHomeCell:XNALabel
$CC12=selTheme:EditorPopUpSelector
$CC13=lblTheme:XNALabel
$CC14=chkEndOfGame:XNACheckBox
$CC15=chkOneTimeOnly:XNACheckBox
$CC16=chkSkipScore:XNACheckBox
$CC17=chkSkipMapSelect:XNACheckBox
; Second column
$CC15=chkOfficial:XNACheckBox
$CC16=chkTruckCrate:XNACheckBox
$CC17=chkTrainCrate:XNACheckBox
$CC18=chkMultiplayerOnly:XNACheckBox
$CC19=chkGrowingTiberium:XNACheckBox
$CC20=chkGrowingVeins:XNACheckBox
$CC21=chkGrowingIce:XNACheckBox
$CC22=chkTiberiumDeathToVisceroid:XNACheckBox
$CC23=chkFreeRadar:XNACheckBox
$CC24=chkRequiredAddOn:XNACheckBox
$CC25=btnApply:EditorButton
$CC18=chkIgnoreGlobalAITriggers:XNACheckBox
$CC19=chkOfficial:XNACheckBox
$CC20=chkTruckCrate:XNACheckBox
$CC21=chkTrainCrate:XNACheckBox
$CC22=chkMultiplayerOnly:XNACheckBox
$CC23=chkGrowingTiberium:XNACheckBox
$CC24=chkGrowingVeins:XNACheckBox
$CC25=chkGrowingIce:XNACheckBox
$CC26=chkTiberiumDeathToVisceroid:XNACheckBox
$CC27=chkFreeRadar:XNACheckBox
$CC28=chkRequiredAddOn:XNACheckBox
$CC29=btnApply:EditorButton
$Height=getBottom(btnApply) + EMPTY_SPACE_BOTTOM
HasCloseButton=true

Expand Down Expand Up @@ -87,9 +91,29 @@ $X=EMPTY_SPACE_SIDES
$Y=getY(tbInitialTime) + 1
Text=Initial time:

[tbHomeCell]
$X=getX(tbName)
$Width=getWidth(tbName)
$Y=getBottom(tbInitialTime) + VERTICAL_SPACING

[lblHomeCell]
$X=EMPTY_SPACE_SIDES
$Y=getY(tbHomeCell) + 1
Text=Home Cell:

[selTheme]
$X=getX(tbName)
$Width=getWidth(tbName)
$Y=getBottom(tbHomeCell) + VERTICAL_SPACING

[lblTheme]
$X=EMPTY_SPACE_SIDES
$Y=getY(selTheme) + 1
Text=Theme:

[chkEndOfGame]
$X=EMPTY_SPACE_SIDES
$Y=getBottom(tbInitialTime) + VERTICAL_SPACING
$Y=getBottom(selTheme) + VERTICAL_SPACING
Text=End of Game

[chkOneTimeOnly]
Expand All @@ -107,62 +131,62 @@ $X=EMPTY_SPACE_SIDES
$Y=getBottom(chkSkipScore) + VERTICAL_SPACING
Text=Skip Map Select

[chkIgnoreGlobalAITriggers]
$X=EMPTY_SPACE_SIDES
$Y=getBottom(chkSkipMapSelect) + VERTICAL_SPACING
Text=Ignore Global AI Triggers

; *************
; Second column
; *************

[chkOfficial]
[chkIgnoreGlobalAITriggers]
$X=EMPTY_SPACE_SIDES + 300 + EMPTY_SPACE_SIDES
$Y=getBottom(lblHeader) + EMPTY_SPACE_TOP
Text=Ignore Global AI Triggers

[chkOfficial]
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkIgnoreGlobalAITriggers) + VERTICAL_SPACING
Text=Official

[chkTruckCrate]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkOfficial) + VERTICAL_SPACING
Text=Crate From Destroyed Trucks

[chkTrainCrate]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkTruckCrate) + VERTICAL_SPACING
Text=Crate From Destroyed Trains

[chkMultiplayerOnly]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkTrainCrate) + VERTICAL_SPACING
Text=Multiplayer Only

[chkGrowingTiberium]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkMultiplayerOnly) + VERTICAL_SPACING
Text=Growing Tiberium

[chkGrowingVeins]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkGrowingTiberium) + VERTICAL_SPACING
Text=Growing Veins

[chkGrowingIce]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkGrowingVeins) + VERTICAL_SPACING
Text=Growing Ice

[chkTiberiumDeathToVisceroid]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkGrowingIce) + VERTICAL_SPACING
Text=Visceroid From Death In Tiberium

[chkFreeRadar]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkTiberiumDeathToVisceroid) + VERTICAL_SPACING
Text=Free Radar

[chkRequiredAddOn]
$X=getX(chkOfficial)
$X=getX(chkIgnoreGlobalAITriggers)
$Y=getBottom(chkFreeRadar) + VERTICAL_SPACING
Text=Enhanced Mode
$Enabled=1 - IS_RA2YR
Expand All @@ -172,6 +196,6 @@ $Enabled=1 - IS_RA2YR
[btnApply]
$Width=100
$X=(getWidth(BasicSectionConfigWindow) - getWidth(btnApply)) / 2
$Y=getBottom(chkIgnoreGlobalAITriggers) + EMPTY_SPACE_TOP
$Y=getBottom(chkSkipMapSelect) + EMPTY_SPACE_TOP
Text=Apply

4 changes: 2 additions & 2 deletions src/TSMapEditor/Config/UI/Windows/PlaceWaypointWindow.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[PlaceWaypointWindow]
$Width=215
$CC0=lblDescription:XNALabel
$Width=getRight(lblDescription) + EMPTY_SPACE_SIDES + 30
$CC1=tbWaypointNumber:EditorNumberTextBox
$CC2=lblWaypointColor:XNALabel
$CC3=ddWaypointColor:XNADropDown
Expand All @@ -11,7 +11,7 @@ HasCloseButton=yes
[lblDescription]
$X=EMPTY_SPACE_SIDES
$Y=EMPTY_SPACE_TOP
Text=Input waypoint number (0-99):
Text=Input waypoint number:

[tbWaypointNumber]
$X=EMPTY_SPACE_SIDES
Expand Down
1 change: 1 addition & 0 deletions src/TSMapEditor/Models/BasicSection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class BasicSection : INIDefineable
public string GameModes { get; set; }
public int HomeCell { get; set; } = 98;
public int AltHomeCell { get; set; } = 99;
public string Theme { get; set; }
public int InitTime { get; set; }
public bool Official { get; set; }
public bool EndOfGame { get; set; }
Expand Down
5 changes: 5 additions & 0 deletions src/TSMapEditor/Models/Themes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ public Theme Get(string name)
return List.Find(theme => theme.Name == name);
}

public Theme GetByININame(string iniName)
{
return List.Find(theme => theme.ININame == iniName);
}

private void Initialize(IniFileEx themeIni)
{
var themes = new List<Theme>();
Expand Down
39 changes: 37 additions & 2 deletions src/TSMapEditor/UI/Windows/BasicSectionConfigWindow.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Rampastring.XNAUI;
using Rampastring.XNAUI.XNAControls;
using System;
using System.Globalization;
using TSMapEditor.Models;
using TSMapEditor.UI.Controls;

Expand All @@ -22,6 +24,8 @@ public BasicSectionConfigWindow(WindowManager windowManager, Map map) : base(win
private EditorNumberTextBox tbCarryOverCap;
private EditorNumberTextBox tbPercent;
private EditorNumberTextBox tbInitialTime;
private EditorNumberTextBox tbHomeCell;
private EditorPopUpSelector selTheme;
private XNACheckBox chkEndOfGame;
private XNACheckBox chkOneTimeOnly;
private XNACheckBox chkSkipScore;
Expand All @@ -36,8 +40,9 @@ public BasicSectionConfigWindow(WindowManager windowManager, Map map) : base(win
private XNACheckBox chkGrowingIce;
private XNACheckBox chkTiberiumDeathToVisceroid;
private XNACheckBox chkFreeRadar;
private XNACheckBox chkRequiredAddOn;
private XNACheckBox chkRequiredAddOn;

private SelectThemeWindow selectThemeWindow;

public override void Initialize()
{
Expand All @@ -49,6 +54,11 @@ public override void Initialize()
tbCarryOverCap = FindChild<EditorNumberTextBox>(nameof(tbCarryOverCap));
tbPercent = FindChild<EditorNumberTextBox>(nameof(tbPercent));
tbInitialTime = FindChild<EditorNumberTextBox>(nameof(tbInitialTime));

tbHomeCell = FindChild<EditorNumberTextBox>(nameof(tbHomeCell));
tbHomeCell.MaximumTextLength = (Constants.MaxWaypoint - 1).ToString(CultureInfo.InvariantCulture).Length;

selTheme = FindChild<EditorPopUpSelector>(nameof(selTheme));
chkEndOfGame = FindChild<XNACheckBox>(nameof(chkEndOfGame));
chkOneTimeOnly = FindChild<XNACheckBox>(nameof(chkOneTimeOnly));
chkSkipScore = FindChild<XNACheckBox>(nameof(chkSkipScore));
Expand All @@ -63,7 +73,13 @@ public override void Initialize()
chkGrowingIce = FindChild<XNACheckBox>(nameof(chkGrowingIce));
chkTiberiumDeathToVisceroid = FindChild<XNACheckBox>(nameof(chkTiberiumDeathToVisceroid));
chkFreeRadar = FindChild<XNACheckBox>(nameof(chkFreeRadar));
chkRequiredAddOn = FindChild<XNACheckBox>(nameof(chkRequiredAddOn));
chkRequiredAddOn = FindChild<XNACheckBox>(nameof(chkRequiredAddOn));

selectThemeWindow = new SelectThemeWindow(WindowManager, map, true);
var themeDarkeningPanel = DarkeningPanel.InitializeAndAddToParentControlWithChild(WindowManager, Parent, selectThemeWindow);
themeDarkeningPanel.Hidden += ThemeDarkeningPanel_Hidden;

selTheme.LeftClick += SelTheme_LeftClick;

FindChild<EditorButton>("btnApply").LeftClick += BtnApply_LeftClick;
}
Expand All @@ -77,6 +93,11 @@ public void Open()
tbCarryOverCap.Value = map.Basic.CarryOverCap;
tbPercent.Value = map.Basic.Percent;
tbInitialTime.Value = map.Basic.InitTime;
tbHomeCell.Value = map.Basic.HomeCell;

selTheme.Tag = map.Rules.Themes.GetByININame(map.Basic.Theme);
selTheme.Text = selTheme.Tag != null ? selTheme.Tag.ToString() : Constants.NoneValue2;

chkEndOfGame.Checked = map.Basic.EndOfGame;
chkOneTimeOnly.Checked = map.Basic.OneTimeOnly;
chkSkipScore.Checked = map.Basic.SkipScore;
Expand All @@ -103,6 +124,8 @@ private void BtnApply_LeftClick(object sender, System.EventArgs e)
map.Basic.CarryOverCap = tbCarryOverCap.Value;
map.Basic.Percent = tbPercent.Value;
map.Basic.InitTime = tbInitialTime.Value;
map.Basic.HomeCell = tbHomeCell.Value;
map.Basic.Theme = selTheme.Tag != null ? ((Theme)selTheme.Tag).ININame : null;
map.Basic.EndOfGame = chkEndOfGame.Checked;
map.Basic.OneTimeOnly = chkOneTimeOnly.Checked;
map.Basic.SkipScore = chkSkipScore.Checked;
Expand All @@ -122,5 +145,17 @@ private void BtnApply_LeftClick(object sender, System.EventArgs e)
map.Basic.RequiredAddOn = chkRequiredAddOn.Checked ? 1 : 0;
}
}

private void ThemeDarkeningPanel_Hidden(object sender, EventArgs e)
{
selTheme.Tag = selectThemeWindow.SelectedObject;
selTheme.Text = selTheme.Tag != null ? selectThemeWindow.SelectedObject.ToString() : Constants.NoneValue2;
}

private void SelTheme_LeftClick(object sender, EventArgs e)
{
Theme theme = (Theme)selTheme.Tag;
selectThemeWindow.Open(theme);
}
}
}
4 changes: 4 additions & 0 deletions src/TSMapEditor/UI/Windows/PlaceWaypointWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public PlaceWaypointWindow(WindowManager windowManager, Map map, MutationManager
private readonly IMutationTarget mutationTarget;

private EditorNumberTextBox tbWaypointNumber;
private XNALabel lblDescription;
private XNADropDown ddWaypointColor;

private Point2D cellCoords;
Expand All @@ -36,6 +37,9 @@ public override void Initialize()
tbWaypointNumber = FindChild<EditorNumberTextBox>(nameof(tbWaypointNumber));
tbWaypointNumber.MaximumTextLength = (Constants.MaxWaypoint - 1).ToString(CultureInfo.InvariantCulture).Length;

lblDescription = FindChild<XNALabel>(nameof(lblDescription));
lblDescription.Text = $"Input waypoint number (0-{Constants.MaxWaypoint - 1}):";

FindChild<EditorButton>("btnPlace").LeftClick += BtnPlace_LeftClick;

// Init color dropdown options
Expand Down
9 changes: 8 additions & 1 deletion src/TSMapEditor/UI/Windows/SelectThemeWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ namespace TSMapEditor.UI.Windows
{
public class SelectThemeWindow : SelectObjectWindow<Theme>
{
public SelectThemeWindow(WindowManager windowManager, Map map) : base(windowManager)
public SelectThemeWindow(WindowManager windowManager, Map map, bool includeNone) : base(windowManager)
{
this.map = map;
this.includeNone = includeNone;
}

private readonly Map map;
private readonly bool includeNone;

public override void Initialize()
{
Expand All @@ -35,6 +37,11 @@ protected override void ListObjects()
{
lbObjectList.Clear();

if (includeNone)
{
lbObjectList.AddItem(new XNAListBoxItem() { Text = "None" });
}

foreach (var theme in map.Rules.Themes.List)
{
lbObjectList.AddItem(new XNAListBoxItem() { Text = theme.ToString(), Tag = theme });
Expand Down
2 changes: 1 addition & 1 deletion src/TSMapEditor/UI/Windows/TriggersWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ public override void Initialize()
var tutorialDarkeningPanel = DarkeningPanel.InitializeAndAddToParentControlWithChild(WindowManager, Parent, selectTutorialLineWindow);
tutorialDarkeningPanel.Hidden += TutorialDarkeningPanel_Hidden;

selectThemeWindow = new SelectThemeWindow(WindowManager, map);
selectThemeWindow = new SelectThemeWindow(WindowManager, map, false);
var themeDarkeningPanel = DarkeningPanel.InitializeAndAddToParentControlWithChild(WindowManager, Parent, selectThemeWindow);
themeDarkeningPanel.Hidden += ThemeDarkeningPanel_Hidden;

Expand Down
Loading