diff --git a/ChivalryServerLauncher.dpr b/ChivalryServerLauncher.dpr
index c9d7227..0f3dc2e 100644
--- a/ChivalryServerLauncher.dpr
+++ b/ChivalryServerLauncher.dpr
@@ -19,7 +19,6 @@ uses
{$R *.res}
-
var
MainForm: TMainForm;
diff --git a/ChivalryServerLauncher.dproj b/ChivalryServerLauncher.dproj
index 92a2677..938711f 100644
--- a/ChivalryServerLauncher.dproj
+++ b/ChivalryServerLauncher.dproj
@@ -41,11 +41,14 @@
true
- CompanyName=X²Software;FileDescription=Chivalry Server Launcher;FileVersion=0.1.0.0;InternalName=;LegalCopyright=Copyright (c) 2014 X²Software;LegalTrademarks=;OriginalFilename=ChivalryServerLauncher.exe;ProductName=Chivalry Server Launcher;ProductVersion=0.1
- 1
+ false
+ 0
+ false
+ false
+ true
true
+ CompanyName=X²Software;FileDescription=Chivalry Server Launcher;FileVersion=1.0.0.0;InternalName=;LegalCopyright=Copyright (c) 2014 X²Software;LegalTrademarks=;OriginalFilename=ChivalryServerLauncher.exe;ProductName=Chivalry Server Launcher;ProductVersion=1.0
1033
- 0
resources\icons\MainIcon.ico
None
fmx;IndySystem;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapServer;DataSnapProviderClient;DbxCommonDriver;dbxcds;DBXOracleDriver;CustomIPTransport;dsnap;fmxase;IndyCore;CloudService;FmxTeeUI;inetdbxpress;IPIndyImpl;bindcompfmx;rtl;dbrtl;DbxClientDriver;bindcomp;inetdb;xmlrtl;ibxpress;IndyProtocols;DBXMySQLDriver;soaprtl;bindengine;FMXTee;DBXInformixDriver;DBXFirebirdDriver;inet;fmxobj;DBXSybaseASADriver;fmxdae;dbexpress;DataSnapIndy10ServerTransport;$(DCC_UsePackage)
@@ -150,20 +153,6 @@
- ExpressCoreLibrary by Developer Express Inc.
- Express Cross Platform Library by Developer Express Inc.
- ExpressPageControl by Developer Express Inc.
- ExpressDataController Server Mode by Developer Express Inc.
- ExpressEditors Library by Developer Express Inc.
- ExpressWizardControl by Developer Express Inc.
- ExpressBars by Developer Express Inc.
- ExpressScheduler by Developer Express Inc.
- ExpressQuantumGrid by Developer Express Inc.
- ExpressPrinting System by Developer Express Inc.
- ExpressPrinting System ReportLink for TeeChart by Developer Express Inc.
- ExpressPivotGrid by Developer Express Inc.
- ExpressOrgChart by Developer Express Inc.
- ExpressPrinting System ReportLink for ExpressLayoutControl by Developer Express Inc.
dbExpress Data Source for ExpressDataController Server Mode by Developer Express Inc.
ADO Data Source for ExpressDataController Server Mode by Developer Express Inc.
ExpressEditors FieldLink by Developer Express Inc.
diff --git a/ChivalryServerLauncher.res b/ChivalryServerLauncher.res
index 2d30be7..cfc0286 100644
Binary files a/ChivalryServerLauncher.res and b/ChivalryServerLauncher.res differ
diff --git a/assets/Chivalry.MedievalWarfare.MapList.ini b/assets/Chivalry.MedievalWarfare.MapList.ini
deleted file mode 100644
index 099e7f6..0000000
--- a/assets/Chivalry.MedievalWarfare.MapList.ini
+++ /dev/null
@@ -1,101 +0,0 @@
-[Team Objective]
-AOCTO-Battlegrounds_v3_P=Battlegrounds
-AOCTO-Darkforest_p=Dark forest
-AOCTO-Hillside_P=Hillside
-AOCTO-Stoneshill_P=Stoneshill
-AOCTO-Citadel_p=Citadel
-AOCTO-Coldfront_p=Coldfront
-AOCTO-Outpost_p=Outpost
-
-[Capture the Flag]
-AOCCTF-Frigid_p=Frigid
-AOCCTF-Moor_p=Moor
-AOCCTF-Ruins_Large_P=Ruins Large
-AOCCTF-Ruins_P=Ruins
-
-[Duel]
-AOCDuel-Arena_Flat_p=Arena Flat
-AOCDuel-Arena_p=Arena
-AOCDuel-Bridge_p=Bridge
-AOCDuel-Cistern_p=Cistern
-AOCDuel-Courtyard_p=Courtyard
-AOCDuel-Dininghall_p=Dining hall
-AOCDuel-FrostPeak_p=Frost Peak
-AOCDuel-Mines_p=Mines
-AOCDuel-Moor_p=Moor
-AOCDuel-Shaft_p=Shaft
-AOCDuel-Shipyard_p=Shipyard
-AOCDuel-ThroneRoom_p=Throne Room
-AOCDuel-Tower_p=Tower
-
-[King of the Hill]
-AOCKOTH-Arena3_p=Arena
-AOCKOTH-Hillside_P=Hillside
-AOCKOTH-Moor_p=Moor
-AOCKOTH-Darkforest_Valley_p=Dark forest Valley
-
-[Last Team Standing]
-AOCLTS-Frigid_p=Frigid
-AOCLTS-ArgonsWall_p=Argons Wall
-AOCLTS-Arena3_p=Arena
-AOCLTS-Battlegrounds_Farm_p=Battlegrounds Farm
-AOCLTS-Battlegrounds_p=Battlegrounds
-AOCLTS-Darkforest_XL_p=Dark forest
-AOCLTS-Darkforest_Valley_p=Dark forest Valley
-AOCLTS-Hillside_P=Hillside
-AOCLTS-HillsidePyre_P=Hillside Pyre
-AOCLTS-Moor_p=Moor
-AOCLTS-Moor_Large_p=Moor Large
-AOCLTS-Ruins_P=Ruins
-AOCLTS-Ruins_Large_P=Ruins Large
-AOCLTS-StoneshillVillage_P=Stoneshill Village
-AOCLTS-ThroneRoom_P=Throne Room
-AOCLTS-Bridge_p=Bridge
-AOCLTS-Cistern_p=Cistern
-AOCLTS-Courtyard_p=Courtyard
-AOCLTS-Dininghall_p=Dining Hall
-AOCLTS-FrostPeak_p=Frostpeak
-AOCLTS-Mines_p=Mines
-AOCLTS-Shipyard_p=Shipyard
-
-[Free for All]
-AOCFFA-Arena3_p=Arena
-AOCFFA-Darkforest_Cistern_p=Dark forest Cistern
-AOCFFA-Darkforest_Valley_p=Dark forest Valley
-AOCFFA-HillsidePyre_P=Hillside Pyre
-AOCFFA-Hillside_P=Hillside
-AOCFFA-Moor_p=Moor
-AOCFFA-Ruins_P=Ruins
-AOCFFA-Tavern_p=Tavern
-AOCFFA-ThroneRoomXL_P=Throne Room XL
-AOCFFA-StoneshillVillage_P=Stoneshill Village
-AOCFFA-Bridge_p=Bridge
-AOCFFA-Cistern_p=Cistern
-AOCFFA-Courtyard_p=Courtyard
-AOCFFA-Dininghall_p=Dining Hall
-AOCFFA-FrostPeak_p=Frostpeak
-AOCFFA-Mines_p=Mines
-AOCFFA-Shipyard_p=Shipyard
-
-[Team Deathmatch]
-AOCTD-Frigid_p=Frigid
-AOCTD-ArgonsWall_p=Argons Wall
-AOCTD-Ruins_P=Ruins
-AOCTD-ThroneRoom_P=Throne Room
-AOCTD-StoneshillVillage_P=Stoneshill Village
-AOCTD-Moor_p=Moor
-AOCTD-Battlegrounds_Farm_p=Battlegrounds Farm
-AOCTD-Battlegrounds_p=Battlegrounds
-AOCTD-Hillside_P=Hillside
-AOCTD-HillsidePyre_P=Hillside Pyre
-AOCTD-Darkforest_XL_p=Dark forest XL
-AOCTD-Darkforest_Valley_p=Dark forest Valley
-AOCTD-Moor_Large_p=Moor Large
-AOCTD-Ruins_Large_P=Ruins Large
-AOCTD-Bridge_p=Bridge
-AOCTD-Cistern_p=Cistern
-AOCTD-Courtyard_p=Courtyard
-AOCTD-Dininghall_p=Dining Hall
-AOCTD-FrostPeak_p=Frostpeak
-AOCTD-Mines_p=Mines
-AOCTD-Shipyard_p=Shipyard
\ No newline at end of file
diff --git a/assets/Chivalry.MedievalWarfare.MapList.json b/assets/Chivalry.MedievalWarfare.MapList.json
new file mode 100644
index 0000000..e5f291a
--- /dev/null
+++ b/assets/Chivalry.MedievalWarfare.MapList.json
@@ -0,0 +1,484 @@
+[
+ {
+ "category": "Team Objective",
+ "maps":
+ [
+ {
+ "name": "AOCTO-Battlegrounds_v3_P",
+ "displayName": "Battlegrounds",
+ "preview": "CMW.Battlegrounds"
+ },
+ {
+ "name": "AOCTO-Darkforest_p",
+ "displayName": "Dark forest",
+ "preview": "CMW.Darkforest"
+ },
+ {
+ "name": "AOCTO-Hillside_P",
+ "displayName": "Hillside",
+ "preview": "CMW.Hillside"
+ },
+ {
+ "name": "AOCTO-Stoneshill_P",
+ "displayName": "Stoneshill",
+ "preview": "CMW.Stoneshill.Village"
+ },
+ {
+ "name": "AOCTO-Citadel_p",
+ "displayName": "Citadel",
+ "preview": "CMW.Citadel"
+ },
+ {
+ "name": "AOCTO-Coldfront_p",
+ "displayName": "Coldfront",
+ "preview": "CMW.Coldfront"
+ },
+ {
+ "name": "AOCTO-Outpost_p",
+ "displayName": "Outpost",
+ "preview": "CMW.Outpost"
+ }
+ ]
+ },
+ {
+ "category": "Capture the Flag",
+ "maps":
+ [
+ {
+ "name": "AOCCTF-Frigid_p",
+ "displayName": "Frigid",
+ "preview": "CMW.Frigid"
+ },
+ {
+ "name": "AOCCTF-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCCTF-Ruins_Large_P",
+ "displayName": "Ruins Large",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCCTF-Ruins_P",
+ "displayName": "Ruins",
+ "preview": "CMW.Ruins"
+ }
+ ]
+ },
+ {
+ "category": "Duel",
+ "maps":
+ [
+ {
+ "name": "AOCDuel-Arena_Flat_p",
+ "displayName": "Arena Flat",
+ "preview": "CMW.Arena"
+ },
+ {
+ "name": "AOCDuel-Arena_p",
+ "displayName": "Arena",
+ "preview": "CMW.Arena"
+ },
+ {
+ "name": "AOCDuel-Bridge_p",
+ "displayName": "Bridge",
+ "preview": "CMW.Bridge"
+ },
+ {
+ "name": "AOCDuel-Cistern_p",
+ "displayName": "Cistern",
+ "preview": "CMW.Cistern"
+ },
+ {
+ "name": "AOCDuel-Courtyard_p",
+ "displayName": "Courtyard",
+ "preview": "CMW.Courtyard"
+ },
+ {
+ "name": "AOCDuel-Dininghall_p",
+ "displayName": "Dining Hall",
+ "preview": "CMW.DiningHall"
+ },
+ {
+ "name": "AOCDuel-FrostPeak_p",
+ "displayName": "Frost Peak",
+ "preview": "CMW.FrostPeak"
+ },
+ {
+ "name": "AOCDuel-Mines_p",
+ "displayName": "Mines",
+ "preview": "CMW.Mines"
+ },
+ {
+ "name": "AOCDuel-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCDuel-Shaft_p",
+ "displayName": "Shaft",
+ "preview": "CMW.Shaft"
+ },
+ {
+ "name": "AOCDuel-Shipyard_p",
+ "displayName": "Shipyard",
+ "preview": "CMW.Shipyard"
+ },
+ {
+ "name": "AOCDuel-ThroneRoom_p",
+ "displayName": "Throne Room",
+ "preview": "CMW.ThroneRoom"
+ },
+ {
+ "name": "AOCDuel-Tower_p",
+ "displayName": "Tower",
+ "preview": "CMW.Tower"
+ }
+ ]
+ },
+ {
+ "category": "King of the Hill",
+ "maps":
+ [
+ {
+ "name": "AOCKOTH-Arena3_p",
+ "displayName": "Arena",
+ "preview": "CMW.Arena"
+ },
+ {
+ "name": "AOCKOTH-Hillside_P",
+ "displayName": "Hillside",
+ "preview": "CMW.Hillside"
+ },
+ {
+ "name": "AOCKOTH-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCKOTH-Darkforest_Valley_p",
+ "displayName": "Dark forest Valley",
+ "preview": "CMW.Darkforest.Valley"
+ }
+ ]
+ },
+ {
+ "category": "Last Team Standing",
+ "maps":
+ [
+ {
+ "name": "AOCLTS-Frigid_p",
+ "displayName": "Frigid",
+ "preview": "CMW.Frigid"
+ },
+ {
+ "name": "AOCLTS-ArgonsWall_p",
+ "displayName": "Argons Wall",
+ "preview": "CMW.ArgonsWall"
+ },
+ {
+ "name": "AOCLTS-Arena3_p",
+ "displayName": "Arena",
+ "preview": "CMW.Arena"
+ },
+ {
+ "name": "AOCLTS-Battlegrounds_Farm_p",
+ "displayName": "Battlegrounds Farm",
+ "preview": "CMW.Battlegrounds.Farm"
+ },
+ {
+ "name": "AOCLTS-Battlegrounds_p",
+ "displayName": "Battlegrounds",
+ "preview": "CMW.Battlegrounds"
+ },
+ {
+ "name": "AOCLTS-Darkforest_XL_p",
+ "displayName": "Dark forest",
+ "preview": "CMW.Darkforest.XL"
+ },
+ {
+ "name": "AOCLTS-Darkforest_Valley_p",
+ "displayName": "Dark forest Valley",
+ "preview": "CMW.Darkforest.Valley"
+ },
+ {
+ "name": "AOCLTS-Hillside_P",
+ "displayName": "Hillside",
+ "preview": "CMW.Hillside"
+ },
+ {
+ "name": "AOCLTS-HillsidePyre_P",
+ "displayName": "Hillside Pyre",
+ "preview": "CMW.Hillside.Pyre"
+ },
+ {
+ "name": "AOCLTS-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCLTS-Moor_Large_p",
+ "displayName": "Moor Large",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCLTS-Ruins_P",
+ "displayName": "Ruins",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCLTS-Ruins_Large_P",
+ "displayName": "Ruins Large",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCLTS-StoneshillVillage_P",
+ "displayName": "Stoneshill Village",
+ "preview": "CMW.Stoneshill.Village"
+ },
+ {
+ "name": "AOCLTS-ThroneRoom_P",
+ "displayName": "Throne Room",
+ "preview": "CMW.ThroneRoom"
+ },
+ {
+ "name": "AOCLTS-Bridge_p",
+ "displayName": "Bridge",
+ "preview": "CMW.Bridge"
+ },
+ {
+ "name": "AOCLTS-Cistern_p",
+ "displayName": "Cistern",
+ "preview": "CMW.Cistern"
+ },
+ {
+ "name": "AOCLTS-Courtyard_p",
+ "displayName": "Courtyard",
+ "preview": "CMW.Courtyard"
+ },
+ {
+ "name": "AOCLTS-Dininghall_p",
+ "displayName": "Dining Hall",
+ "preview": "CMW.DiningHall"
+ },
+ {
+ "name": "AOCLTS-FrostPeak_p",
+ "displayName": "Frostpeak",
+ "preview": "CMW.FrostPeak"
+ },
+ {
+ "name": "AOCLTS-Mines_p",
+ "displayName": "Mines",
+ "preview": "CMW.Mines"
+ },
+ {
+ "name": "AOCLTS-Shipyard_p",
+ "displayName": "Shipyard",
+ "preview": "CMW.Shipyard"
+ }
+ ]
+ },
+ {
+ "category": "Free For All",
+ "maps":
+ [
+ {
+ "name": "AOCFFA-Arena3_p",
+ "displayName": "Arena",
+ "preview": "CMW.Arena"
+ },
+ {
+ "name": "AOCFFA-Darkforest_Cistern_p",
+ "displayName": "Dark forest Cistern",
+ "preview": "CMW.Darkforest.Cistern"
+ },
+ {
+ "name": "AOCFFA-Darkforest_Valley_p",
+ "displayName": "Dark forest Valley",
+ "preview": "CMW.Darkforest.Valley"
+ },
+ {
+ "name": "AOCFFA-HillsidePyre_P",
+ "displayName": "Hillside Pyre",
+ "preview": "CMW.Hillside.Pyre"
+ },
+ {
+ "name": "AOCFFA-Hillside_P",
+ "displayName": "Hillside",
+ "preview": "CMW.Hillside"
+ },
+ {
+ "name": "AOCFFA-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCFFA-Ruins_P",
+ "displayName": "Ruins",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCFFA-Tavern_p",
+ "displayName": "Tavern",
+ "preview": "CMW.Tavern"
+ },
+ {
+ "name": "AOCFFA-ThroneRoomXL_P",
+ "displayName": "Throne Room XL",
+ "preview": "CMW.ThroneRoom"
+ },
+ {
+ "name": "AOCFFA-StoneshillVillage_P",
+ "displayName": "Stoneshill Village",
+ "preview": "CMW.Stoneshill.Village"
+ },
+ {
+ "name": "AOCFFA-Bridge_p",
+ "displayName": "Bridge",
+ "preview": "CMW.Bridge"
+ },
+ {
+ "name": "AOCFFA-Cistern_p",
+ "displayName": "Cistern",
+ "preview": "CMW.Cistern"
+ },
+ {
+ "name": "AOCFFA-Courtyard_p",
+ "displayName": "Courtyard",
+ "preview": "CMW.Courtyard"
+ },
+ {
+ "name": "AOCFFA-Dininghall_p",
+ "displayName": "Dining Hall",
+ "preview": "CMW.DiningHall"
+ },
+ {
+ "name": "AOCFFA-FrostPeak_p",
+ "displayName": "Frostpeak",
+ "preview": "CMW.FrostPeak"
+ },
+ {
+ "name": "AOCFFA-Mines_p",
+ "displayName": "Mines",
+ "preview": "CMW.Mines"
+ },
+ {
+ "name": "AOCFFA-Shipyard_p",
+ "displayName": "Shipyard",
+ "preview": "CMW.Shipyard"
+ }
+ ]
+ },
+ {
+ "category": "Team Deathmatch",
+ "maps":
+ [
+ {
+ "name": "AOCTD-Frigid_p",
+ "displayName": "Frigid",
+ "preview": "CMW.Frigid"
+ },
+ {
+ "name": "AOCTD-ArgonsWall_p",
+ "displayName": "Argons Wall",
+ "preview": "CMW.ArgonsWall"
+ },
+ {
+ "name": "AOCTD-Ruins_P",
+ "displayName": "Ruins",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCTD-ThroneRoom_P",
+ "displayName": "Throne Room",
+ "preview": "CMW.ThroneRoom"
+ },
+ {
+ "name": "AOCTD-StoneshillVillage_P",
+ "displayName": "Stoneshill Village",
+ "preview": "CMW.Stoneshill.Village"
+ },
+ {
+ "name": "AOCTD-Moor_p",
+ "displayName": "Moor",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCTD-Battlegrounds_Farm_p",
+ "displayName": "Battlegrounds Farm",
+ "preview": "CMW.Battlegrounds.Farm"
+ },
+ {
+ "name": "AOCTD-Battlegrounds_p",
+ "displayName": "Battlegrounds",
+ "preview": "CMW.Battlegrounds"
+ },
+ {
+ "name": "AOCTD-Hillside_P",
+ "displayName": "Hillside",
+ "preview": "CMW.Hillside"
+ },
+ {
+ "name": "AOCTD-HillsidePyre_P",
+ "displayName": "Hillside Pyre",
+ "preview": "CMW.Hillside.Pyre"
+ },
+ {
+ "name": "AOCTD-Darkforest_XL_p",
+ "displayName": "Dark forest XL",
+ "preview": "CMW.Darkforest.XL"
+ },
+ {
+ "name": "AOCTD-Darkforest_Valley_p",
+ "displayName": "Dark forest Valley",
+ "preview": "CMW.Darkforest.Valley"
+ },
+ {
+ "name": "AOCTD-Moor_Large_p",
+ "displayName": "Moor Large",
+ "preview": "CMW.Moor"
+ },
+ {
+ "name": "AOCTD-Ruins_Large_P",
+ "displayName": "Ruins Large",
+ "preview": "CMW.Ruins"
+ },
+ {
+ "name": "AOCTD-Bridge_p",
+ "displayName": "Bridge",
+ "preview": "CMW.Bridge"
+ },
+ {
+ "name": "AOCTD-Cistern_p",
+ "displayName": "Cistern",
+ "preview": "CMW.Cistern"
+ },
+ {
+ "name": "AOCTD-Courtyard_p",
+ "displayName": "Courtyard",
+ "preview": "CMW.Courtyard"
+ },
+ {
+ "name": "AOCTD-Dininghall_p",
+ "displayName": "Dining Hall",
+ "preview": "CMW.Dininghall"
+ },
+ {
+ "name": "AOCTD-FrostPeak_p",
+ "displayName": "Frostpeak",
+ "preview": "CMW.FrostPeak"
+ },
+ {
+ "name": "AOCTD-Mines_p",
+ "displayName": "Mines",
+ "preview": "CMW.Mines"
+ },
+ {
+ "name": "AOCTD-Shipyard_p",
+ "displayName": "Shipyard",
+ "preview": "CMW.Shipyard"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/assets/maps/AOCCTF-Ruins_P.jpg b/assets/maps/AOCCTF-Ruins_P.jpg
deleted file mode 100644
index 39865ab..0000000
Binary files a/assets/maps/AOCCTF-Ruins_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCDuel-Arena_p.jpg b/assets/maps/AOCDuel-Arena_p.jpg
deleted file mode 100644
index 2981a0c..0000000
Binary files a/assets/maps/AOCDuel-Arena_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Arena3_p.jpg b/assets/maps/AOCFFA-Arena3_p.jpg
deleted file mode 100644
index 2981a0c..0000000
Binary files a/assets/maps/AOCFFA-Arena3_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Bridge_p.jpg b/assets/maps/AOCFFA-Bridge_p.jpg
deleted file mode 100644
index 9183e19..0000000
Binary files a/assets/maps/AOCFFA-Bridge_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Cistern_p.jpg b/assets/maps/AOCFFA-Cistern_p.jpg
deleted file mode 100644
index f33fd9a..0000000
Binary files a/assets/maps/AOCFFA-Cistern_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Courtyard_p.jpg b/assets/maps/AOCFFA-Courtyard_p.jpg
deleted file mode 100644
index 6fc606b..0000000
Binary files a/assets/maps/AOCFFA-Courtyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Dininghall_p.jpg b/assets/maps/AOCFFA-Dininghall_p.jpg
deleted file mode 100644
index 08ff463..0000000
Binary files a/assets/maps/AOCFFA-Dininghall_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-FrostPeak_p.jpg b/assets/maps/AOCFFA-FrostPeak_p.jpg
deleted file mode 100644
index 3e3c4e6..0000000
Binary files a/assets/maps/AOCFFA-FrostPeak_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Mines_p.jpg b/assets/maps/AOCFFA-Mines_p.jpg
deleted file mode 100644
index 6cacc86..0000000
Binary files a/assets/maps/AOCFFA-Mines_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Moor_p.jpg b/assets/maps/AOCFFA-Moor_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCFFA-Moor_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Ruins_P.jpg b/assets/maps/AOCFFA-Ruins_P.jpg
deleted file mode 100644
index 39865ab..0000000
Binary files a/assets/maps/AOCFFA-Ruins_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-Shipyard_p.jpg b/assets/maps/AOCFFA-Shipyard_p.jpg
deleted file mode 100644
index c0693e8..0000000
Binary files a/assets/maps/AOCFFA-Shipyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCFFA-ThroneRoomXL_P.jpg b/assets/maps/AOCFFA-ThroneRoomXL_P.jpg
deleted file mode 100644
index 7778712..0000000
Binary files a/assets/maps/AOCFFA-ThroneRoomXL_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCKOTH-Arena3_p.jpg b/assets/maps/AOCKOTH-Arena3_p.jpg
deleted file mode 100644
index 2981a0c..0000000
Binary files a/assets/maps/AOCKOTH-Arena3_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCKOTH-Darkforest_Valley_p.jpg b/assets/maps/AOCKOTH-Darkforest_Valley_p.jpg
deleted file mode 100644
index 495e9ff..0000000
Binary files a/assets/maps/AOCKOTH-Darkforest_Valley_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCKOTH-Hillside_P.jpg b/assets/maps/AOCKOTH-Hillside_P.jpg
deleted file mode 100644
index 7f5f557..0000000
Binary files a/assets/maps/AOCKOTH-Hillside_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCKOTH-Moor_p.jpg b/assets/maps/AOCKOTH-Moor_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCKOTH-Moor_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Arena3_p.jpg b/assets/maps/AOCLTS-Arena3_p.jpg
deleted file mode 100644
index 2981a0c..0000000
Binary files a/assets/maps/AOCLTS-Arena3_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Bridge_p.jpg b/assets/maps/AOCLTS-Bridge_p.jpg
deleted file mode 100644
index 9183e19..0000000
Binary files a/assets/maps/AOCLTS-Bridge_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Cistern_p.jpg b/assets/maps/AOCLTS-Cistern_p.jpg
deleted file mode 100644
index f33fd9a..0000000
Binary files a/assets/maps/AOCLTS-Cistern_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Courtyard_p.jpg b/assets/maps/AOCLTS-Courtyard_p.jpg
deleted file mode 100644
index 6fc606b..0000000
Binary files a/assets/maps/AOCLTS-Courtyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Darkforest_Valley_p.jpg b/assets/maps/AOCLTS-Darkforest_Valley_p.jpg
deleted file mode 100644
index 495e9ff..0000000
Binary files a/assets/maps/AOCLTS-Darkforest_Valley_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Dininghall_p.jpg b/assets/maps/AOCLTS-Dininghall_p.jpg
deleted file mode 100644
index 08ff463..0000000
Binary files a/assets/maps/AOCLTS-Dininghall_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Frigid_p.jpg b/assets/maps/AOCLTS-Frigid_p.jpg
deleted file mode 100644
index 6188420..0000000
Binary files a/assets/maps/AOCLTS-Frigid_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-FrostPeak_p.jpg b/assets/maps/AOCLTS-FrostPeak_p.jpg
deleted file mode 100644
index 3e3c4e6..0000000
Binary files a/assets/maps/AOCLTS-FrostPeak_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-HillsidePyre_P.jpg b/assets/maps/AOCLTS-HillsidePyre_P.jpg
deleted file mode 100644
index 7f5f557..0000000
Binary files a/assets/maps/AOCLTS-HillsidePyre_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Hillside_P.jpg b/assets/maps/AOCLTS-Hillside_P.jpg
deleted file mode 100644
index 36b1fcd..0000000
Binary files a/assets/maps/AOCLTS-Hillside_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Mines_p.jpg b/assets/maps/AOCLTS-Mines_p.jpg
deleted file mode 100644
index 6cacc86..0000000
Binary files a/assets/maps/AOCLTS-Mines_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Moor_Large_p.jpg b/assets/maps/AOCLTS-Moor_Large_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCLTS-Moor_Large_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Moor_p.jpg b/assets/maps/AOCLTS-Moor_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCLTS-Moor_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Ruins_Large_P.jpg b/assets/maps/AOCLTS-Ruins_Large_P.jpg
deleted file mode 100644
index 39865ab..0000000
Binary files a/assets/maps/AOCLTS-Ruins_Large_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Ruins_P.jpg b/assets/maps/AOCLTS-Ruins_P.jpg
deleted file mode 100644
index 39865ab..0000000
Binary files a/assets/maps/AOCLTS-Ruins_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-Shipyard_p.jpg b/assets/maps/AOCLTS-Shipyard_p.jpg
deleted file mode 100644
index c0693e8..0000000
Binary files a/assets/maps/AOCLTS-Shipyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-StoneshillVillage_P.jpg b/assets/maps/AOCLTS-StoneshillVillage_P.jpg
deleted file mode 100644
index 66c9af3..0000000
Binary files a/assets/maps/AOCLTS-StoneshillVillage_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCLTS-ThroneRoom_P.jpg b/assets/maps/AOCLTS-ThroneRoom_P.jpg
deleted file mode 100644
index 7778712..0000000
Binary files a/assets/maps/AOCLTS-ThroneRoom_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-ArgonsWall_p.jpg b/assets/maps/AOCTD-ArgonsWall_p.jpg
deleted file mode 100644
index e419ed1..0000000
Binary files a/assets/maps/AOCTD-ArgonsWall_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Battlegrounds_Farm_p.jpg b/assets/maps/AOCTD-Battlegrounds_Farm_p.jpg
deleted file mode 100644
index 06534ec..0000000
Binary files a/assets/maps/AOCTD-Battlegrounds_Farm_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Battlegrounds_p.jpg b/assets/maps/AOCTD-Battlegrounds_p.jpg
deleted file mode 100644
index 7231226..0000000
Binary files a/assets/maps/AOCTD-Battlegrounds_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Bridge_p.jpg b/assets/maps/AOCTD-Bridge_p.jpg
deleted file mode 100644
index 9183e19..0000000
Binary files a/assets/maps/AOCTD-Bridge_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Cistern_p.jpg b/assets/maps/AOCTD-Cistern_p.jpg
deleted file mode 100644
index f33fd9a..0000000
Binary files a/assets/maps/AOCTD-Cistern_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Courtyard_p.jpg b/assets/maps/AOCTD-Courtyard_p.jpg
deleted file mode 100644
index 6fc606b..0000000
Binary files a/assets/maps/AOCTD-Courtyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Darkforest_Valley_p.jpg b/assets/maps/AOCTD-Darkforest_Valley_p.jpg
deleted file mode 100644
index 495e9ff..0000000
Binary files a/assets/maps/AOCTD-Darkforest_Valley_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Darkforest_XL_p.jpg b/assets/maps/AOCTD-Darkforest_XL_p.jpg
deleted file mode 100644
index e155320..0000000
Binary files a/assets/maps/AOCTD-Darkforest_XL_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Dininghall_p.jpg b/assets/maps/AOCTD-Dininghall_p.jpg
deleted file mode 100644
index 08ff463..0000000
Binary files a/assets/maps/AOCTD-Dininghall_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Frigid_p.jpg b/assets/maps/AOCTD-Frigid_p.jpg
deleted file mode 100644
index 6188420..0000000
Binary files a/assets/maps/AOCTD-Frigid_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-FrostPeak_p.jpg b/assets/maps/AOCTD-FrostPeak_p.jpg
deleted file mode 100644
index 3e3c4e6..0000000
Binary files a/assets/maps/AOCTD-FrostPeak_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-HillsidePyre_P.jpg b/assets/maps/AOCTD-HillsidePyre_P.jpg
deleted file mode 100644
index 7f5f557..0000000
Binary files a/assets/maps/AOCTD-HillsidePyre_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Hillside_P.jpg b/assets/maps/AOCTD-Hillside_P.jpg
deleted file mode 100644
index 36b1fcd..0000000
Binary files a/assets/maps/AOCTD-Hillside_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Mines_p.jpg b/assets/maps/AOCTD-Mines_p.jpg
deleted file mode 100644
index 6cacc86..0000000
Binary files a/assets/maps/AOCTD-Mines_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Moor_Large_p.jpg b/assets/maps/AOCTD-Moor_Large_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCTD-Moor_Large_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Moor_p.jpg b/assets/maps/AOCTD-Moor_p.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCTD-Moor_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Ruins_Large_P.jpg b/assets/maps/AOCTD-Ruins_Large_P.jpg
deleted file mode 100644
index 86b8d13..0000000
Binary files a/assets/maps/AOCTD-Ruins_Large_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Ruins_P.jpg b/assets/maps/AOCTD-Ruins_P.jpg
deleted file mode 100644
index 39865ab..0000000
Binary files a/assets/maps/AOCTD-Ruins_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-Shipyard_p.jpg b/assets/maps/AOCTD-Shipyard_p.jpg
deleted file mode 100644
index c0693e8..0000000
Binary files a/assets/maps/AOCTD-Shipyard_p.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-StoneshillVillage_P.jpg b/assets/maps/AOCTD-StoneshillVillage_P.jpg
deleted file mode 100644
index 66c9af3..0000000
Binary files a/assets/maps/AOCTD-StoneshillVillage_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTD-ThroneRoom_P.jpg b/assets/maps/AOCTD-ThroneRoom_P.jpg
deleted file mode 100644
index 7778712..0000000
Binary files a/assets/maps/AOCTD-ThroneRoom_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTO-Battlegrounds_v3_P.jpg b/assets/maps/AOCTO-Battlegrounds_v3_P.jpg
deleted file mode 100644
index 06534ec..0000000
Binary files a/assets/maps/AOCTO-Battlegrounds_v3_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTO-Hillside_P.jpg b/assets/maps/AOCTO-Hillside_P.jpg
deleted file mode 100644
index 7f5f557..0000000
Binary files a/assets/maps/AOCTO-Hillside_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCTO-Stoneshill_P.jpg b/assets/maps/AOCTO-Stoneshill_P.jpg
deleted file mode 100644
index 66c9af3..0000000
Binary files a/assets/maps/AOCTO-Stoneshill_P.jpg and /dev/null differ
diff --git a/assets/maps/AOCDuel-Arena_Flat_p.jpg b/assets/maps/CMW.Arena.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Arena_Flat_p.jpg
rename to assets/maps/CMW.Arena.jpg
diff --git a/assets/maps/AOCLTS-ArgonsWall_p.jpg b/assets/maps/CMW.ArgonsWall.jpg
similarity index 100%
rename from assets/maps/AOCLTS-ArgonsWall_p.jpg
rename to assets/maps/CMW.ArgonsWall.jpg
diff --git a/assets/maps/AOCLTS-Battlegrounds_Farm_p.jpg b/assets/maps/CMW.Battlegrounds.Farm.jpg
similarity index 100%
rename from assets/maps/AOCLTS-Battlegrounds_Farm_p.jpg
rename to assets/maps/CMW.Battlegrounds.Farm.jpg
diff --git a/assets/maps/AOCLTS-Battlegrounds_p.jpg b/assets/maps/CMW.Battlegrounds.jpg
similarity index 100%
rename from assets/maps/AOCLTS-Battlegrounds_p.jpg
rename to assets/maps/CMW.Battlegrounds.jpg
diff --git a/assets/maps/AOCDuel-Bridge_p.jpg b/assets/maps/CMW.Bridge.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Bridge_p.jpg
rename to assets/maps/CMW.Bridge.jpg
diff --git a/assets/maps/AOCDuel-Cistern_p.jpg b/assets/maps/CMW.Cistern.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Cistern_p.jpg
rename to assets/maps/CMW.Cistern.jpg
diff --git a/assets/maps/AOCTO-Citadel_p.jpg b/assets/maps/CMW.Citadel.jpg
similarity index 100%
rename from assets/maps/AOCTO-Citadel_p.jpg
rename to assets/maps/CMW.Citadel.jpg
diff --git a/assets/maps/AOCDuel-Courtyard_p.jpg b/assets/maps/CMW.Courtyard.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Courtyard_p.jpg
rename to assets/maps/CMW.Courtyard.jpg
diff --git a/assets/maps/AOCFFA-Darkforest_Cistern_p.jpg b/assets/maps/CMW.Darkforest.Cistern.jpg
similarity index 100%
rename from assets/maps/AOCFFA-Darkforest_Cistern_p.jpg
rename to assets/maps/CMW.Darkforest.Cistern.jpg
diff --git a/assets/maps/AOCFFA-Darkforest_Valley_p.jpg b/assets/maps/CMW.Darkforest.Valley.jpg
similarity index 100%
rename from assets/maps/AOCFFA-Darkforest_Valley_p.jpg
rename to assets/maps/CMW.Darkforest.Valley.jpg
diff --git a/assets/maps/AOCLTS-Darkforest_XL_p.jpg b/assets/maps/CMW.Darkforest.XL.jpg
similarity index 100%
rename from assets/maps/AOCLTS-Darkforest_XL_p.jpg
rename to assets/maps/CMW.Darkforest.XL.jpg
diff --git a/assets/maps/AOCTO-Darkforest_p.jpg b/assets/maps/CMW.Darkforest.jpg
similarity index 100%
rename from assets/maps/AOCTO-Darkforest_p.jpg
rename to assets/maps/CMW.Darkforest.jpg
diff --git a/assets/maps/AOCDuel-Dininghall_p.jpg b/assets/maps/CMW.DiningHall.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Dininghall_p.jpg
rename to assets/maps/CMW.DiningHall.jpg
diff --git a/assets/maps/AOCCTF-Frigid_p.jpg b/assets/maps/CMW.Frigid.jpg
similarity index 100%
rename from assets/maps/AOCCTF-Frigid_p.jpg
rename to assets/maps/CMW.Frigid.jpg
diff --git a/assets/maps/AOCDuel-FrostPeak_p.jpg b/assets/maps/CMW.FrostPeak.jpg
similarity index 100%
rename from assets/maps/AOCDuel-FrostPeak_p.jpg
rename to assets/maps/CMW.FrostPeak.jpg
diff --git a/assets/maps/AOCFFA-HillsidePyre_P.jpg b/assets/maps/CMW.Hillside.Pyre.jpg
similarity index 100%
rename from assets/maps/AOCFFA-HillsidePyre_P.jpg
rename to assets/maps/CMW.Hillside.Pyre.jpg
diff --git a/assets/maps/AOCFFA-Hillside_P.jpg b/assets/maps/CMW.Hillside.jpg
similarity index 100%
rename from assets/maps/AOCFFA-Hillside_P.jpg
rename to assets/maps/CMW.Hillside.jpg
diff --git a/assets/maps/AOCDuel-Mines_p.jpg b/assets/maps/CMW.Mines.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Mines_p.jpg
rename to assets/maps/CMW.Mines.jpg
diff --git a/assets/maps/AOCCTF-Moor_p.jpg b/assets/maps/CMW.Moor.jpg
similarity index 100%
rename from assets/maps/AOCCTF-Moor_p.jpg
rename to assets/maps/CMW.Moor.jpg
diff --git a/assets/maps/AOCCTF-Ruins_Large_P.jpg b/assets/maps/CMW.Ruins.jpg
similarity index 100%
rename from assets/maps/AOCCTF-Ruins_Large_P.jpg
rename to assets/maps/CMW.Ruins.jpg
diff --git a/assets/maps/AOCDuel-Shaft_p.jpg b/assets/maps/CMW.Shaft.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Shaft_p.jpg
rename to assets/maps/CMW.Shaft.jpg
diff --git a/assets/maps/AOCDuel-Shipyard_p.jpg b/assets/maps/CMW.Shipyard.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Shipyard_p.jpg
rename to assets/maps/CMW.Shipyard.jpg
diff --git a/assets/maps/AOCFFA-StoneshillVillage_P.jpg b/assets/maps/CMW.Stoneshill.Village.jpg
similarity index 100%
rename from assets/maps/AOCFFA-StoneshillVillage_P.jpg
rename to assets/maps/CMW.Stoneshill.Village.jpg
diff --git a/assets/maps/AOCDuel-ThroneRoom_p.jpg b/assets/maps/CMW.ThroneRoom.jpg
similarity index 100%
rename from assets/maps/AOCDuel-ThroneRoom_p.jpg
rename to assets/maps/CMW.ThroneRoom.jpg
diff --git a/assets/maps/AOCDuel-Tower_p.jpg b/assets/maps/CMW.Tower.jpg
similarity index 100%
rename from assets/maps/AOCDuel-Tower_p.jpg
rename to assets/maps/CMW.Tower.jpg
diff --git a/setup/ChivalryServerLauncher.iss b/setup/ChivalryServerLauncher.iss
new file mode 100644
index 0000000..c3fd6ab
--- /dev/null
+++ b/setup/ChivalryServerLauncher.iss
@@ -0,0 +1,41 @@
+#define AppName "Chivalry Server Launcher"
+#define AppExeName "ChivalryServerLauncher.exe"
+#define AppVersion GetFileVersion("..\bin\win32\" + AppExeName)
+#define AppPublisher "X²Software"
+#define AppURL "http://wiki.x2software.net/chivalryserverlauncher"
+
+[Setup]
+AppId={{6481B635-328D-4EF3-B841-99EB695A4174}
+AppName={#AppName}
+AppVersion={#AppVersion}
+AppPublisher={#AppPublisher}
+AppPublisherURL={#AppURL}
+AppSupportURL={#AppURL}
+AppUpdatesURL={#AppURL}
+DefaultDirName={pf}\{#AppName}
+DefaultGroupName={#AppName}
+AllowNoIcons=yes
+;LicenseFile=..\license.txt
+OutputDir=output
+OutputBaseFilename=ChivalryServerLauncherSetup
+Compression=lzma
+SolidCompression=yes
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Tasks]
+Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
+
+[Files]
+Source: "..\bin\win32\{#AppExeName}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\win64\{#AppExeName}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\assets\*"; DestDir: "{app}\assets\"; Flags: ignoreversion recursesubdirs createallsubdirs
+
+[Icons]
+Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"
+Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desktopicon
+
+[Run]
+Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#AppName}}"; Flags: nowait postinstall skipifsilent
+
diff --git a/source/Resources.pas b/source/Resources.pas
index b861966..bec95fa 100644
--- a/source/Resources.pas
+++ b/source/Resources.pas
@@ -3,7 +3,7 @@ unit Resources;
interface
const
AssetsPath = 'assets\';
- AssetChivalryMedievalWarfareMapListFileName = 'Chivalry.MedievalWarfare.MapList.ini';
+ AssetChivalryMedievalWarfareMapListFileName = 'Chivalry.MedievalWarfare.MapList.json';
AssetMapPreviewPath = 'maps\';
AssetMapPreviewExtension = '.jpg';
diff --git a/source/model/Game.Chivalry.MedievalWarfare.pas b/source/model/Game.Chivalry.MedievalWarfare.pas
index 6d7c639..b88d19e 100644
--- a/source/model/Game.Chivalry.MedievalWarfare.pas
+++ b/source/model/Game.Chivalry.MedievalWarfare.pas
@@ -25,11 +25,13 @@ type
implementation
uses
System.Classes,
- System.IniFiles,
+ System.IOUtils,
System.SysUtils,
System.Win.Registry,
Winapi.Windows,
+ superobject,
+
Resources,
Game.Registry;
@@ -84,43 +86,42 @@ end;
procedure TChivalryMedievalWarfareGame.LoadPredefinedMapList(AList: TList);
var
mapListFileName: string;
- mapList: TMemIniFile;
- categories: TStringList;
+ mapList: ISuperObject;
+ category: ISuperObject;
categoryName: string;
- maps: TStringList;
- mapIndex: Integer;
+ maps: ISuperObject;
+ map: ISuperObject;
+ mapName: string;
+ displayName: string;
+ previewName: string;
begin
mapListFileName := Resources.GetAssetPath(Resources.AssetChivalryMedievalWarfareMapListFileName);
if not FileExists(mapListFileName) then
exit;
- mapList := TMemIniFile.Create(mapListFileName);
- try
- categories := nil;
- maps := nil;
- try
- categories := TStringList.Create;
- maps := TStringList.Create;
+ mapList := SO(TFile.ReadAllText(mapListFileName));
+ if not Assigned(mapList) then
+ exit;
- mapList.ReadSections(categories);
-
- for categoryName in categories do
+ for category in mapList do
+ begin
+ categoryName := Trim(category.S['category']);
+ if Length(categoryName) > 0 then
+ begin
+ maps := category.O['maps'];
+ if Assigned(maps) then
begin
- maps.Clear;
- mapList.ReadSectionValues(categoryName, maps);
+ for map in maps do
+ begin
+ mapName := Trim(map.S['name']);
+ displayName := Trim(map.S['displayName']);
+ previewName := Trim(map.S['preview']);
- for mapIndex := 0 to Pred(maps.Count) do
- AList.Add(TGameMap.Create(Trim(maps.Names[mapIndex]),
- Trim(maps.ValueFromIndex[mapIndex]),
- Trim(categoryName)));
+ AList.Add(TGameMap.Create(mapName, displayname, categoryName, previewName));
+ end;
end;
- finally
- FreeAndNil(maps);
- FreeAndNil(categories);
end;
- finally
- FreeAndNil(mapList);
end;
end;
diff --git a/source/model/Game.Intf.pas b/source/model/Game.Intf.pas
index fbbc401..ff36d81 100644
--- a/source/model/Game.Intf.pas
+++ b/source/model/Game.Intf.pas
@@ -53,15 +53,21 @@ type
FCategory: string;
FName: string;
FDisplayName: string;
+ FPreviewName: string;
+ function GetPreviewName: string;
protected
function GetDisplayName: string; virtual;
+
+ property ActualDisplayName: string read FDisplayName;
+ property ActualPreviewName: string read FPreviewName;
public
- constructor Create(const AName: string; const ADisplayName, ACategory: string); overload;
+ constructor Create(const AName: string; const ADisplayName, ACategory: string; const APreviewName: string = ''); overload;
constructor Create(AClone: TGameMap); overload;
property Category: string read FCategory;
property Name: string read FName;
property DisplayName: string read GetDisplayName;
+ property PreviewName: string read GetPreviewName;
end;
@@ -88,30 +94,41 @@ type
implementation
-uses
- System.StrUtils;
{ TGameMap }
-constructor TGameMap.Create(const AName, ADisplayName, ACategory: string);
+constructor TGameMap.Create(const AName, ADisplayName, ACategory, APreviewName: string);
begin
inherited Create;
FName := AName;
- FDisplayName := IfThen(Length(ADisplayName) > 0, ADisplayName, AName);
+ FDisplayName := ADisplayName;
FCategory := ACategory;
+ FPreviewName := APreviewName
end;
constructor TGameMap.Create(AClone: TGameMap);
begin
- Create(AClone.Name, AClone.DisplayName, AClone.Category);
+ Create(AClone.Name, AClone.ActualDisplayName, AClone.Category, AClone.ActualPreviewName);
end;
function TGameMap.GetDisplayName: string;
begin
- Result := FDisplayName;
+ if Length(FDisplayName) > 0 then
+ Result := FDisplayName
+ else
+ Result := FName;
+end;
+
+
+function TGameMap.GetPreviewName: string;
+begin
+ if Length(FPreviewName) > 0 then
+ Result := FPreviewName
+ else
+ Result := FName;
end;
end.
diff --git a/source/view/Forms.Main.dfm b/source/view/Forms.Main.dfm
index 1f4b97b..7ae19d4 100644
--- a/source/view/Forms.Main.dfm
+++ b/source/view/Forms.Main.dfm
@@ -66,7 +66,7 @@ object MainForm: TMainForm
Top = 76
Width = 565
Height = 428
- ActivePage = tsMapList
+ ActivePage = tsAbout
Align = alClient
Style = tsButtons
TabOrder = 2
@@ -105,7 +105,7 @@ object MainForm: TMainForm
Columns = <
item
Position = 0
- Width = 199
+ Width = 203
WideText = 'Map name'
end
item
@@ -331,6 +331,10 @@ object MainForm: TMainForm
end
object tsNetwork: TTabSheet
Caption = 'Server - Network'
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
object gbPorts: TGroupBox
AlignWithMargins = True
Left = 8
@@ -401,6 +405,10 @@ object MainForm: TMainForm
object tsGames: TTabSheet
Caption = 'Launcher - Game locations'
ImageIndex = 3
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
object vstGames: TVirtualStringTree
AlignWithMargins = True
Left = 8
@@ -434,7 +442,7 @@ object MainForm: TMainForm
end
item
Position = 1
- Width = 337
+ Width = 341
WideText = 'Location'
end>
end
diff --git a/source/view/Forms.Main.pas b/source/view/Forms.Main.pas
index 09211ac..a7f187f 100644
--- a/source/view/Forms.Main.pas
+++ b/source/view/Forms.Main.pas
@@ -226,6 +226,7 @@ type
implementation
uses
System.Bindings.Helper,
+ System.DateUtils,
System.Math,
System.StrUtils,
System.SysUtils,
@@ -275,6 +276,13 @@ const
{ TMainForm }
procedure TMainForm.FormCreate(Sender: TObject);
+
+ function GetVersionDate: TDateTime;
+ begin
+ Result := EncodeDate(2000, 1, 1) + Pred(App.Version.Release);
+ end;
+
+
var
lightBtnFace: TColor;
pageIndex: Integer;
@@ -312,7 +320,12 @@ begin
lightBtnFace := BlendColors(clBtnFace, clWindow, 196);
pnlGamesWarning.Color := lightBtnFace;
- lblProductName.Caption := App.Version.FormatVersion(False, True);
+ lblProductName.Caption := Format('%s v%d.%d - %s',
+ [App.Version.Strings.ProductName,
+ App.Version.Major,
+ App.Version.Minor,
+ FormatDateTime('yyyy.mm.dd', GetVersionDate)]);
+
lblCopyright.Caption := App.Version.Strings.LegalCopyright;
@@ -923,7 +936,7 @@ begin
exit;
if Assigned(Node) then
- frmMapPreview.Load(gameMapList.Map[Node^.Index].Name)
+ frmMapPreview.Load(gameMapList.Map[Node^.Index].PreviewName)
else
frmMapPreview.Clear;
end;
diff --git a/source/view/Forms.Map.pas b/source/view/Forms.Map.pas
index e89adea..6ea31bc 100644
--- a/source/view/Forms.Map.pas
+++ b/source/view/Forms.Map.pas
@@ -288,7 +288,7 @@ begin
if Assigned(Node) then
begin
nodeData := Sender.GetNodeData(Node);
- frmMapPreview.Load(nodeData^.Name);
+ frmMapPreview.Load(nodeData^.PreviewName);
FLockMapChange := True;
try
diff --git a/source/view/Frame.MapPreview.pas b/source/view/Frame.MapPreview.pas
index c890e4a..1d37308 100644
--- a/source/view/Frame.MapPreview.pas
+++ b/source/view/Frame.MapPreview.pas
@@ -22,7 +22,7 @@ type
constructor Create(AOwner: TComponent); override;
procedure Clear;
- procedure Load(const AMapName: string);
+ procedure Load(const APreviewName: string);
end;
@@ -56,7 +56,7 @@ begin
end;
-procedure TMapPreviewFrame.Load(const AMapName: string);
+procedure TMapPreviewFrame.Load(const APreviewName: string);
var
preview: TPicture;
fileName: string;
@@ -65,17 +65,17 @@ var
begin
preview := nil;
- if Length(AMapName) > 0 then
+ if Length(APreviewName) > 0 then
begin
- preview := gcMapPreview.PictureByName(AMapName);
+ preview := gcMapPreview.PictureByName(APreviewName);
if not Assigned(preview) then
begin
previewItem := TX2GraphicContainerItem.Create(Self);
previewItem.Container := gcMapPreview;
- previewItem.PictureName := AMapName;
+ previewItem.PictureName := APreviewName;
preview := previewItem.Picture;
- fileName := GetAssetPath(AssetMapPreviewPath + AMapName + AssetMapPreviewExtension);
+ fileName := GetAssetPath(AssetMapPreviewPath + APreviewName + AssetMapPreviewExtension);
if FileExists(fileName) then
begin
try