diff --git a/Build/Configurations/GZDoom_DoomDoom.cfg b/Build/Configurations/GZDoom_DoomDoom.cfg
new file mode 100644
index 00000000..8932d6a2
--- /dev/null
+++ b/Build/Configurations/GZDoom_DoomDoom.cfg
@@ -0,0 +1,76 @@
+/*************************************************************\
+ Doom Builder 2 Game Configuration for ZDoom-compatible port
+\*************************************************************/
+
+// This is required to prevent accidental use of a different configuration
+type = "Doom Builder 2 Game Configuration";
+
+// This is the title to show for this game
+game = "GZDoom: Doom (Doom format)";
+
+// This is the simplified game engine/sourceport name
+engine = "gzdoom";
+
+// *******************************************************
+// * *
+// * Note: all the elements that could be factorized *
+// * because they were common to ZDoom, GZDoom and *
+// * Zandronum have been moved to ZDoom_common.cfg. *
+// * *
+// *******************************************************
+
+// STANDARD ZDOOM SETTINGS
+// Settings common to all games and all map formats
+include("Includes\\ZDoom_common.cfg", "common");
+
+// Settings common to Doom map format
+include("Includes\\ZDoom_common.cfg", "mapformat_doom");
+
+// Settings common to Doom games
+include("Includes\\Game_Doom.cfg");
+
+// Default thing filters
+// (these are not required, just useful for new users)
+thingsfilters
+{
+ include("Includes\\Doom_misc.cfg", "thingsfilters");
+}
+
+// Depends on both game and map format
+gamedetect
+{
+ // Map format
+ include("Includes\\ZDoom_misc.cfg", "gamedetect_doom");
+ // Game scheme
+ include("Includes\\Doom_misc.cfg", "gamedetect_either");
+}
+
+// THING TYPES
+// Each engine has its own additional thing types
+// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom
+thingtypes
+{
+ // Basic game actors
+ include("Includes\\Doom_things.cfg");
+ include("Includes\\Doom2_things.cfg");
+ // Additional ZDoom actors for that game
+ include("Includes\\ZDoom_things.cfg", "doom");
+ // Standard ZDoom actors
+ include("Includes\\ZDoom_things.cfg", "zdoom");
+ // Additional actors from the engine
+ include("Includes\\GZDoom_things.cfg", "gzdoom");
+ include("Includes\\GZDoom_things.cfg", "gzdoom_lights");
+}
+
+// ENUMERATIONS
+// Each engine has its own additional thing types
+// These are enumerated lists for linedef types and UDMF fields.
+enums
+{
+ // Basic game enums
+ include("Includes\\Doom_misc.cfg", "enums");
+ // Standard ZDoom enums
+ include("Includes\\ZDoom_misc.cfg", "enums");
+ // Additional ZDoom enums for that game
+ include("Includes\\ZDoom_misc.cfg", "enums_doom");
+}
diff --git a/Build/Configurations/GZDoom_HexenHexen.cfg b/Build/Configurations/GZDoom_HexenHexen.cfg
new file mode 100644
index 00000000..c9c76d98
--- /dev/null
+++ b/Build/Configurations/GZDoom_HexenHexen.cfg
@@ -0,0 +1,75 @@
+/*************************************************************\
+ Doom Builder 2 Game Configuration for ZDoom-compatible port
+\*************************************************************/
+
+// This is required to prevent accidental use of a different configuration
+type = "Doom Builder 2 Game Configuration";
+
+// This is the title to show for this game
+game = "GZDoom: Hexen (Hexen format)";
+
+// This is the simplified game engine/sourceport name
+engine = "gzdoom";
+
+// *******************************************************
+// * *
+// * Note: all the elements that could be factorized *
+// * because they were common to ZDoom, GZDoom and *
+// * Zandronum have been moved to ZDoom_common.cfg. *
+// * *
+// *******************************************************
+
+// STANDARD ZDOOM SETTINGS
+// Settings common to all games and all map formats
+include("Includes\\ZDoom_common.cfg", "common");
+
+// Settings common to Hexen map format
+include("Includes\\ZDoom_common.cfg", "mapformat_hexen");
+
+// Settings common to Hexen games
+include("Includes\\Game_Hexen.cfg");
+
+// Default thing filters
+// (these are not required, just useful for new users)
+thingsfilters
+{
+ include("Includes\\Hexen_misc.cfg", "thingsfilters");
+}
+
+// Depends on both game and map format
+gamedetect
+{
+ // Map format
+ include("Includes\\ZDoom_misc.cfg", "gamedetect_hexen");
+ // Game scheme
+ include("Includes\\Hexen_misc.cfg", "gamedetect");
+}
+
+// THING TYPES
+// Each engine has its own additional thing types
+// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom
+thingtypes
+{
+ // Basic game actors
+ include("Includes\\Hexen_things.cfg");
+ // Additional ZDoom actors for that game
+ include("Includes\\ZDoom_things.cfg", "hexen");
+ // Standard ZDoom actors
+ include("Includes\\ZDoom_things.cfg", "zdoom");
+ // Additional actors from the engine
+ include("Includes\\GZDoom_things.cfg", "gzdoom");
+ include("Includes\\GZDoom_things.cfg", "gzdoom_lights");
+}
+
+// ENUMERATIONS
+// Each engine has its own additional thing types
+// These are enumerated lists for linedef types and UDMF fields.
+enums
+{
+ // Basic game enums
+ include("Includes\\Doom_misc.cfg", "enums");
+ // Standard ZDoom enums
+ include("Includes\\ZDoom_misc.cfg", "enums");
+ // Additional ZDoom enums for that game
+ include("Includes\\ZDoom_misc.cfg", "enums_hexen");
+}
diff --git a/Build/Configurations/GZDoom_HexenUDMF.cfg b/Build/Configurations/GZDoom_HexenUDMF.cfg
new file mode 100644
index 00000000..3a0056d2
--- /dev/null
+++ b/Build/Configurations/GZDoom_HexenUDMF.cfg
@@ -0,0 +1,75 @@
+/*************************************************************\
+ Doom Builder 2 Game Configuration for ZDoom-compatible port
+\*************************************************************/
+
+// This is required to prevent accidental use of a different configuration
+type = "Doom Builder 2 Game Configuration";
+
+// This is the title to show for this game
+game = "GZDoom: Hexen (UDMF)";
+
+// This is the simplified game engine/sourceport name
+engine = "gzdoom";
+
+// *******************************************************
+// * *
+// * Note: all the elements that could be factorized *
+// * because they were common to ZDoom, GZDoom and *
+// * Zandronum have been moved to ZDoom_common.cfg. *
+// * *
+// *******************************************************
+
+// STANDARD ZDOOM SETTINGS
+// Settings common to all games and all map formats
+include("Includes\\ZDoom_common.cfg", "common");
+
+// Settings common to text map format
+include("Includes\\ZDoom_common.cfg", "mapformat_udmf");
+
+// Settings common to Hexen games
+include("Includes\\Game_Hexen.cfg");
+
+// Default thing filters
+// (these are not required, just useful for new users)
+thingsfilters
+{
+ include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf");
+}
+
+// Depends on both game and map format
+gamedetect
+{
+ // Map format
+ include("Includes\\ZDoom_misc.cfg", "gamedetect_udmf");
+ // Game scheme
+ include("Includes\\Hexen_misc.cfg", "gamedetect");
+}
+
+// THING TYPES
+// Each engine has its own additional thing types
+// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom
+thingtypes
+{
+ // Basic game actors
+ include("Includes\\Hexen_things.cfg");
+ // Additional ZDoom actors for that game
+ include("Includes\\ZDoom_things.cfg", "hexen");
+ // Standard ZDoom actors
+ include("Includes\\ZDoom_things.cfg", "zdoom");
+ // Additional actors from the engine
+ include("Includes\\GZDoom_things.cfg", "gzdoom");
+ include("Includes\\GZDoom_things.cfg", "gzdoom_lights");
+}
+
+// ENUMERATIONS
+// Each engine has its own additional thing types
+// These are enumerated lists for linedef types and UDMF fields.
+enums
+{
+ // Basic game enums
+ include("Includes\\Doom_misc.cfg", "enums");
+ // Standard ZDoom enums
+ include("Includes\\ZDoom_misc.cfg", "enums");
+ // Additional ZDoom enums for that game
+ include("Includes\\ZDoom_misc.cfg", "enums_hexen");
+}
diff --git a/Build/Configurations/GZDoom_StrifeUDMF.cfg b/Build/Configurations/GZDoom_StrifeUDMF.cfg
new file mode 100644
index 00000000..10732166
--- /dev/null
+++ b/Build/Configurations/GZDoom_StrifeUDMF.cfg
@@ -0,0 +1,75 @@
+/*************************************************************\
+ Doom Builder 2 Game Configuration for ZDoom-compatible port
+\*************************************************************/
+
+// This is required to prevent accidental use of a different configuration
+type = "Doom Builder 2 Game Configuration";
+
+// This is the title to show for this game
+game = "GZDoom: Strife (UDMF)";
+
+// This is the simplified game engine/sourceport name
+engine = "gzdoom";
+
+// *******************************************************
+// * *
+// * Note: all the elements that could be factorized *
+// * because they were common to ZDoom, GZDoom and *
+// * Zandronum have been moved to ZDoom_common.cfg. *
+// * *
+// *******************************************************
+
+// STANDARD ZDOOM SETTINGS
+// Settings common to all games and all map formats
+include("Includes\\ZDoom_common.cfg", "common");
+
+// Settings common to text map format
+include("Includes\\ZDoom_common.cfg", "mapformat_udmf");
+
+// Settings common to Strife games
+include("Includes\\Game_Strife.cfg");
+
+// Default thing filters
+// (these are not required, just useful for new users)
+thingsfilters
+{
+ include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf");
+}
+
+// Depends on both game and map format
+gamedetect
+{
+ // Map format
+ include("Includes\\ZDoom_misc.cfg", "gamedetect_udmf");
+ // Game scheme
+ include("Includes\\Strife_misc.cfg", "gamedetect");
+}
+
+// THING TYPES
+// Each engine has its own additional thing types
+// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom
+thingtypes
+{
+ // Basic game actors
+ include("Includes\\Strife_things.cfg");
+ // Additional ZDoom actors for that game
+ include("Includes\\ZDoom_things.cfg", "strife");
+ // Standard ZDoom actors
+ include("Includes\\ZDoom_things.cfg", "zdoom");
+ // Additional actors from the engine
+ include("Includes\\GZDoom_things.cfg", "gzdoom");
+ include("Includes\\GZDoom_things.cfg", "gzdoom_lights");
+}
+
+// ENUMERATIONS
+// Each engine has its own additional thing types
+// These are enumerated lists for linedef types and UDMF fields.
+enums
+{
+ // Basic game enums
+ include("Includes\\Doom_misc.cfg", "enums");
+ // Standard ZDoom enums
+ include("Includes\\ZDoom_misc.cfg", "enums");
+ // Additional ZDoom enums for that game
+ include("Includes\\ZDoom_misc.cfg", "enums_strife");
+}
diff --git a/Build/Configurations/Includes/Game_Hexen.cfg b/Build/Configurations/Includes/Game_Hexen.cfg
new file mode 100644
index 00000000..813e21f5
--- /dev/null
+++ b/Build/Configurations/Includes/Game_Hexen.cfg
@@ -0,0 +1,36 @@
+// Default lump name for new map
+ defaultlumpname = "MAP01";
+ skyflatname = "F_SKY";
+ basegame = 3;
+
+ // Decorate actors to include depending on actor game property
+ decorategames = "hexen raven";
+
+ // Skill levels
+ skills
+ {
+ include("Hexen_misc.cfg", "skills");
+ }
+
+ // Door making
+ makedoortrack = "D_END2";
+
+ // Default thing filters
+ // (these are not required, just useful for new users)
+ /*thingsfilters
+ {
+ include("Hexen_misc.cfg", "thingsfilters");
+ } */
+
+ // How to compare thing flags (for the stuck things error checker)
+ thingflagscompare
+ {
+ include("Hexen_misc.cfg", "thingflagscompare");
+ }
+
+ // Default texture sets
+ // (these are not required, but useful for new users)
+ texturesets
+ {
+ include("Hexen_texturesets.cfg");
+ }
\ No newline at end of file
diff --git a/Build/Configurations/Includes/Hexen_sectors.cfg b/Build/Configurations/Includes/Hexen_sectors.cfg
new file mode 100644
index 00000000..ece1054b
--- /dev/null
+++ b/Build/Configurations/Includes/Hexen_sectors.cfg
@@ -0,0 +1,35 @@
+
+0 = "Normal";
+1 = "Light Phased";
+2 = "Light Sequence Start";
+3 = "Light Sequence Special 1";
+4 = "Light Sequence Special 2";
+26 = "Stairs Special 1";
+27 = "Stairs Special 2";
+198 = "Light Indoor 2";
+199 = "Light Indoor 1";
+200 = "Sky 2 (MAPINFO)";
+201 = "Scroll North (slow)";
+202 = "Scroll North (medium)";
+203 = "Scroll North (fast)";
+204 = "Scroll East (slow)";
+205 = "Scroll East (medium)";
+206 = "Scroll East (fast)";
+207 = "Scroll South (slow)";
+208 = "Scroll South (medium)";
+209 = "Scroll South (fast)";
+210 = "Scroll West (slow)";
+211 = "Scroll West (medium)";
+212 = "Scroll West (fast)";
+213 = "Scroll NorthWest (slow)";
+214 = "Scroll NorthWest (medium)";
+215 = "Scroll NorthWest (fast)";
+216 = "Scroll NorthEast (slow)";
+217 = "Scroll NorthEast (medium)";
+218 = "Scroll NorthEast (fast)";
+219 = "Scroll SouthEast (slow)";
+220 = "Scroll SouthEast (medium)";
+221 = "Scroll SouthEast (fast)";
+222 = "Scroll SouthWest (slow)";
+223 = "Scroll SouthWest (medium)";
+224 = "Scroll SouthWest (fast)";
diff --git a/Build/Configurations/Includes/Hexen_texturesets.cfg b/Build/Configurations/Includes/Hexen_texturesets.cfg
new file mode 100644
index 00000000..e69de29b
diff --git a/Build/Configurations/Includes/Hexen_things.cfg b/Build/Configurations/Includes/Hexen_things.cfg
new file mode 100644
index 00000000..dfbeae50
--- /dev/null
+++ b/Build/Configurations/Includes/Hexen_things.cfg
@@ -0,0 +1,1599 @@
+
+players
+{
+ color = 10; // Light Green
+ arrow = 1;
+ title = "Player Starts";
+ width = 16;
+ sort = 1;
+ error = 2;
+ blocking = 2;
+
+ 1
+ {
+ title = "Player 1 start";
+ sprite = "CLERA1";
+ }
+ 2
+ {
+ title = "Player 2 start";
+ sprite = "CLERA1";
+ }
+ 3
+ {
+ title = "Player 3 start";
+ sprite = "CLERA1";
+ }
+ 4
+ {
+ title = "Player 4 start";
+ sprite = "CLERA1";
+ }
+ 9100
+ {
+ title = "Player 5 Start";
+ sprite = "CLERA1";
+ }
+ 9101
+ {
+ title = "Player 6 Start";
+ sprite = "CLERA1";
+ }
+ 9102
+ {
+ title = "Player 7 Start";
+ sprite = "CLERA1";
+ }
+ 9103
+ {
+ title = "Player 8 Start";
+ sprite = "CLERA1";
+ }
+ 11
+ {
+ title = "Player Deathmatch start";
+ sprite = "CLERR0";
+ }
+}
+
+teleports
+{
+ color = 2; // Green
+ arrow = 1;
+ title = "Teleports";
+ width = 16;
+ sort = 1;
+ error = 1;
+ blocking = 0;
+
+ 14
+ {
+ title = "Teleport Landing";
+ sprite = "TELEA0";
+ }
+ 140
+ {
+ title = "Teleport Smoke";
+ sprite = "TSMKA0";
+ }
+}
+
+monsters
+{
+ color = 12; // Light Red
+ arrow = 1;
+ title = "Monsters";
+ width = 20;
+ sort = 1;
+ error = 2;
+ blocking = 2;
+
+ 107
+ {
+ title = "Centaur";
+ sprite = "CENTA1";
+ }
+ 10060
+ {
+ title = "Affrit";
+ sprite = "FDMNA1";
+ }
+ 115
+ {
+ title = "Slaughtaur";
+ sprite = "CENTF1";
+ }
+ 34
+ {
+ title = "Reiver";
+ sprite = "WRTHA1";
+ }
+ 10011
+ {
+ title = "Reiver (buried)";
+ sprite = "WRTHA1";
+ }
+ 254
+ {
+ title = "Dragon Lich";
+ sprite = "DRAGC1";
+ arg0
+ {
+ title = "Destination Thing Tag";
+ type = 14;
+ }
+ arg1
+ {
+ title = "Destination Thing Tag";
+ type = 14;
+ }
+ arg2
+ {
+ title = "Destination Thing Tag";
+ type = 14;
+ }
+ arg3
+ {
+ title = "Destination Thing Tag";
+ type = 14;
+ }
+ arg4
+ {
+ title = "Destination Thing Tag";
+ type = 14;
+ }
+ }
+ 10030
+ {
+ title = "Ettin";
+ sprite = "ETTNA1";
+ width = 25;
+ }
+ 8020
+ {
+ title = "Wendigo";
+ sprite = "ICEYA1";
+ width = 22;
+ }
+ 31
+ {
+ title = "Green Chaos Serpent";
+ sprite = "DEMNA1";
+ width = 32;
+ }
+ 8080
+ {
+ title = "Brown Chaos Serpent";
+ sprite = "DEM2A1";
+ width = 32;
+ }
+ 114
+ {
+ title = "Dark Bishop";
+ sprite = "BISHA1";
+ width = 22;
+ }
+ 121
+ {
+ title = "Stalker";
+ sprite = "SSPTB0";
+ width = 32;
+ }
+ 120
+ {
+ title = "Stalker Boss";
+ sprite = "SSPTD0";
+ width = 32;
+ }
+ 10100
+ {
+ title = "Zedek (fighter)";
+ sprite = "PLAYE8";
+ width = 16;
+ }
+ 10101
+ {
+ title = "Traductus (cleric)";
+ sprite = "CLERE8";
+ width = 16;
+ }
+ 10102
+ {
+ title = "Menelkir (mage)";
+ sprite = "MAGEE8";
+ width = 16;
+ }
+ 10080
+ {
+ title = "Heresiarch";
+ sprite = "SORCA1";
+ width = 40;
+ }
+ 10200
+ {
+ title = "Korax";
+ sprite = "KORXA1";
+ width = 65;
+ }
+}
+
+weapons
+{
+ color = 14; // Yellow
+ arrow = 0;
+ title = "Weapons";
+ width = 20;
+ sort = 1;
+ blocking = 0;
+
+ 10
+ {
+ title = "Serpent Staff";
+ sprite = "WCSSA0";
+ }
+ 8010
+ {
+ title = "Timon's Axe";
+ sprite = "WFAXA0";
+ }
+ 53
+ {
+ title = "Frost Shards";
+ sprite = "WMCSA0";
+ }
+ 8009
+ {
+ title = "Firestorm";
+ sprite = "WCFMA0";
+ }
+ 123
+ {
+ title = "Hammer Of Retribution";
+ sprite = "WFHMA0";
+ }
+ 8040
+ {
+ title = "Arc Of Death";
+ sprite = "WMLGG0";
+ }
+ 18
+ {
+ title = "Wraithverge Piece 1";
+ sprite = "WCH1A0";
+ }
+ 19
+ {
+ title = "Wraithverge Piece 2";
+ sprite = "WCH2A0";
+ }
+ 20
+ {
+ title = "Wraithverge Piece 3";
+ sprite = "WCH3A0";
+ }
+ 12
+ {
+ title = "Quietus Piece 1";
+ sprite = "WFR1A0";
+ }
+ 13
+ {
+ title = "Quietus Piece 2";
+ sprite = "WFR2A0";
+ }
+ 16
+ {
+ title = "Quietus Piece 3";
+ sprite = "WFR3A0";
+ }
+ 21
+ {
+ title = "BloodScourge Piece 1";
+ sprite = "WMS1A0";
+ }
+ 22
+ {
+ title = "BloodScourge Piece 2";
+ sprite = "WMS2A0";
+ }
+ 23
+ {
+ title = "BloodScourge Piece 3";
+ sprite = "WMS3A0";
+ }
+}
+
+ammunition
+{
+ color = 6; // Brown
+ arrow = 0;
+ title = "Mana";
+ width = 8;
+ sort = 1;
+ blocking = 0;
+
+ 122
+ {
+ title = "Blue Mana";
+ sprite = "MAN1H0";
+ }
+ 124
+ {
+ title = "Green Mana";
+ sprite = "MAN2H0";
+ }
+ 8004
+ {
+ title = "Combined Mana";
+ sprite = "MAN3A0";
+ }
+}
+
+health
+{
+ color = 1; // Blue
+ arrow = 0;
+ title = "Health and Armor";
+ width = 20;
+ sort = 1;
+ blocking = 0;
+
+ 8005
+ {
+ title = "Mesh Armor";
+ sprite = "ARM1A0";
+ }
+ 8006
+ {
+ title = "Falcon Shield";
+ sprite = "ARM2A0";
+ }
+ 8007
+ {
+ title = "Platinum Helm";
+ sprite = "ARM3A0";
+ }
+ 8008
+ {
+ title = "Amulet Of Warding";
+ sprite = "ARM4A0";
+ }
+ 81
+ {
+ title = "Crystal Vial";
+ sprite = "PTN1A0";
+ }
+}
+
+powerups
+{
+ color = 9; // Light Blue
+ arrow = 0;
+ title = "Artifacts";
+ width = 20;
+ height = 20;
+ sort = 1;
+ blocking = 0;
+
+ 30
+ {
+ title = "Porkalator";
+ sprite = "PORKB0";
+ }
+ 32
+ {
+ title = "Mystic Urn";
+ sprite = "SPHLA0";
+ }
+ 33
+ {
+ title = "Torch";
+ sprite = "TRCHA0";
+ }
+ 36
+ {
+ title = "Chaos Device";
+ sprite = "ATLPA0";
+ }
+ 82
+ {
+ title = "Quartz Flask";
+ sprite = "PTN2A0";
+ }
+ 83
+ {
+ title = "Wings Of Wrath";
+ sprite = "SOARA0";
+ }
+ 84
+ {
+ title = "Icon Of The Defender";
+ sprite = "INVUA0";
+ }
+ 86
+ {
+ title = "Dark Servant";
+ sprite = "SUMNA0";
+ }
+ 10110
+ {
+ title = "Disc Of Repulsion";
+ sprite = "BLSTB0";
+ }
+ 10120
+ {
+ title = "Mystic Ambit Incant";
+ sprite = "HRADB0";
+ }
+ 10040
+ {
+ title = "Banishment Device";
+ sprite = "TELOA0";
+ }
+ 8000
+ {
+ title = "Flechette";
+ sprite = "PSBGA0";
+ }
+ 8002
+ {
+ title = "Boots Of Speed";
+ sprite = "SPEDB0";
+ }
+ 8003
+ {
+ title = "Krater Of Might";
+ sprite = "BMANA0";
+ }
+ 8041
+ {
+ title = "Dragonskin Bracers";
+ sprite = "BRACC0";
+ }
+}
+
+puzzle
+{
+ color = 7; // Light Grey
+ arrow = 1;
+ title = "Puzzle Items";
+ width = 20;
+ sort = 1;
+ blocking = 0;
+
+ 9002
+ {
+ title = "Yorick's Skull";
+ sprite = "ASKUA0";
+ }
+ 9003
+ {
+ title = "Heart Of D'Sparil";
+ sprite = "ABGMA0";
+ }
+ 9004
+ {
+ title = "Ruby Planet";
+ sprite = "AGMRA0";
+ }
+ 9005
+ {
+ title = "Emerald Planet 1";
+ sprite = "AGMGA0";
+ }
+ 9006
+ {
+ title = "Sapphire Planet 1";
+ sprite = "AGMBA0";
+ }
+ 9007
+ {
+ title = "Daemon Codex";
+ sprite = "ABK1A0";
+ }
+ 9008
+ {
+ title = "Liber Obscura";
+ sprite = "ABK2A0";
+ }
+ 9009
+ {
+ title = "Emerald Planet 2";
+ sprite = "AGG2A0";
+ }
+ 9010
+ {
+ title = "Sapphire Planet 2";
+ sprite = "AGMBA0";
+ }
+ 9011
+ {
+ title = "Yorick's Statue";
+ sprite = "STWNA0";
+ width = 10;
+ }
+ 9012
+ {
+ title = "Pedestal Of D'Sparil";
+ sprite = "GMPDA0";
+ width = 10;
+ }
+ 9014
+ {
+ title = "Flame mask";
+ sprite = "ASK2A0";
+ }
+ 9015
+ {
+ title = "Glaive seal";
+ sprite = "AFWPA0";
+ }
+ 9016
+ {
+ title = "Holy relic";
+ sprite = "ACWPA0";
+ width = 10;
+ }
+ 9017
+ {
+ title = "Sigil of the magus";
+ sprite = "AMWPA0";
+ width = 10;
+ }
+ 9018
+ {
+ title = "Clock Gear (steel)";
+ sprite = "AGERA0";
+ }
+ 9019
+ {
+ title = "Clock Gear (bronze)";
+ sprite = "AGR2A0";
+ }
+ 9020
+ {
+ title = "Clock Gear (steel and bronze)";
+ sprite = "AGR3A0";
+ }
+ 9021
+ {
+ title = "Clock Gear (bronze and steel)";
+ sprite = "AGR4A0";
+ }
+}
+
+keys
+{
+ color = 13; // Light Magenta
+ arrow = 0;
+ title = "Keys";
+ width = 8;
+ sort = 1;
+ blocking = 0;
+
+ 8030
+ {
+ title = "Steel Key";
+ sprite = "KEY1A0";
+ }
+ 8031
+ {
+ title = "Cave Key";
+ sprite = "KEY2A0";
+ }
+ 8032
+ {
+ title = "Axe Key";
+ sprite = "KEY3A0";
+ }
+ 8033
+ {
+ title = "Fire Key";
+ sprite = "KEY4A0";
+ }
+ 8034
+ {
+ title = "Emerald Key";
+ sprite = "KEY5A0";
+ }
+ 8035
+ {
+ title = "Dungeon Key";
+ sprite = "KEY6A0";
+ }
+ 8036
+ {
+ title = "Silver Key";
+ sprite = "KEY7A0";
+ }
+ 8037
+ {
+ title = "Rusty Key";
+ sprite = "KEY8A0";
+ }
+ 8038
+ {
+ title = "Horn Key";
+ sprite = "KEY9A0";
+ }
+ 8039
+ {
+ title = "Swamp Key";
+ sprite = "KEYAA0";
+ }
+ 8200
+ {
+ title = "Castle Key";
+ sprite = "KEYBA0";
+ }
+}
+
+obstacles
+{
+ color = 3; // Cyan
+ arrow = 0;
+ title = "Obstacles";
+ width = 20;
+ sort = 1;
+ blocking = 2;
+
+ 8064
+ {
+ title = "Suit Of Armor";
+ sprite = "SUITA0";
+ width = 16;
+ arg0
+ {
+ title = "Contained Item";
+ type = 11;
+ enum = "spawnthing";
+ }
+ }
+ 77
+ {
+ title = "Battle Rag Banner";
+ sprie = "BNR1A0";
+ width = 8;
+ }
+ 8100
+ {
+ title = "Barrel";
+ sprite = "BARLA0";
+ width = 15;
+ }
+ 8065
+ {
+ title = "Bell";
+ sprite = "BBLLA0";
+ width = 56;
+ }
+ 103
+ {
+ title = "Pillar With Vase";
+ sprite = "VASEA0";
+ width = 12;
+ }
+ 5
+ {
+ title= "Winged Statue";
+ sprite = "STTWA0";
+ width = 10;
+ }
+ 98
+ {
+ title = "Small Rock (brown)";
+ sprite = "RKBSA0";
+ width = 15;
+ }
+ 97
+ {
+ title = "Big Rock (brown)";
+ sprite = "RKBLA0";
+ width = 17;
+ }
+ 99
+ {
+ title = "Big Rock (grey)";
+ sprite = "RKBKA0";
+ }
+ 57
+ {
+ title = "Stalactite (small)";
+ sprite = "SLC3A0";
+ width = 8;
+ hangs = 1;
+ }
+ 56
+ {
+ title = "Stalactite (medium)";
+ sprite = "SLC2A0";
+ width = 6;
+ hangs = 1;
+ }
+ 52
+ {
+ title = "Stalactite (large)";
+ sprite = "SLC1A0";
+ width = 8;
+ hangs = 1;
+ }
+ 48
+ {
+ title = "Stalagmite (pillar)";
+ sprite = "SGMPA0";
+ width = 8;
+ }
+ 51
+ {
+ title = "Stalagmite (small)";
+ sprite = "SGM3A0";
+ width = 8;
+ }
+ 50
+ {
+ title = "Stalagmite (medium)";
+ sprite = "SGM2A0";
+ width = 6;
+ }
+ 49
+ {
+ title = "Stalagmite (large)";
+ sprite = "SGM1A0";
+ width = 8;
+ }
+ 80
+ {
+ title = "Gnarled Tree 1";
+ sprite = "TRE6A0";
+ width = 22;
+ }
+ 87
+ {
+ title = "Gnarled Tree 2";
+ sprite = "TRE7A0";
+ width = 22;
+ }
+ 78
+ {
+ title = "Tall Tree 1";
+ sprite = "TRE5A0";
+ width = 15;
+ }
+ 79
+ {
+ title = "Tall Tree 2";
+ sprite = "TRE4A0";
+ width = 15;
+ }
+ 8067
+ {
+ title = "Iron Maiden";
+ sprite = "IRONA0";
+ width = 12;
+ }
+ 63
+ {
+ title = "Tombstone (RIP)";
+ sprite = "TMS1A0";
+ width = 10;
+ }
+ 64
+ {
+ title = "Tombstone (Shane)";
+ sprite = "TMS2A0";
+ width = 10;
+ }
+ 65
+ {
+ title = "Tombstone (slimy)";
+ sprite = "TMS3A0";
+ width = 10;
+ }
+ 66
+ {
+ title = "Tombstone (Brian R)";
+ sprite = "TMS4A0";
+ width = 10;
+ }
+ 67
+ {
+ title = "Tombstone (cross circle)";
+ sprite = "TMS5A0";
+ width = 10;
+ }
+ 68
+ {
+ title = "Tombstone (small cross)";
+ sprite = "TMS6A0";
+ width = 8;
+ }
+ 69
+ {
+ title = "Tombstone (Brian P)";
+ sprite = "TMS7A0";
+ width = 8;
+ }
+ 96
+ {
+ title = "Ice Spike (tiny)";
+ sprite = "ICM4A0";
+ width = 4;
+ }
+ 95
+ {
+ title = "Ice Spike (small)";
+ sprite = "ICM3A0";
+ width = 5;
+ }
+ 94
+ {
+ title = "Ice Spike (medium)";
+ sprite = "ICM2A0";
+ width = 5;
+ }
+ 93
+ {
+ title = "Ice Spike (large)";
+ sprite = "ICM1A0";
+ width = 8;
+ }
+ 92
+ {
+ title = "Icicle (tiny)";
+ sprite = "ICT4A0";
+ width = 4;
+ hangs = 1;
+ }
+ 91
+ {
+ title = "Icicle (small)";
+ sprite = "ICT3A0";
+ width = 4;
+ hangs = 1;
+ }
+ 90
+ {
+ title = "Icicle (medium)";
+ sprite = "ICT2A0";
+ width = 5;
+ hangs = 1;
+ }
+ 89
+ {
+ title = "Icicle (large)";
+ sprite = "ICT1A0";
+ width = 8;
+ hangs = 1;
+ }
+ 8068
+ {
+ title = "Evergreen Tree";
+ sprite = "XMASA0";
+ width = 11;
+ }
+ 8062
+ {
+ title = "Rotten Dead Tree (destructible)";
+ sprite = "TRDTA0";
+ width = 15;
+ }
+ 24
+ {
+ title = "Dead Tree";
+ sprite = "TRE1A0";
+ width = 10;
+ }
+ 25
+ {
+ title = "Leafless Tree";
+ sprite = "TRE1A0";
+ width = 15;
+ }
+ 60
+ {
+ title = "Dead Tree (mossy)";
+ sprite = "SWMVA0";
+ width = 8;
+ }
+ 26
+ {
+ title = "Mossy Tree 1";
+ sprite = "TRE2A0";
+ width = 10;
+ }
+ 27
+ {
+ title = "Mossy Tree 2";
+ sprite = "TRE3A0";
+ width = 10;
+ }
+ 88
+ {
+ title = "Log";
+ sprite = "SLTRA0";
+ }
+ 29
+ {
+ title= "Tree Stump (bare)";
+ sprite = "STM2A0";
+ width = 12;
+ }
+ 28
+ {
+ title= "Tree Stump (burned)";
+ sprite = "STM1A0";
+ width = 12;
+ }
+ 37
+ {
+ title = "Tree Stump 1";
+ sprite = "STM3A0";
+ }
+ 38
+ {
+ title = "Tree Stump 2";
+ sprite = "STM4A0";
+ }
+ 8051
+ {
+ title = "Bronze Gargoyle (short)";
+ sprite = "GAR8A0";
+ width = 14;
+ }
+ 8047
+ {
+ title = "Bronze Gargoyle (tall)";
+ sprite = "GAR4A0";
+ width = 14;
+ }
+ 8044
+ {
+ title = "Rusty Gargoyle (tall)";
+ sprite = "GAR1A0";
+ width = 14;
+ }
+ 76
+ {
+ title = "Ice Gargoyle (short)";
+ sprite = "STT5A0";
+ width = 14;
+ }
+ 73
+ {
+ title = "Ice Gargoyle (tall)";
+ sprite = "STT3A0";
+ width = 14;
+ }
+ 8050
+ {
+ title = "Lava Gargoyle (short)";
+ sprite = "GAR7A0";
+ width = 14;
+ }
+ 8046
+ {
+ title = "Lava Gargoyle (tall)";
+ sprite = "GAR3A0";
+ width = 14;
+ }
+ 8049
+ {
+ title = "Dark Lava Gargoyle (short)";
+ sprite = "GAR6A0";
+ width = 14;
+ }
+ 8045
+ {
+ title = "Dark Lava Gargoyle (tall)";
+ sprite = "GAR2A0";
+ width = 14;
+ }
+ 74
+ {
+ title = "Stone Gargoyle (short)";
+ sprite = "STT4A0";
+ width = 14;
+ }
+ 72
+ {
+ title = "Stone Gargoyle (tall)";
+ sprite = "STT2A0";
+ width = 14;
+ }
+ 8052
+ {
+ title = "Steel Gargoyle (short)";
+ sprite = "GAR9A0";
+ width = 14;
+ }
+ 8048
+ {
+ title = "Steel Gargoyle (tall)";
+ sprite = "GAR5A0";
+ width = 14;
+ }
+}
+
+lights
+{
+ color = 11; // Light Cyan
+ arrow = 0;
+ title = "Light sources";
+ width = 20;
+ blocking = 2;
+ sort = 1;
+
+ 17
+ {
+ title = "Chandelier (lit)";
+ sprite = "CDLRA0";
+ hangs = 1;
+ }
+ 8063
+ {
+ title = "Chandelier (unlit)";
+ sprite = "CDLRD0";
+ hangs = 1;
+ }
+ 8066
+ {
+ title = "Blue Candle (lit)";
+ sprite = "CANDA0";
+ }
+ 8502
+ {
+ title = "Candle With Web (unlit)";
+ sprite = "TST3A0";
+ }
+ 8503
+ {
+ title = "Small Gray Candle (unlit)";
+ sprite = "TST4A0";
+ }
+ 8504
+ {
+ title = "Small Candle (unlit)";
+ sprite = "TST5A0";
+ }
+ 119
+ {
+ title = "3 Candles (lit)";
+ sprite = "CNDLA0";
+ }
+ 10500
+ {
+ title = "Small Flame (timed)";
+ sprite = "FFSMA0";
+ }
+ 10501
+ {
+ title = "Small Flame";
+ sprite = "FFSMA0";
+ }
+ 10502
+ {
+ title = "Large Flame (timed)";
+ sprite = "FFLGD0";
+ }
+ 10503
+ {
+ title = "Large Flame";
+ sprite = "FFLGD0";
+ }
+ 54
+ {
+ title = "Wall Torch (lit)";
+ sprite = "WLTRB0";
+ }
+ 55
+ {
+ title = "Wall Torch (unlit)";
+ sprite = "WLTRI0";
+ }
+ 8042
+ {
+ title = "Minotaur Statue (lit)";
+ sprite = "FBULB0";
+ }
+ 8043
+ {
+ title = "Minotaur Statue (unlit)";
+ sprite = "FBULH0";
+ }
+ 8069
+ {
+ title = "Cauldron (lit)";
+ sprite = "CDRNG0";
+ width = 12;
+ }
+ 8070
+ {
+ title = "Cauldron (unlit)";
+ sprite = "CDRNA0";
+ width = 12;
+ }
+ 8060
+ {
+ title = "Skull With Flame";
+ sprite = "FSKLA0";
+ width = 5;
+ }
+ 8061
+ {
+ title = "Brazier With Flame";
+ sprite = "BRTRB0";
+ width = 6;
+ }
+ 116
+ {
+ title = "Twined Torch (lit)";
+ sprite = "TWTRA0";
+ width = 10;
+ }
+ 117
+ {
+ title = "Twined Torch (unlit)";
+ sprite = "TWTRI0";
+ width = 10;
+ }
+}
+
+decoration
+{
+ color = 4; // Red
+ arrow = 0;
+ title = "Decoration";
+ width = 20;
+ sort = 1;
+ blocking = 0;
+
+ 8071
+ {
+ title = "Chain (short)";
+ sprite = "CHNSA0";
+ width = 4;
+ hangs = 1;
+ height = 32;
+ }
+ 8072
+ {
+ title = "Chain (long)";
+ sprite = "CHNSB0";
+ width = 4;
+ hangs = 1;
+ height = 64;
+ }
+ 8073
+ {
+ title = "Hook With Heart";
+ sprite = "CHNSC0";
+ width = 4;
+ hangs = 1;
+ }
+ 8077
+ {
+ title = "Hook With Skull";
+ sprite = "CHNSG0";
+ width = 4;
+ hangs = 1;
+ }
+ 8074
+ {
+ title = "Chain With Large Hook";
+ sprite = "CHNSD0";
+ width = 4;
+ hangs = 1;
+ height = 32;
+ }
+ 8075
+ {
+ title = "Chain With Small Hook";
+ sprite = "CHNSE0";
+ width = 4;
+ hangs = 1;
+ height = 32;
+ }
+ 8076
+ {
+ title = "Chain with Spike Ball";
+ sprite = "CHNSF0";
+ width = 4;
+ hangs = 1;
+ height = 32;
+ }
+ 8103
+ {
+ title = "Hanging Bucket";
+ sprite = "BCKTA0";
+ width = 8;
+ hangs = 1;
+ height = 72;
+ blocking = 2;
+ }
+ 6
+ {
+ title = "Tiny Rock (mossy)";
+ sprite = "RCK1A0";
+ }
+ 7
+ {
+ title = "Small Rock (mossy)";
+ sprite = "RCK2A0";
+ }
+ 9
+ {
+ title = "Medium Rock (mossy)";
+ sprite = "RCK3A0";
+ }
+ 15
+ {
+ title = "Big Rock (mossy)";
+ sprite = "RCK4A0";
+ }
+ 101
+ {
+ title = "Brick Rubble (small)";
+ sprite = "RBL2A0";
+ }
+ 102
+ {
+ title = "Brick Rubble (medium)";
+ sprite = "RBL3A0";
+ }
+ 100
+ {
+ title = "Brick Rubble (large)";
+ sprite = "RBL1A0";
+ }
+ 39
+ {
+ title = "Large Mushroom 1";
+ sprite = "MSH1A0";
+ }
+ 40
+ {
+ title = "Large Mushroom 2";
+ sprite = "MSH2A0";
+ }
+ 8104
+ {
+ title = "Large Mushroom (explodes)";
+ sprite = "SHRMB0";
+ width = 6;
+ }
+ 41
+ {
+ title = "Medium Mushroom";
+ sprite = "MSH3A0";
+ }
+ 42
+ {
+ title = "Small Mushroom 1";
+ sprite = "MSH4A0";
+ }
+ 44
+ {
+ title = "Small Mushroom 2";
+ sprite = "MSH5A0";
+ }
+ 45
+ {
+ title = "Small Mushroom 3";
+ sprite = "MSH6A0";
+ }
+ 46
+ {
+ title = "Small Mushroom 4";
+ sprite = "MSH7A0";
+ }
+ 47
+ {
+ title = "Small Mushroom 5";
+ sprite = "MSH8A0";
+ }
+ 8101
+ {
+ title = "Shrub";
+ sprite = "SHB1A0";
+ width = 8;
+ blocking = 2;
+ }
+ 8102
+ {
+ title = "Shrub 2";
+ sprite = "SHB2A0";
+ width = 16;
+ blocking = 2;
+ }
+ 111
+ {
+ title = "Pool Of Blood";
+ sprite = "GIBSA0";
+ }
+ 71
+ {
+ title= "Hanging Corpse";
+ sprite = "CPS3A0";
+ width = 6;
+ hangs = 1;
+ height = 75;
+ blocking = 2;
+ }
+ 61
+ {
+ title = "Impaled Corpse";
+ sprite = "CPS1A0";
+ width = 10;
+ height = 92;
+ blocking = 2;
+ }
+ 108
+ {
+ title = "Lynched Corpse";
+ sprite = "CPS4A0";
+ width = 11;
+ hangs = 1;
+ height = 95;
+ blocking = 2;
+ }
+ 109
+ {
+ title = "Lynched Corpse (heartless)";
+ sprite = "CPS5A0";
+ width = 10;
+ hangs = 1;
+ height = 95;
+ blocking = 2;
+ }
+ 110
+ {
+ title = "Corpse (sitting)";
+ sprite = "CPS6A0";
+ width = 15;
+ height = 35;
+ blocking = 2;
+ }
+ 62
+ {
+ title = "Corpse (sleeping)";
+ sprite = "CPS2A0";
+ }
+ 8509
+ {
+ title = "Meat Cleaver";
+ sprite = "TST0A0";
+ }
+ 8508
+ {
+ title = "Goblet (silver)";
+ sprite = "TST9A0";
+ }
+ 8507
+ {
+ title = "Goblet (small)";
+ sprite = "TST8A0";
+ }
+ 8506
+ {
+ title = "Goblet (tall)";
+ sprite = "TST7A0";
+ }
+ 8505
+ {
+ title = "Goblet (spilled)";
+ sprite = "TST6A0";
+ }
+ 8501
+ {
+ title = "Small Silver Stein";
+ sprite = "TST2A0";
+ }
+ 8500
+ {
+ title = "Large Brown Stein";
+ sprite = "TST1A0";
+ }
+ 104
+ {
+ title = "Pot (tall)";
+ sprite = "POT1A0";
+ width = 10;
+ blocking = 2;
+ arg0
+ {
+ title = "Contained Item";
+ type = 11;
+ enum = "spawnthing";
+ }
+ }
+ 105
+ {
+ title = "Pot (medium)";
+ sprite = "POT2A0";
+ width = 10;
+ blocking = 2;
+ arg0
+ {
+ title = "Contained Item";
+ type = 11;
+ enum = "spawnthing";
+ }
+ }
+ 106
+ {
+ title = "Pot (short)";
+ sprite = "POT3A0";
+ width = 15;
+ blocking = 2;
+ arg0
+ {
+ title = "Contained Item";
+ type = 11;
+ enum = "spawnthing";
+ }
+ }
+ 58
+ {
+ title = "Hanging Moss 1";
+ sprite = "MSS1A0";
+ hangs = 1;
+ }
+ 59
+ {
+ title = "Hanging Moss 2";
+ sprite = "MSS2A0";
+ hangs = 1;
+ }
+ 10090
+ {
+ title = "Spike Down";
+ sprite = "TSPKD0";
+ width = 20;
+ }
+ 10091
+ {
+ title = "Spike Up";
+ sprite = "TSPKB0";
+ width = 20;
+ }
+}
+
+sounds
+{
+ color = 5; // Purple
+ arrow = 1;
+ title = "Sounds";
+ width = 8;
+ height = 16;
+ sort = 1;
+ fixedsize = true;
+ blocking = 0;
+ sprite = "internal:sound";
+
+ 1403 = "Creak";
+ 1408 = "Earth Crack";
+ 1401 = "Heavy";
+ 1407 = "Ice";
+ 1405 = "Lava";
+ 1402 = "Metal";
+ 1409 = "Metal2";
+ 1404 = "Silent";
+ 1400 = "Stone";
+ 1406 = "Water";
+ 1410 = "Wind";
+}
+
+other
+{
+ color = 8; // Dark Grey
+ arrow = 1;
+ title = "Other";
+ width = 0;
+ height = 0;
+ sort = 1;
+ fixedsize = true;
+ blocking = 0;
+ sprite = "internal:actor";
+
+ 118
+ {
+ title = "Glitter Bridge";
+ width = 32;
+ fixedsize = false;
+ }
+ 3000 = "Polyobject Anchor";
+ 3001 = "Polyobject Start Spot";
+ 3002 = "Polyobject Start Spot (crush)";
+ 10225
+ {
+ title = "Spawn Bat";
+ sprite = "ABATC2C8";
+ arg0
+ {
+ title = "Spawn Frequency";
+ }
+ arg1
+ {
+ title = "Spread Angle";
+ }
+ arg3
+ {
+ title = "Spawn Duration";
+ }
+ arg4
+ {
+ title = "Changing Angle";
+ }
+ }
+ 10000
+ {
+ title = "Spawn Fog";
+ arg0
+ {
+ title = "Movement Speed";
+ }
+ arg1
+ {
+ title = "Spread Angle";
+ }
+ arg2
+ {
+ title = "Spawn Frequency";
+ }
+ arg3
+ {
+ title = "Fog Lifetime";
+ }
+ }
+ 10001
+ {
+ title = "Fog Patch (small)";
+ arg0
+ {
+ title = "Movement Speed";
+ }
+ arg3
+ {
+ title = "Fog Lifetime";
+ }
+ arg4
+ {
+ title = "Moving Fog";
+ }
+ }
+ 10002
+ {
+ title = "Fog Patch (medium)";
+ arg0
+ {
+ title = "Movement Speed";
+ }
+ arg3
+ {
+ title = "Fog Lifetime";
+ }
+ arg4
+ {
+ title = "Moving Fog";
+ }
+ }
+ 10003
+ {
+ title = "Fog Patch (large)";
+ arg0
+ {
+ title = "Movement Speed";
+ }
+ arg3
+ {
+ title = "Fog Lifetime";
+ }
+ arg4
+ {
+ title = "Moving Fog";
+ }
+ }
+ 113 = "Spawn Leaf";
+ 9001 = "Map Spot";
+ 9013 = "Map Spot (gravity)";
+}
diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs
index 70fd0c23..0849042a 100644
--- a/Source/Core/General/General.cs
+++ b/Source/Core/General/General.cs
@@ -308,7 +308,6 @@ namespace CodeImp.DoomBuilder
// Go for all cfg files in the configurations directory
string[] filenames = Directory.GetFiles(configspath, "*.cfg", SearchOption.TopDirectoryOnly);
- Array.Sort(filenames);
foreach(string filepath in filenames)
{
@@ -324,6 +323,9 @@ namespace CodeImp.DoomBuilder
configs.Add(cfginfo);
}
}
+
+ // Sort the configs
+ configs.Sort();
}
// This loads all nodebuilder configurations
@@ -692,6 +694,21 @@ namespace CodeImp.DoomBuilder
}
random = new Random(); //mxd
+
+ //mxd. Check enabled game configuration
+ bool noneenabled = true;
+ for(int i = 0; i < configs.Count; i++) {
+ if(configs[i].Enabled) {
+ noneenabled = false;
+ break;
+ }
+ }
+
+ if(noneenabled) {
+ if(MessageBox.Show("No game configurations are currently enabled.\nPlease enable at least one game configuration", "Warning", MessageBoxButtons.OK) == DialogResult.OK) {
+ mainwindow.ShowConfiguration();
+ }
+ }
// Run application from the main window
Application.Run(mainwindow);
diff --git a/Source/Core/Windows/ConfigForm.Designer.cs b/Source/Core/Windows/ConfigForm.Designer.cs
index 4121e031..52a47506 100644
--- a/Source/Core/Windows/ConfigForm.Designer.cs
+++ b/Source/Core/Windows/ConfigForm.Designer.cs
@@ -718,7 +718,6 @@ namespace CodeImp.DoomBuilder.Windows
this.listconfigs.Name = "listconfigs";
this.listconfigs.ShowGroups = false;
this.listconfigs.Size = new System.Drawing.Size(259, 358);
- this.listconfigs.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.listconfigs.TabIndex = 0;
this.listconfigs.UseCompatibleStateImageBehavior = false;
this.listconfigs.View = System.Windows.Forms.View.Details;
diff --git a/Source/Core/Windows/ConfigForm.cs b/Source/Core/Windows/ConfigForm.cs
index df5dfab2..9643f41d 100644
--- a/Source/Core/Windows/ConfigForm.cs
+++ b/Source/Core/Windows/ConfigForm.cs
@@ -317,21 +317,16 @@ namespace CodeImp.DoomBuilder.Windows
private void apply_Click(object sender, EventArgs e)
{
ConfigurationInfo ci;
-
- // Apply configuration items
- foreach(ListViewItem lvi in listconfigs.Items)
- {
- // Get configuration item
- ci = lvi.Tag as ConfigurationInfo;
- ci.Enabled = lvi.Checked;
- if(!ci.Changed) continue; //mxd. This config wasn't changed
- // Find same configuration info in originals
- foreach(ConfigurationInfo oci in General.Configs)
- {
- // Apply settings when they match
- if(string.Compare(ci.Filename, oci.Filename) == 0) oci.Apply(ci);
- }
+ //mxd. Apply configuration items. They should be in the same order, riiiight?
+ for(int i = 0; i < listconfigs.Items.Count; i++) {
+ // Get configuration item
+ ci = listconfigs.Items[i].Tag as ConfigurationInfo;
+ ci.Enabled = listconfigs.Items[i].Checked;
+
+ // Apply settings
+ General.Configs[i].Enabled = ci.Enabled;
+ if(ci.Changed) General.Configs[i].Apply(ci);
}
//mxd. Update linedef color presets
diff --git a/Source/Core/Windows/ConfigForm.resx b/Source/Core/Windows/ConfigForm.resx
index 6ba5a1e7..3efe96de 100644
--- a/Source/Core/Windows/ConfigForm.resx
+++ b/Source/Core/Windows/ConfigForm.resx
@@ -204,48 +204,6 @@
True
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
159, 17
@@ -254,7 +212,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4
- CAAAAk1TRnQBSQFMAwEBAAHsAQAB7AEAARMBAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
+ CAAAAk1TRnQBSQFMAwEBAAH0AQAB9AEAARMBAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUwDAAEQAwABAQEAAQgFAAHAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -310,6 +268,9 @@
True
+
+ True
+
True
diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs
index 70249502..cd3b9255 100644
--- a/Source/Core/Windows/MainForm.cs
+++ b/Source/Core/Windows/MainForm.cs
@@ -228,11 +228,11 @@ namespace CodeImp.DoomBuilder.Windows
buttongrid.DropDownDirection = ToolStripDropDownDirection.AboveLeft;
// Event handlers
- buttonvisiblechangedhandler = new EventHandler(ToolbarButtonVisibleChanged);
+ buttonvisiblechangedhandler = ToolbarButtonVisibleChanged;
//mxd
- display.OnKeyReleased += new KeyEventHandler(display_OnKeyReleased);
- toolbarContextMenu.KeyDown += new KeyEventHandler(toolbarContextMenu_KeyDown);
- toolbarContextMenu.KeyUp += new KeyEventHandler(toolbarContextMenu_KeyUp);
+ display.OnKeyReleased += display_OnKeyReleased;
+ toolbarContextMenu.KeyDown += toolbarContextMenu_KeyDown;
+ toolbarContextMenu.KeyUp += toolbarContextMenu_KeyUp;
// Bind any methods
General.Actions.BindMethods(this);
@@ -251,8 +251,7 @@ namespace CodeImp.DoomBuilder.Windows
lastsize = this.Size;
//mxd
- blinkTimer = new System.Timers.Timer();
- blinkTimer.Interval = 500;
+ blinkTimer = new System.Timers.Timer {Interval = 500};
blinkTimer.Elapsed += blinkTimer_Elapsed;
//mxd. Hints
@@ -519,21 +518,6 @@ namespace CodeImp.DoomBuilder.Windows
this.DragEnter += OnDragEnter;
this.DragDrop += OnDragDrop;
- //mxd. Check enabled game configuration
- bool noneenabled = true;
- for (int i = 0; i < General.Configs.Count; i++) {
- if (General.Configs[i].Enabled) {
- noneenabled = false;
- break;
- }
- }
-
- if(noneenabled) {
- if (MessageBox.Show("No game configurations are currently enabled.\nPlease enable at least one game configuration", "Warning", MessageBoxButtons.OK) == DialogResult.OK) {
- ShowConfiguration();
- }
- }
-
// Info panel state?
bool expandedpanel = General.Settings.ReadSetting("mainwindow.expandedinfopanel", true);
if(expandedpanel != IsInfoPanelExpanded) ToggleInfoPanel();