Merge remote-tracking branch 'udb/master'

This commit is contained in:
spherallic 2023-10-24 16:28:55 +02:00
commit aea6808cee
24 changed files with 5307 additions and 4823 deletions

View file

@ -9,15 +9,10 @@ type = "Doom Builder 2 Game Configuration";
game = "EDGE-Classic: Doom 2 (Doom format)";
// This is the simplified game engine/sourceport name
engine = "edge";
engine = "edge-classic";
// *******************************************************
// * *
// * Note: all the elements that could be factorized *
// * because they were common to ZDoom, GZDoom and *
// * Zandronum have been moved to ZDoom_common.cfg. *
// * *
// *******************************************************
// Settings common to Doom games
include("Includes\\Game_Doom.cfg");
// STANDARD DOOM SETTINGS
// Settings common to all games and all map formats
@ -27,16 +22,16 @@ include("Includes\\Doom_common.cfg", "common");
include("Includes\\Boom_common.cfg", "mapformat_doom");
include("Includes\\MBF21_common.cfg", "mapformat_doom");
// Settings common to Doom games
include("Includes\\Game_Doom.cfg");
// Settings common to all games and all map formats
include("Includes\\EdgeC_common.cfg", "common");
// Settings common to doom map format
include("Includes\\EdgeC_misc.cfg", "mapformat_doom");
include("Includes\\EdgeC_common.cfg", "mapformat_doom");
// Map name format for Doom 2.
mapnameformat = "MAPxy";
//mxd. No DECORATE support in vanilla
decorategames = "";
// Default thing filters
// (these are not required, just useful for new users)
@ -45,16 +40,6 @@ thingsfilters
include("Includes\\Doom_misc.cfg", "thingsfilters");
}
// 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");
include("Includes\\Boom_things.cfg");
}
// ENUMERATIONS
// Each engine has its own additional thing types
@ -65,10 +50,5 @@ enums
include("Includes\\Doom_misc.cfg", "enums");
}
// Dehacked data
dehacked
{
include("Includes\\Dehacked_Doom.cfg");
}

View file

@ -0,0 +1,49 @@
/*************************************************************\
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 = "EDGE-Classic: Doom 2 (UDMF)";
// This is the simplified game engine/sourceport name
engine = "edge-classic";
// Settings common to all games and all map formats
include("Includes\\EdgeC_common.cfg", "common");
// Default testing parameters
include("Includes\\Test_params.cfg", "vanilla_mapxx");
// Settings common to text map format
include("Includes\\EdgeC_misc.cfg", "mapformat_udmf");
// Special linedefs
singlesidedflag = "blocking";
doublesidedflag = "twosided";
impassableflag = "blocking";
upperunpeggedflag = "dontpegtop";
lowerunpeggedflag = "dontpegbottom";
defaultlinedefactivation = "playercross"; //mxd. Used when translating a map to UDMF
// 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");
}

View file

@ -1,6 +1,6 @@
// ***********************************************************
// * *
// * These values are mainly for UDMF EDGE-Classic *
// * These values are common for DiD and UDMF EDGE-Classic *
// * *
// ***********************************************************
@ -12,15 +12,10 @@ common
// Default testing parameters
include("Test_params.cfg", "modern");
// Default nodebuilder configurations
defaultsavecompiler = "glbsp_normal";
defaulttestcompiler = "glbsp_fast";
// Generalized actions
// generalizedlinedefs is true for Doom format and false for
// the other two, so it's not here.
generalizedsectors = true;
generalizedlinedefs = true;
//mxd. Maximum safe map size check (0 means skip check)
safeboundary = 0;
@ -30,9 +25,52 @@ common
defaultflatscale = 1.0f;
scaledtextureoffsets = true;
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = true;
// Enables multiple tags on sectors
sectormultitag = false;
//mxd. Sidedefs compression
// ioanch FIXME: what does this do? I made it false
sidedefcompressionignoresaction = false;
// Enables support for 3D floors (not really, since support for 3D floors is pretty much hard-coded, but
// this tells plugins that the game supports 3D floors)
effect3dfloorsupport = true;
//mxd. Sky textures for vanilla maps
defaultskytextures
{
SKY1 = "MAP01,MAP02,MAP03,MAP04,MAP05,MAP06,MAP07,MAP08,MAP09,MAP10,MAP11";
SKY2 = "MAP12,MAP13,MAP14,MAP15,MAP16,MAP17,MAP18,MAP19,MAP20";
SKY3 = "MAP21,MAP22,MAP23,MAP24,MAP25,MAP26,MAP27,MAP28,MAP29,MAP30,MAP31,MAP32";
}
// Default lump name for new map
defaultlumpname = "MAP01";
// No DECORATE support in EDGE ;)
decorategames = "";
//The default script compiler to use
defaultscriptcompiler = "";
// Default nodebuilder configurations
defaultsavecompiler = "";
defaulttestcompiler = "";
nodebuildersave = "";
nodebuildertest = "";
damagetypes = "";
internalsoundnames = "";
// Default texture sets
// (these are not required, but useful for new users)
texturesets
{
include("Doom_texturesets.cfg");
}
// Texture sources
textures
@ -47,7 +85,6 @@ common
include("EdgeC_misc.cfg", "hires");
}
// Patch sources
patches
{
@ -71,91 +108,44 @@ common
{
include("Boom_misc.cfg", "colormaps");
}
compatibility
{
fixnegativepatchoffsets = true;
fixmaskedpatchoffsets = true;
}
}
mapformat_doom
{
mixtexturesflats = true;
// The format interface handles the map data format
formatinterface = "DoomMapSetIO";
maplumpnames
{
include("Doom_misc.cfg", "doommaplumpnames");
include("Boom_misc.cfg", "boommaplumpnames");
}
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = true;
// Default flags for first new thing
defaultthingflags
{
include("Doom_misc.cfg", "defaultthingflags");
}
// Door making
//include("ZDoom_misc.cfg", "doormaking_doom");
// Generalized actions
generalizedlinedefs = true;
generalizedsectors = true;
// GENERALIZED LINEDEF TYPES
// GENERALIZED LINEDEF TYPES
gen_linedeftypes
{
include("Boom_generalized.cfg", "gen_linedeftypes");
}
// GENERALIZED SECTOR TYPES
// GENERALIZED SECTOR TYPES
gen_sectortypes
{
include("Boom_generalized.cfg", "gen_sectortypes");
}
// DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness
{
include("Doom_misc.cfg", "sectorbrightness");
}
// SECTOR TYPES
sectortypes
{
include("Doom_sectors.cfg");
include("EdgeC_sectors.cfg");
}
// LINEDEF FLAGS
linedefflags
// Door making
makedoortrack = "DOORTRAK";
makedoordoor = "BIGDOOR2";
makedoorceil = "FLAT20";
makedooraction = 1; // See linedeftypes
// DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness
{
include("Doom_misc.cfg", "linedefflags");
include("Boom_misc.cfg", "linedefflags");
include("Doom_misc.cfg", "sectorbrightness");
}
// LINEDEF ACTIVATIONS
linedefactivations
// SECTOR TYPES
sectortypes
{
include("Doom_sectors.cfg");
include("EdgeC_sectors.cfg");
}
// Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
include("Doom_misc.cfg", "linedefflagstranslation");
include("Boom_misc.cfg", "linedefflagstranslation");
}
// LINEDEF TYPES
linedeftypes
{
@ -164,227 +154,21 @@ mapformat_doom
include("EdgeC_linedefs.cfg");
}
thingtypes
{
// Basic game actors
include("Doom_things.cfg");
include("Doom2_things.cfg");
include("Boom_things.cfg");
include("EdgeC_things.cfg");
}
// THING FLAGS
thingflags
{
include("Doom_misc.cfg", "thingflags");
include("Boom_misc.cfg", "thingflags");
}
// Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
thingflagstranslation
{
include("Doom_misc.cfg", "thingflagstranslation");
include("Boom_misc.cfg", "thingflagstranslation");
}
// How to compare thing flags (for the stuck things error checker)
thingflagscompare
{
include("Doom_misc.cfg", "thingflagscompare");
include("Boom_misc.cfg", "thingflagscompare");
}
// Things flags masks
include("Doom_misc.cfg", "thingflagsmasks");
mixtexturesflats = true;
// Texture sources
textures
// Dehacked data
dehacked
{
include("Doom_misc.cfg", "textures");
include("EdgeC_misc.cfg", "textures"); // works for Eternity too
}
//mxd. HiRes sources
hires
{
include("EdgeC_misc.cfg", "hires");
include("Dehacked_Doom.cfg");
}
}
// ***********************************************************
// * *
// * Text map format *
// * *
// ***********************************************************
mapformat_udmf
{
// The format interface handles the map data format
formatinterface = "UniversalMapSetIO";
//mxd. The default script compiler to use
defaultscriptcompiler = "zdoom_acs.cfg";
// Enables support for long (> 8 chars) texture names
// WARNING: this should only be enabled for UDMF game configurations!
// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3!
longtexturenames = false;
// Enables setting brightness for floor and ceiling independently from each other
distinctfloorandceilingbrightness = false;
// Default nodebuilder configurations
defaultsavecompiler = "zdbsp_udmf_normal";
defaulttestcompiler = "zdbsp_udmf_fast";
// ioanch: eternity
engine = "edge"; // override that so that DB2 uses the correct namespace
maplumpnames
{
include("UDMF_misc.cfg", "udmfmaplumpnames_begin");
include("EdgeC_misc.cfg", "udmfmaplumpnames");
include("UDMF_misc.cfg", "udmfmaplumpnames_end");
}
// eternity
universalfields
{
include("EdgeC_misc.cfg", "universalfields");
}
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = true;
// Special linedefs
//include("ZDoom_misc.cfg", "speciallinedefs_udmf"); // same in EE
// Default flags for first new thing
defaultthingflags
{
include("EdgeC_misc.cfg", "defaultthingflags_udmf");
}
// Door making
//include("Eternity_misc.cfg", "doormaking_udmf");
// Generalized actions
generalizedlinedefs = true;
generalizedsectors = true;
// GENERALIZED SECTOR TYPES
//gen_sectortypes
//{
// include("Eternity_generalized.cfg", "gen_sectortypes_udmf");
//}
// SECTOR FLAGS
//sectorflags
//{
// include("Eternity_misc.cfg", "sectorflags_udmf");
//}
// DEFAULT SECTOR BRIGHTNESS LEVELS
//sectorbrightness
//{
// include("ZDoom_misc.cfg", "sectorbrightness");
//}
// SECTOR TYPES
//sectortypes
//{
// include("Eternity_misc.cfg", "sectors_udmf");
//}
// SECTOR RENSERSTYLES
//sectorrenderstyles
//{
// include("UDMF_misc.cfg", "sectorrenderstyles");
//}
// LINEDEF FLAGS
//linedefflags
//{
// include("Eternity_misc.cfg", "linedefflags_udmf");
//}
// LINEDEF ACTIVATIONS
//linedefactivations
//{
// include("Eternity_misc.cfg", "linedefactivations_udmf");
//}
//mxd. Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
include("Doom_misc.cfg", "linedefflagstranslation");
//include("Hexen_misc.cfg", "linedefflagstranslation");
//include("ZDoom_misc.cfg", "linedefflagstranslation");
}
// LINEDEF RENSERSTYLES
//linedefrenderstyles
//{
// include("UDMF_misc.cfg", "linedefrenderstyles");
//}
//SIDEDEF FLAGS
//sidedefflags
//{
// include("Eternity_misc.cfg", "sidedefflags");
//}
// THING FLAGS
//thingflags
//{
// include("Eternity_misc.cfg", "thingflags_udmf");
//}
// THING RENSERSTYLES
//thingrenderstyles
//{
// include("UDMF_misc.cfg", "thingrenderstyles");
//}
// How to compare thing flags (for the stuck things error checker)
//thingflagscompare
//{
// include("Eternity_misc.cfg", "thingflagscompare_udmf");
//}
//mxd. Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
thingflagstranslation
{
include("Doom_misc.cfg", "thingflagstranslation");
//include("Hexen_misc.cfg", "thingflagstranslation");
//include("ZDoom_misc.cfg", "thingflagstranslation");
}
// Things flags masks
//include("Hexen_misc.cfg", "thingflagsmasks");
// LINEDEF TYPES
//linedeftypes
//{
// include("Hexen_linedefs.cfg");
// include("Eternity_linedefs.cfg", "udmf");
//}
// Texture sources
textures
{
include("Doom_misc.cfg", "textures");
include("EdgeC_misc.cfg", "textures"); // works for Eternity too
}
//mxd. HiRes sources
hires
{
include("EdgeC_misc.cfg", "hires");
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,4 @@
// Texture loading options
mixtexturesflats = true;
defaulttexturescale = 1.0f;
defaultflatscale = 1.0f;
linedefflags
{
@ -16,8 +12,6 @@ linedefflagtooltips
}
// Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
@ -27,35 +21,6 @@ linedefflagstranslation
}
linedefflags_udmf
{
blocking = "Impassable";
blockmonsters = "Block monster";
twosided = "Doublesided";
dontpegtop = "Upper unpegged";
dontpegbottom = "Lower unpegged";
secret = "Secret";
blocksound = "Block sound";
dontdraw = "Hidden";
mapped = "Shown";
passuse = "PassThru";
}
linedefflagtooltips_udmf
{
blocking = "If set on a 2-sided linedef, the linedef blocks players and monsters from being able to move through it. \nThis is typically used for mid-textured cage bars.\nBy convention, most doom-related software sets it for 1-sided lines by default because the\nid Software maps did, but it doesn't actually do anything.";
blockmonsters = "If set, blocks only monster movement.\n(in addition to whatever existing blocking properties it would have).";
twosided = "If set, then it has 2 sidedefs and acts as a connection between two sectors.";
dontpegtop = "If set:\nIf the linedef is 2-sided, the upper texture starts at the height of the higher ceiling.\nIf not set: and the linedef is 2-sided, the upper texture starts at the lower ceiling instead.\nIf the linedef is 1-sided, this does nothing.";
dontpegbottom = "If set: If the linedef is 2-sided, the lower texture starts at the height of the higher ceiling.\nIf not set: and the linedef is 2-sided, the upper texture starts at the higher floor instead.\nIf the linedef is 1-sided, this makes the mid texture start at floor instead of the ceiling.\nYou probably want to use this for door tracks if you don't want them to move with the door.";
secret = "If set, this flag prevents it from being marked as a switch or a door on the automap.";
blocksound = "If set, this linedef will partially block monster-waking sound from passing into the sector on the other side of it.\nNote that a sound must try to pass through two of these lines before being blocked.\nThis does not block the actual audio that the player hears at all, it is only for the monster AI.\nThis does nothing for 1-sided linedefs.";
dontdraw = "If set, this line is not shown on the automap even if you are looking directly at it";
mapped = "If set, this line is always revealed on the automap even if you haven't actually visited the area.";
passuse = "Normally, if you try to pull a switch or use a door, then players are only able to activate\nthe closest linedef with a special. When PassThru is set, your use reaches\nthrough and allows players to activate both this line and whatever is behind this\nline.\nThis does nothing for 1-sided lines because they always block use actions.\n\nNote that if someone plays your map on ZDoom-derived ports like GZDoom or Zandronum,\nthen PassThru will be true for walkover specials & scrollers even when this flag\nis not set, unless you set 'compat_useblocking' in MAPINFO.";
}
thingflags
{
@ -66,35 +31,6 @@ thingflags
}
thingflags_udmf
{
skill1 = "Skill 1";
skill2 = "Skill 2";
skill3 = "Skill 3";
skill4 = "Skill 4";
skill5 = "Skill 5";
ambush = "Ambush";
single = "Singleplayer";
dm = "Deathmatch";
coop = "Cooperative";
friend = "Friendly";
}
thingflagtooltips_udmf
{
skill1 = "If set, this actor appears on 'I'm Too Young To Die' difficulty.";
skill2 = "If set, this actor appears on 'Hey, Not Too Rough' difficulty.";
skill3 = "If set, this actor appears on 'Hurt Me Plenty' difficulty.";
skill4 = "If set, this actor appears on 'Ultraviolence' difficulty.";
skill5 = "If set, this actor appears on 'Nightmare' difficulty.";
ambush = "If set, this actor does not wake up if it hears the player until the player comes within field of view\n(even if the actor is facing the away from the player).";
single = "If not set, the actor does not appear in singleplayer modes.";
dm = "If not set, the actor does not appear in deathmatch modes.";
coop = "If not set, the actor does not appear in co-op modes.";
friend = "If set, the actor is friendly to the player.\nIf it is a monster, it will attack other players.";
}
// Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
@ -116,17 +52,7 @@ defaultthingflags
}
defaultthingflags_udmf
{
skill1;
skill2;
skill3;
skill4;
skill5;
single;
coop;
dm;
}
// Default sector brightness levels
@ -169,125 +95,552 @@ hires
/*
ADDITIONAL UNIVERSAL DOOM MAP FORMAT FIELD DEFINITIONS
See Documents\fielddatatypes.txt for informtion on the types.
*/
universalfields
// ***********************************************************
// * *
// * Doom map format *
// * *
// ***********************************************************
mapformat_doom
{
linedef
// The format interface handles the map data format
formatinterface = "DoomMapSetIO";
maplumpnames
{
comment
{
type = 2;
default = "";
}
include("Doom_misc.cfg", "doommaplumpnames");
include("Boom_misc.cfg", "boommaplumpnames");
}
sidedef
{
comment
{
type = 2;
default = "";
}
}
thing
{
comment
{
type = 2;
default = "";
}
}
sector
{
comment
{
type = 2;
default = "";
}
}
}
/*
MAP LUMP NAMES
Map lumps are loaded with the map as long as they are right after each other. When the editor
meets a lump which is not defined in this list it will ignore the map if not satisfied.
The order of items defines the order in which lumps will be written to WAD file on save.
To indicate the map header lump, use ~MAP
// Enables support for individual offsets of upper/middle/lower sidedef textures
localsidedeftextureoffsets = false;
Legenda:
required = Lump is required to exist.
blindcopy = Lump will be copied along with the map blindly. (usefull for lumps Doom Builder doesn't use)
nodebuild = The nodebuilder generates this lump.
allowempty = The nodebuilder is allowed to leave this lump empty.
script = This lump is a text-based script. Specify the filename of the script configuration to use.
*/
doommaplumpnames
{
REJECT
// Default flags for first new thing
defaultthingflags
{
allowempty = true;
include("Doom_misc.cfg", "defaultthingflags");
}
// LINEDEF FLAGS
linedefflags
{
include("Doom_misc.cfg", "linedefflags");
include("Boom_misc.cfg", "linedefflags");
}
// LINEDEF ACTIVATIONS
linedefactivations
{
}
// Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
include("Doom_misc.cfg", "linedefflagstranslation");
include("Boom_misc.cfg", "linedefflagstranslation");
}
// THING FLAGS
thingflags
{
include("Doom_misc.cfg", "thingflags");
include("Boom_misc.cfg", "thingflags");
}
// Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
thingflagstranslation
{
include("Doom_misc.cfg", "thingflagstranslation");
include("Boom_misc.cfg", "thingflagstranslation");
}
// How to compare thing flags (for the stuck things error checker)
thingflagscompare
{
include("Doom_misc.cfg", "thingflagscompare");
include("Boom_misc.cfg", "thingflagscompare");
}
// Things flags masks
include("Doom_misc.cfg", "thingflagsmasks");
}
udmfmaplumpnames
// ***********************************************************
// * *
// * Text map format *
// * *
// ***********************************************************
mapformat_udmf
{
BEHAVIOR
// The format interface handles the map data format
formatinterface = "UniversalMapSetIO";
// Enables support for long (> 8 chars) texture names
// WARNING: this should only be enabled for UDMF game configurations!
// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3!
longtexturenames = false;
// Enables support for individual offsets of upper/middle/lower sidedef textures
localsidedeftextureoffsets = true;
// Enables setting brightness for floor, ceiling, and walls independently from each other
distinctfloorandceilingbrightness = false;
distinctwallbrightness = false;
// Enabled setting brightness for upper, middle, and lower sidedef independently from each other
distinctsidedefpartbrightness = false;
//engine = "edge-classic"; // override that so that DB2 uses the correct namespace
maplumpnames
{
required = false;
nodebuild = false;
blindcopy = true;
include("UDMF_misc.cfg", "udmfmaplumpnames_begin");
include("UDMF_misc.cfg", "udmfmaplumpnames_end");
}
linedefflags
{
blocking = "Impassable";
blockmonsters = "Block monster";
twosided = "Doublesided";
dontpegtop = "Upper unpegged";
dontpegbottom = "Lower unpegged";
secret = "Secret";
blocksound = "Block sound";
dontdraw = "Hidden";
mapped = "Shown";
passuse = "PassThru";
blockplayers = "Block players";
blocksight = "Block monster line of sight";
}
linedefflagtooltips
{
blocking = "If set on a 2-sided linedef, the linedef blocks players and monsters from being able to move through it. \nThis is typically used for mid-textured cage bars.\nBy convention, most doom-related software sets it for 1-sided lines by default because the\nid Software maps did, but it doesn't actually do anything.";
blockmonsters = "If set, blocks only monster movement.\n(in addition to whatever existing blocking properties it would have).";
twosided = "If set, then it has 2 sidedefs and acts as a connection between two sectors.";
dontpegtop = "If set:\nIf the linedef is 2-sided, the upper texture starts at the height of the higher ceiling.\nIf not set: and the linedef is 2-sided, the upper texture starts at the lower ceiling instead.\nIf the linedef is 1-sided, this does nothing.";
dontpegbottom = "If set: If the linedef is 2-sided, the lower texture starts at the height of the higher ceiling.\nIf not set: and the linedef is 2-sided, the upper texture starts at the higher floor instead.\nIf the linedef is 1-sided, this makes the mid texture start at floor instead of the ceiling.\nYou probably want to use this for door tracks if you don't want them to move with the door.";
secret = "If set, this flag prevents it from being marked as a switch or a door on the automap.";
blocksound = "If set, this linedef will partially block monster-waking sound from passing into the sector on the other side of it.\nNote that a sound must try to pass through two of these lines before being blocked.\nThis does not block the actual audio that the player hears at all, it is only for the monster AI.\nThis does nothing for 1-sided linedefs.";
dontdraw = "If set, this line is not shown on the automap even if you are looking directly at it";
mapped = "If set, this line is always revealed on the automap even if you haven't actually visited the area.";
passuse = "Normally, if you try to pull a switch or use a door, then players are only able to activate\nthe closest linedef with a special. When PassThru is set, your use reaches\nthrough and allows players to activate both this line and whatever is behind this\nline.\nThis does nothing for 1-sided lines because they always block use actions.\n\nNote that if someone plays your map on ZDoom-derived ports like GZDoom or Zandronum,\nthen PassThru will be true for walkover specials & scrollers even when this flag\nis not set, unless you set 'compat_useblocking' in MAPINFO.";
}
thingflags
{
skill1 = "Skill 1";
skill2 = "Skill 2";
skill3 = "Skill 3";
skill4 = "Skill 4";
skill5 = "Skill 5";
ambush = "Ambush";
single = "Singleplayer";
dm = "Deathmatch";
coop = "Cooperative";
friend = "Friendly";
}
thingflagtooltips
{
skill1 = "If set, this actor appears on 'I'm Too Young To Die' difficulty.";
skill2 = "If set, this actor appears on 'Hey, Not Too Rough' difficulty.";
skill3 = "If set, this actor appears on 'Hurt Me Plenty' difficulty.";
skill4 = "If set, this actor appears on 'Ultraviolence' difficulty.";
skill5 = "If set, this actor appears on 'Nightmare' difficulty.";
ambush = "If set, this actor does not wake up if it hears the player until the player comes within field of view\n(even if the actor is facing the away from the player).";
single = "If not set, the actor does not appear in singleplayer modes.";
dm = "If not set, the actor does not appear in deathmatch modes.";
coop = "If not set, the actor does not appear in co-op modes.";
friend = "If set, the actor is friendly to the player.\nIf it is a monster, it will attack other players.";
}
DIALOGUE
// Default flags for first new thing
defaultthingflags
{
required = false;
nodebuild = false;
script = "ZDoom_USDF.cfg";
skill1;
skill2;
skill3;
skill4;
skill5;
single;
coop;
dm;
}
// Default thing filters
// (these are not required, just useful for new users)
thingsfilters
{
filter0
{
name = "Keys only";
category = "keys";
type = -1;
}
filter1
{
name = "Deathmatch";
category = "";
type = -1;
fields
{
dm = true;
}
}
filter2
{
name = "Cooperative";
category = "";
type = -1;
fields
{
coop = true;
}
}
filter3
{
name = "Skill 1";
category = "";
type = -1;
fields
{
skill1 = true;
}
}
filter4
{
name = "Skill 2";
category = "";
type = -1;
fields
{
skill2 = true;
}
}
filter5
{
name = "Skill 3";
category = "";
type = -1;
fields
{
skill3 = true;
}
}
filter6
{
name = "Skill 4";
category = "";
type = -1;
fields
{
skill4 = true;
}
}
filter7
{
name = "Skill 5";
category = "";
type = -1;
fields
{
skill5 = true;
}
}
}
// How to compare thing flags (for the stuck things error checker)
thingflagscompare
{
skills
{
skill1;
skill2;
skill3;
skill4;
skill5;
}
gamemodes
{
single { requiredgroups = "skills"; }
coop { requiredgroups = "skills"; }
dm { ignoredgroups = "skills"; }
}
}
//mxd. Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
thingflagstranslation
{
include("Doom_misc.cfg", "thingflagstranslation");
}
ZNODES
//mxd. Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
required = false;
nodebuild = true;
allowempty = false;
}
BLOCKMAP
include("Doom_misc.cfg", "linedefflagstranslation");
}
universalfields
{
required = false;
nodebuild = true;
allowempty = true;
}
REJECT
{
required = false;
nodebuild = true;
allowempty = true;
}
SCRIPTS
{
required = false;
nodebuild = false;
script = "ZDoom_ACS.cfg";
linedef
{
comment
{
type = 2;
default = "";
}
}
sidedef
{
comment
{
type = 2;
default = "";
}
scalex_top
{
type = 1;
default = 1.0f;
}
scalex_mid
{
type = 1;
default = 1.0f;
}
scalex_bottom
{
type = 1;
default = 1.0f;
}
scaley_top
{
type = 1;
default = 1.0f;
}
scaley_mid
{
type = 1;
default = 1.0f;
}
scaley_bottom
{
type = 1;
default = 1.0f;
}
offsetx_top
{
type = 1;
default = 0.0f;
}
offsetx_mid
{
type = 1;
default = 0.0f;
}
offsetx_bottom
{
type = 1;
default = 0.0f;
}
offsety_top
{
type = 1;
default = 0.0f;
}
offsety_mid
{
type = 1;
default = 0.0f;
}
offsety_bottom
{
type = 1;
default = 0.0f;
}
}
thing
{
alpha
{
type = 1;
default = 1.0f;
}
health
{
type = 1;
default = 1.0f;
}
scalex
{
type = 1;
default = 1.0f;
}
scaley
{
type = 1;
default = 1.0f;
}
comment
{
type = 2;
default = "";
}
}
sector
{
comment
{
type = 2;
default = "";
}
ypanningfloor
{
type = 1;
default = 0.0f;
}
ypanningceiling
{
type = 1;
default = 0.0f;
}
xpanningfloor
{
type = 1;
default = 0.0f;
}
xpanningceiling
{
type = 1;
default = 0.0f;
}
yscalefloor
{
type = 1;
default = 1.0f;
}
yscaleceiling
{
type = 1;
default = 1.0f;
}
xscalefloor
{
type = 1;
default = 1.0f;
}
xscaleceiling
{
type = 1;
default = 1.0f;
}
gravity
{
type = 1;
default = 1.0f;
}
fadecolor
{
type = 10;
default = 0;
}
fogdensity
{
type = 0;
default = 0;
}
lightcolor
{
type = 10;
default = 0;
}
rotationfloor
{
type = 1;
default = 0.0f;
}
rotationceiling
{
type = 1;
default = 0.0f;
}
}
}
}
enums
{
frontback
@ -488,149 +841,3 @@ enums
}
}
// Default thing filters
// (these are not required, just usefull for new users)
thingsfilters_udmf
{
filter0
{
name = "Keys only";
category = "keys";
type = -1;
}
filter2
{
name = "Skill 1";
category = "";
type = -1;
fields
{
skill1 = true;
}
}
filter3
{
name = "Skill 2";
category = "";
type = -1;
fields
{
skill2 = true;
}
}
filter4
{
name = "Skill 3";
category = "";
type = -1;
fields
{
skill3 = true;
}
}
filter5
{
name = "Skill 4";
category = "";
type = -1;
fields
{
skill4 = true;
}
}
/*
filter6
{
name = "Skill 5";
category = "";
type = -1;
fields
{
skill5 = true;
}
}
filter7
{
name = "Skill 6";
category = "";
type = -1;
fields
{
skill6 = true;
}
}
filter8
{
name = "Skill 7";
category = "";
type = -1;
fields
{
skill7 = true;
}
}
filter9
{
name = "Skill 8";
category = "";
type = -1;
fields
{
skill8 = true;
}
}
*/
}
// How thing flags should be compared (for the stuck thing error check)
thingflagscompare_udmf
{
skills {
skill6;
skill7;
skill8;
}
classes {
class4;
class5;
class6;
class7;
class8;
}
}

View file

@ -1,63 +1,108 @@
29 = "Hub Entry";
20 = "Airless";
25 = "Lo Grav";
4418 = "Water Liquid Extrafloor SCROLL/PUSH North";
4419 = "Water Liquid Extrafloor SCROLL/PUSH North East";
4420 = "Water Liquid Extrafloor SCROLL/PUSH East";
4421 = "Water Liquid Extrafloor SCROLL/PUSH South East";
4422 = "Water Liquid Extrafloor SCROLL/PUSH South";
4423 = "Water Liquid Extrafloor SCROLL/PUSH South West";
4424 = "Water Liquid Extrafloor SCROLL/PUSH West";
4425 = "Water Liquid Extrafloor SCROLL/PUSH North West";
4426 = "Slime Liquid Extrafloor SCROLL/PUSH North";
4427 = "Slime Liquid Extrafloor SCROLL/PUSH North East";
4428 = "Slime Liquid Extrafloor SCROLL/PUSH East";
4429 = "Slime Liquid Extrafloor SCROLL/PUSH South East";
4430 = "Slime Liquid Extrafloor SCROLL/PUSH South";
4431 = "Slime Liquid Extrafloor SCROLL/PUSH South West";
4432 = "Slime Liquid Extrafloor SCROLL/PUSH West";
4433 = "Slime Liquid Extrafloor SCROLL/PUSH North West";
4434 = "Lava Liquid Extrafloor SCROLL/PUSH North";
4435 = "Lava Liquid Extrafloor SCROLL/PUSH North East";
4436 = "Lava Liquid Extrafloor SCROLL/PUSH East";
4437 = "Lava Liquid Extrafloor SCROLL/PUSH South East";
4438 = "Lava Liquid Extrafloor SCROLL/PUSH South";
4439 = "Lava Liquid Extrafloor SCROLL/PUSH South West";
4440 = "Lava Liquid Extrafloor SCROLL/PUSH West";
4441 = "Lava Liquid Extrafloor SCROLL/PUSH North West";
4442 = "Push North";
4443 = "Push North East";
4444 = "Push East";
4445 = "Push South East";
4446 = "Push South";
4447 = "Push South West";
4448 = "Push West";
4449 = "Push North West";
4450 = "Scroll Floor Texture North";
4451 = "Scroll Floor Texture North East";
4452 = "Scroll Floor Texture East";
4453 = "Scroll Floor Texture South East";
4454 = "Scroll Floor Texture South";
4455 = "Scroll Floor Texture South West";
4456 = "Scroll Floor Texture West";
4457 = "Scroll Floor Texture North West";
4458 = "Scroll Floor Texture/Push North";
4459 = "Scroll Floor Texture/Push North East";
4460 = "Scroll Floor Texture/Push East";
4461 = "Scroll Floor Texture/Push South East";
4462 = "Scroll Floor Texture/Push South";
4463 = "Scroll Floor Texture/Push South West";
4464 = "Scroll Floor Texture/Push West";
4465 = "Scroll Floor Texture/Push North West";
4466 = "Blue Hue (Swimmable)";
4467 = "Green Hue (Swimmable)";
4468 = "Green Hue + Damage (Swimmable)";
4469 = "Red Hue (Swimmable)";
4470 = "Red Hue + Damage (Swimmable)";
4471 = "Blue Hue";
4472 = "Green Hue";
4473 = "Red Hue";
4474 = "Yellow Hue";
4475 = "Purple Hue";
4476 = "Grey Hue";
29 = "Hub Entry";
20 = "Airless";
25 = "Lo Grav";
4418 = "Water Liquid Extrafloor SCROLL/PUSH North";
4419 = "Water Liquid Extrafloor SCROLL/PUSH North East";
4420 = "Water Liquid Extrafloor SCROLL/PUSH East";
4421 = "Water Liquid Extrafloor SCROLL/PUSH South East";
4422 = "Water Liquid Extrafloor SCROLL/PUSH South";
4423 = "Water Liquid Extrafloor SCROLL/PUSH South West";
4424 = "Water Liquid Extrafloor SCROLL/PUSH West";
4425 = "Water Liquid Extrafloor SCROLL/PUSH North West";
4426 = "Slime Liquid Extrafloor SCROLL/PUSH North";
4427 = "Slime Liquid Extrafloor SCROLL/PUSH North East";
4428 = "Slime Liquid Extrafloor SCROLL/PUSH East";
4429 = "Slime Liquid Extrafloor SCROLL/PUSH South East";
4430 = "Slime Liquid Extrafloor SCROLL/PUSH South";
4431 = "Slime Liquid Extrafloor SCROLL/PUSH South West";
4432 = "Slime Liquid Extrafloor SCROLL/PUSH West";
4433 = "Slime Liquid Extrafloor SCROLL/PUSH North West";
4434 = "Lava Liquid Extrafloor SCROLL/PUSH North";
4435 = "Lava Liquid Extrafloor SCROLL/PUSH North East";
4436 = "Lava Liquid Extrafloor SCROLL/PUSH East";
4437 = "Lava Liquid Extrafloor SCROLL/PUSH South East";
4438 = "Lava Liquid Extrafloor SCROLL/PUSH South";
4439 = "Lava Liquid Extrafloor SCROLL/PUSH South West";
4440 = "Lava Liquid Extrafloor SCROLL/PUSH West";
4441 = "Lava Liquid Extrafloor SCROLL/PUSH North West";
4442 = "Push North";
4443 = "Push North East";
4444 = "Push East";
4445 = "Push South East";
4446 = "Push South";
4447 = "Push South West";
4448 = "Push West";
4449 = "Push North West";
4450 = "Scroll Floor Texture North";
4451 = "Scroll Floor Texture North East";
4452 = "Scroll Floor Texture East";
4453 = "Scroll Floor Texture South East";
4454 = "Scroll Floor Texture South";
4455 = "Scroll Floor Texture South West";
4456 = "Scroll Floor Texture West";
4457 = "Scroll Floor Texture North West";
4458 = "Scroll Floor Texture/Push North";
4459 = "Scroll Floor Texture/Push North East";
4460 = "Scroll Floor Texture/Push East";
4461 = "Scroll Floor Texture/Push South East";
4462 = "Scroll Floor Texture/Push South";
4463 = "Scroll Floor Texture/Push South West";
4464 = "Scroll Floor Texture/Push West";
4465 = "Scroll Floor Texture/Push North West";
4466 = "Blue Hue (Swimmable)";
4467 = "Green Hue (Swimmable)";
4468 = "Green Hue + Damage (Swimmable)";
4469 = "Red Hue (Swimmable)";
4470 = "Red Hue + Damage (Swimmable)";
4471 = "Blue Hue";
4472 = "Green Hue";
4473 = "Red Hue";
4474 = "Yellow Hue";
4475 = "Purple Hue";
4476 = "Grey Hue";
4480 = "EDGE fog: White 5%";
4481 = "EDGE fog: White 10%";
4482 = "EDGE fog: White 15%";
4483 = "EDGE fog: White 20%";
4484 = "EDGE fog: White 25%";
4485 = "EDGE fog: White 30%";
4486 = "EDGE fog: White 35%";
4487 = "EDGE fog: White 40%";
4488 = "EDGE fog: White 45%";
4489 = "EDGE fog: White 50%";
4490 = "EDGE fog: Green 5%";
4491 = "EDGE fog: Green 10%";
4492 = "EDGE fog: Green 15%";
4493 = "EDGE fog: Green 20%";
4494 = "EDGE fog: Green 25%";
4495 = "EDGE fog: Green 30%";
4496 = "EDGE fog: Green 35%";
4497 = "EDGE fog: Green 40%";
4498 = "EDGE fog: Green 45%";
4499 = "EDGE fog: Green 50%";
4500 = "EDGE fog: Red 5%";
4501 = "EDGE fog: Red 10%";
4502 = "EDGE fog: Red 15%";
4503 = "EDGE fog: Red 20%";
4504 = "EDGE fog: Red 25%";
4505 = "EDGE fog: Red 30%";
4506 = "EDGE fog: Red 35%";
4507 = "EDGE fog: Red 40%";
4508 = "EDGE fog: Red 45%";
4509 = "EDGE fog: Red 50%";
4510 = "EDGE fog: Blue 5%";
4511 = "EDGE fog: Blue 10%";
4512 = "EDGE fog: Blue 15%";
4513 = "EDGE fog: Blue 20%";
4514 = "EDGE fog: Blue 25%";
4515 = "EDGE fog: Blue 30%";
4516 = "EDGE fog: Blue 35%";
4517 = "EDGE fog: Blue 40%";
4518 = "EDGE fog: Blue 45%";
4519 = "EDGE fog: Blue 50%";
4530 = "EDGE Friction: Slippy";
4531 = "EDGE Friction: Very Slippy";
4532 = "EDGE Viscosity: Sticky";
4533 = "EDGE Viscosity: Very Sticky";

View file

@ -1,331 +1,360 @@
EDGE_monsters
{
color = 12; // Light Red
arrow = 1;
title = "Edge: Monsters";
width = 20;
sort = 1;
height = 56;
hangs = 0;
blocking = 1;
error = 2;
4050
{
title = "Stealth Arachnotron";
height = 32;
}
4051
{
title = "Stealth Archvile";
height = 32;
}
4052
{
title = "Stealth Baron of Hell";
height = 32;
}
4053
{
title = "Stealth Cacodemon";
height = 32;
}
4054
{
title = "Stealth Heavy weapon dude";
height = 32;
}
4055
{
title = "Stealth Demon";
height = 32;
}
4056
{
title = "Stealth Hell knight";
height = 32;
}
4057
{
title = "Stealth Imp";
height = 32;
}
4058
{
title = "Stealth Mancubus";
height = 32;
}
4059
{
title = "Stealth Revenant";
height = 32;
}
4060
{
title = "Stealth Shotgun Guy";
height = 32;
}
4061
{
title = "Stealth Zombie man";
height = 32;
}
7100
{
title = "EDGE Revenant MKII";
height = 32;
}
7101
{
title = "EDGE Teleport spawner";
height = 32;
}
7102
{
title = "Arachnotron MKII";
height = 32;
}
7103
{
title = "Mancubus MKII";
height = 32;
}
}
edge_powerups
{
color = 9; // Light Blue
arrow = 0;
title = "EDGE: Powerups";
width = 20;
height = 20;
hangs = 0;
blocking = 0;
sort = 1;
7000
{
title = "EDGE Nightvision Specs";
sprite = "NVSCA0";
}
7020
{
title = "EDGE Jetpack";
sprite = "JPCKA0";
}
7005
{
title = "EDGE Stop Time";
sprite = "TSTPB0";
}
}
edge_glowlights
{
color = 9; // Light Blue
arrow = 0;
title = "EDGE: Sector Light FX";
sprite = "internal:light";
width = 20;
height = 20;
hangs = 0;
blocking = 0;
7041
{
title = "EDGE Nukage Glow";
height = 32;
}
7042
{
title = "EDGE Lava Glow";
height = 32;
}
7043
{
title = "EDGE Water Glow";
height = 32;
}
}
edge_lights
{
color = 9; // Light Blue
arrow = 0;
title = "EDGE: Lights";
sprite = "internal:light";
width = 8;
height = 20;
hangs = 0;
blocking = 0;
7044
{
title = "White light: Floor";
height = 32;
color = 15;
}
7045
{
title = "Yellow light: Floor";
height = 32;
color = 15;
}
7046
{
title = "Red light: Floor";
height = 32;
color = 15;
}
7047
{
title = "Blue light: Floor";
height = 32;
color = 15;
}
7048
{
title = "Green light: Floor";
height = 32;
color = 15;
}
7049
{
title = "Orange light: Floor";
height = 32;
color = 15;
}
7054
{
title = "White light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
7055
{
title = "Yellow light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
7056
{
title = "Red light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
7057
{
title = "Blue light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
7058
{
title = "Green light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
7059
{
title = "Orange light: Ceiling";
height = 16;
hangs = 1;
color = 15;
}
}
edge_keys
{
color = 13; // Light Magenta
arrow = 0;
title = "EDGE: Keys";
width = 20;
sort = 1;
height = 16;
hangs = 0;
blocking = 0;
7015
{
title = "Green keycard";
sprite = "BKEYA0";
}
7017
{
title = "Green skullkey";
sprite = "BSKUB0";
}
}
edge_armour
{
color = 1; // Blue
arrow = 0;
title = "EDGE: Armour";
width = 20;
sort = 1;
height = 16;
hangs = 0;
blocking = 0;
7031
{
title = "Purple armor";
sprite = "ARM1A0";
}
7032
{
title = "Yellow armor";
sprite = "ARM2A0";
}
7033
{
title = "Red armor";
sprite = "ARM2A0";
}
}
EDGE_monsters
{
color = 12; // Light Red
arrow = 1;
title = "EDGE: Monsters";
width = 20;
sort = 1;
height = 56;
hangs = 0;
blocking = 1;
error = 2;
4050
{
title = "Stealth Arachnotron";
height = 32;
}
4051
{
title = "Stealth Archvile";
height = 32;
}
4052
{
title = "Stealth Baron of Hell";
height = 32;
}
4053
{
title = "Stealth Cacodemon";
height = 32;
}
4054
{
title = "Stealth Heavy weapon dude";
height = 32;
}
4055
{
title = "Stealth Demon";
height = 32;
}
4056
{
title = "Stealth Hell knight";
height = 32;
}
4057
{
title = "Stealth Imp";
height = 32;
}
4058
{
title = "Stealth Mancubus";
height = 32;
}
4059
{
title = "Stealth Revenant";
height = 32;
}
4060
{
title = "Stealth Shotgun Guy";
height = 32;
}
4061
{
title = "Stealth Zombie man";
height = 32;
}
7100
{
title = "EDGE Revenant MKII";
height = 32;
}
7101
{
title = "EDGE Teleport spawner";
height = 32;
}
7102
{
title = "Arachnotron MKII";
height = 32;
}
7103
{
title = "Mancubus MKII";
height = 32;
}
}
edge_powerups
{
color = 9; // Light Blue
arrow = 0;
title = "EDGE: Powerups";
width = 20;
height = 20;
hangs = 0;
blocking = 0;
sort = 1;
7000
{
title = "EDGE Nightvision Specs";
sprite = "NVSCA0";
}
7020
{
title = "EDGE Jetpack";
sprite = "JPCKA0";
}
7005
{
title = "EDGE Stop Time";
sprite = "TSTPB0";
}
}
edge_glowlights
{
color = 11; // Light Cyan
arrow = 0;
title = "EDGE: Sector Light FX";
sprite = "internal:light";
width = 16;
height = 16;
hangs = 0;
blocking = 0;
7041
{
title = "EDGE Nukage Glow: Floor";
color = 10; // Light Green
}
7042
{
title = "EDGE Lava Glow: Floor";
color = 12; // Light Red
}
7043
{
title = "EDGE Water Glow: Floor";
color = 9; // Light Blue
}
7070
{
title = "EDGE Nukage Glow: Wall";
color = 10; // Light Green
}
7071
{
title = "EDGE Lava Glow: Wall";
color = 12; // Light Red
}
7072
{
title = "EDGE Water Glow: Wall";
color = 9; // Light Blue
}
7073
{
title = "EDGE White Glow: Wall";
color = 15; // White
}
}
edge_lights
{
color = 11; // Light Cyan
arrow = 0;
title = "EDGE: Lights";
sprite = "internal:light";
width = 8;
height = 20;
hangs = 0;
blocking = 0;
7044
{
title = "White light: Floor";
height = 32;
color = 15; // White
}
7045
{
title = "Yellow light: Floor";
height = 32;
color = 14; // Yellow
}
7046
{
title = "Red light: Floor";
height = 32;
color = 12; // Light Red
}
7047
{
title = "Blue light: Floor";
height = 32;
color = 9; // Light Blue
}
7048
{
title = "Green light: Floor";
height = 32;
color = 10; // Light Green
}
7049
{
title = "Orange light: Floor";
height = 32;
color = 17; //Orange
}
7054
{
title = "White light: Ceiling";
height = 16;
hangs = 1;
color = 15; // White
}
7055
{
title = "Yellow light: Ceiling";
height = 16;
hangs = 1;
color = 14; // Yellow
}
7056
{
title = "Red light: Ceiling";
height = 16;
hangs = 1;
color = 12; // Light Red
}
7057
{
title = "Blue light: Ceiling";
height = 16;
hangs = 1;
color = 9; // Light Blue
}
7058
{
title = "Green light: Ceiling";
height = 16;
hangs = 1;
color = 10; // Light Green
}
7059
{
title = "Orange light: Ceiling";
height = 16;
hangs = 1;
color = 17; //Orange
}
}
edge_keys
{
color = 13; // Light Magenta
arrow = 0;
title = "EDGE: Keys";
width = 20;
sort = 1;
height = 16;
hangs = 0;
blocking = 0;
7015
{
title = "Green keycard";
sprite = "BKEYA0";
color = 10; // Light Green
}
7017
{
title = "Green skullkey";
sprite = "BSKUB0";
color = 10; // Light Green
}
}
edge_armour
{
color = 1; // Blue
arrow = 0;
title = "EDGE: Armour";
width = 20;
sort = 1;
height = 16;
hangs = 0;
blocking = 0;
7031
{
title = "Purple armor";
sprite = "ARM1A0";
color = 13;
}
7032
{
title = "Yellow armor";
sprite = "ARM2A0";
color = 14; // Yellow
}
7033
{
title = "Red armor";
sprite = "ARM2A0";
color = 12; // Light Red
}
}

View file

@ -388,12 +388,6 @@ mapformat_udmf
include("Eternity_misc.cfg", "thingflags_udmf");
}
// THING RENSERSTYLES
thingrenderstyles
{
include("UDMF_misc.cfg", "thingrenderstyles");
}
// How to compare thing flags (for the stuck things error checker)
thingflagscompare
{

View file

@ -55,16 +55,30 @@ universalfields
type = 2;
default = "";
}
/* FIXME: should I add renderstyle and alpha? */
renderstyle
{
type = 2;
default = "";
}
alpha
{
type = 1;
default = 1.0;
}
tranmap
{
type = 2;
default = "";
managed = false;
}
portal
{
type = 0;
default = 0;
managed = false;
}
}
@ -76,40 +90,16 @@ universalfields
default = "";
}
offsetx_top
light
{
type = 1;
default = 0.0;
type = 0;
default = 0;
}
offsety_bottom
lightabsolute
{
type = 1;
default = 0.0;
}
offsetx_bottom
{
type = 1;
default = 0.0;
}
offsetx_mid
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
offsety_mid
{
type = 1;
default = 0.0;
type = 3;
default = false;
}
light_top
@ -153,6 +143,7 @@ universalfields
type = 16;
enum = "skew_type";
default = "none";
managed = false;
}
skew_middle_type
@ -160,6 +151,7 @@ universalfields
type = 16;
enum = "skew_type";
default = "none";
managed = false;
}
skew_bottom_type
@ -167,6 +159,43 @@ universalfields
type = 16;
enum = "skew_type";
default = "none";
managed = false;
}
offsetx_bottom
{
type = 1;
default = 0.0;
}
offsetx_mid
{
type = 1;
default = 0.0;
}
offsetx_top
{
type = 1;
default = 0.0;
}
offsety_bottom
{
type = 1;
default = 0.0;
}
offsety_mid
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
}
@ -177,6 +206,12 @@ universalfields
type = 2;
default = "";
}
health
{
type = 1;
default = 1.0;
}
}
sector
@ -186,48 +221,133 @@ universalfields
type = 2;
default = "";
}
friction
{
type = 0;
default = -1;
}
/* FIXME: should I add damagetype? Or lightfloor, lightceiling,
floorterain, ceilingterrain, floor/ceiling panning/rotation */
ceilingterrain
{
type = 2;
default = "";
}
floorterrain
{
type = 2;
default = "";
}
soundsequence
{
type = 2;
default = "";
}
lightceiling
{
type = 0;
default = 0;
}
lightceilingabsolute
{
type = 3;
default = false;
}
lightfloor
{
type = 0;
default = 0;
}
lightfloorabsolute
{
type = 3;
default = false;
}
rotationfloor
{
type = 1;
default = 0.0;
}
rotationceiling
{
type = 1;
default = 0.0;
}
damagetype
{
type = 2;
default = "";
}
damageamount
{
type = 0;
default = 0;
}
damageinterval
{
type = 0;
default = 32;
}
leakiness
{
type = 0;
default = 0;
}
colormaptop
{
type = 2;
default = "@default";
}
colormapmid
{
type = 2;
default = "@default";
}
colormapbottom
{
type = 2;
default = "@default";
}
portal_ceil_overlaytype
{
type = 2;
default = "none";
}
alphaceiling
{
type = 1;
default = 1;
default = 1.0;
}
portal_floor_overlaytype
{
type = 2;
default = "none";
}
alphafloor
{
type = 1;
default = 1;
default = 1.0;
}
portalfloor
{
type = 0;
@ -251,6 +371,7 @@ floorterain, ceilingterrain, floor/ceiling panning/rotation */
}
}
}
portalceiling
{
type = 0;
@ -294,6 +415,7 @@ floorterain, ceilingterrain, floor/ceiling panning/rotation */
}
}
}
ceilingid
{
type = 0;
@ -315,6 +437,7 @@ floorterain, ceilingterrain, floor/ceiling panning/rotation */
}
}
}
attachfloor
{
type = 0;
@ -350,6 +473,7 @@ floorterain, ceilingterrain, floor/ceiling panning/rotation */
}
}
}
attachceiling
{
type = 0;
@ -385,35 +509,89 @@ floorterain, ceilingterrain, floor/ceiling panning/rotation */
}
}
}
scroll_ceil_x
{
type = 1;
}
scroll_ceil_y
{
type = 1;
}
scroll_ceil_type
{
type = 2;
default = "none";
tooltip = "Available options: none, visual. Controls whether to scroll the texture. Currently thing transporting is not supported for ceiling scrollers.";
}
scroll_floor_x
{
type = 1;
}
scroll_floor_y
{
type = 1;
}
scroll_floor_type
{
type = 2;
default = "none";
tooltip = "Available options: none, visual, physical or both. Controls whether to scroll the texture and/or transport the things";
}
xpanningceiling
{
type = 1;
default = 0.0;
}
ypanningceiling
{
type = 1;
default = 0.0;
}
xscaleceiling
{
type = 1;
default = 1.0;
}
yscaleceiling
{
type = 1;
default = 1.0;
}
xpanningfloor
{
type = 1;
default = 0.0;
}
xpanningfloor
{
type = 1;
default = 0.0;
}
xscalefloor
{
type = 1;
default = 1.0;
}
yscalefloor
{
type = 1;
default = 1.0;
}
}
}
@ -703,39 +881,39 @@ enums
front_ceiling = "Skew to front-sector ceiling slope";
back_floor = "Skew to back-sector floor slope";
back_ceiling = "Skew to back-sector ceiling slope";
}
}
}
// Default thing filters
// (these are not required, just useful for new users)
thingsfilters_udmf
{
filter0
{
name = "Keys only";
category = "keys";
type = -1;
}
filter1
{
name = "Deathmatch";
category = "";
type = -1;
fields
{
dm = true;
}
}
filter2
{
name = "Cooperative";
category = "";
type = -1;
fields
{
coop = true;
@ -747,55 +925,55 @@ thingsfilters_udmf
name = "Skill 1";
category = "";
type = -1;
fields
{
skill1 = true;
}
}
filter4
{
name = "Skill 2";
category = "";
type = -1;
fields
{
skill2 = true;
}
}
filter5
{
name = "Skill 3";
category = "";
type = -1;
fields
{
skill3 = true;
}
}
filter6
{
name = "Skill 4";
category = "";
type = -1;
fields
{
skill4 = true;
}
}
filter7
{
name = "Skill 5";
category = "";
type = -1;
fields
{
skill5 = true;

View file

@ -298,38 +298,18 @@ universalfields
{
linedef
{
comment
alpha
{
type = 1;
default = 1.0;
}
arg0str
{
type = 2;
default = "";
}
health
{
type = 0;
default = 0;
}
healthgroup
{
type = 0;
default = 0;
}
// Should be moved to flags eventually
damagespecial
{
type = 3;
default = false;
}
// Should be moved to flags eventually
deathspecial
{
type = 3;
default = false;
}
automapstyle
{
type = 11;
@ -351,19 +331,44 @@ universalfields
12 = "Unexplored secret wall";
13 = "Portal line";
}
managed = false;
}
arg0str
comment
{
type = 2;
default = "";
}
alpha
// Should be moved to flags eventually
damagespecial
{
type = 1;
default = 1.0;
type = 3;
default = false;
managed = false;
}
// Should be moved to flags eventually
deathspecial
{
type = 3;
default = false;
managed = false;
}
health
{
type = 0;
default = 0;
managed = false;
}
healthgroup
{
type = 0;
default = 0;
managed = false;
}
locknumber
{
@ -381,25 +386,35 @@ universalfields
{
type = 0;
default = 0;
managed = false;
}
lm_sampledist_top
{
type = 0;
default = 0;
managed = false;
}
lm_sampledist_mid
{
type = 0;
default = 0;
managed = false;
}
lm_sampledist_bot
{
type = 0;
default = 0;
managed = false;
}
renderstyle
{
type = 2;
default = "";
}
}
sidedef
@ -410,88 +425,16 @@ universalfields
default = "";
}
scalex_mid
{
type = 1;
default = 1.0;
}
lightabsolute
{
type = 3;
default = false;
}
offsetx_top
{
type = 1;
default = 0.0;
}
scalex_bottom
{
type = 1;
default = 1.0;
}
offsety_bottom
{
type = 1;
default = 0.0;
}
offsetx_bottom
{
type = 1;
default = 0.0;
}
scaley_bottom
{
type = 1;
default = 1.0;
}
light
{
type = 0;
default = 0;
}
offsetx_mid
lightabsolute
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
scaley_top
{
type = 1;
default = 1.0;
}
scaley_mid
{
type = 1;
default = 1.0;
}
offsety_mid
{
type = 1;
default = 0.0;
}
scalex_top
{
type = 1;
default = 1.0;
type = 3;
default = false;
}
light_top
@ -528,6 +471,78 @@ universalfields
{
type = 3;
default = false;
}
offsetx_bottom
{
type = 1;
default = 0.0;
}
offsetx_mid
{
type = 1;
default = 0.0;
}
offsetx_top
{
type = 1;
default = 0.0;
}
offsety_bottom
{
type = 1;
default = 0.0;
}
offsety_mid
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
scalex_bottom
{
type = 1;
default = 1.0;
}
scalex_mid
{
type = 1;
default = 1.0;
}
scalex_top
{
type = 1;
default = 1.0;
}
scaley_bottom
{
type = 1;
default = 1.0;
}
scaley_mid
{
type = 1;
default = 1.0;
}
scaley_top
{
type = 1;
default = 1.0;
}
lm_sampledist
@ -557,16 +572,194 @@ universalfields
thing
{
alpha
{
type = 1;
default = 1.0;
}
arg0str
{
type = 2;
default = "";
}
class6
{
type = 3;
default = false;
managed = false;
}
class7
{
type = 3;
default = false;
managed = false;
}
class8
{
type = 3;
default = false;
managed = false;
}
class9
{
type = 3;
default = false;
managed = false;
}
class10
{
type = 3;
default = false;
managed = false;
}
class11
{
type = 3;
default = false;
managed = false;
}
class12
{
type = 3;
default = false;
managed = false;
}
class13
{
type = 3;
default = false;
managed = false;
}
class14
{
type = 3;
default = false;
managed = false;
}
class15
{
type = 3;
default = false;
managed = false;
}
class16
{
type = 3;
default = false;
managed = false;
}
comment
{
type = 2;
default = "";
}
conversation
{
type = 0;
default = 0;
}
fillcolor
{
type = 0;
default = 0;
}
floatbobphase
{
type = 0;
default = -1;
}
gravity
{
type = 1;
default = 0.0;
}
health
{
type = 1;
default = 1.0;
}
lm_gridsize
{
type = 1;
default = 32.0;
thingtypespecific = true;
managed = false;
}
lm_sampledistance
{
type = 0;
default = 8;
thingtypespecific = true;
managed = false;
}
lm_suncolor
{
type = 10;
default = 16777215;
thingtypespecific = true;
managed = false;
}
pitch
{
type = 0;
}
renderstyle
{
type = 2;
default = "";
}
roll
{
type = 0;
}
scalex
{
type = 1;
default = 1.0;
}
scaley
{
type = 1;
default = 1.0;
}
score
{
type = 0;
default = 0;
}
skill6
{
type = 3;
default = false;
}
skill7
@ -585,195 +778,57 @@ universalfields
{
type = 3;
default = false;
managed = false;
}
skill10
{
type = 3;
default = false;
managed = false;
}
skill11
{
type = 3;
default = false;
managed = false;
}
skill12
{
type = 3;
default = false;
managed = false;
}
skill13
{
type = 3;
default = false;
managed = false;
}
skill14
{
type = 3;
default = false;
managed = false;
}
skill15
{
type = 3;
default = false;
managed = false;
}
skill16
{
type = 3;
default = false;
managed = false;
}
class6
{
type = 3;
default = false;
}
class7
{
type = 3;
default = false;
}
class8
{
type = 3;
default = false;
}
class9
{
type = 3;
default = false;
}
class10
{
type = 3;
default = false;
}
class11
{
type = 3;
default = false;
}
class12
{
type = 3;
default = false;
}
class13
{
type = 3;
default = false;
}
class14
{
type = 3;
default = false;
}
class15
{
type = 3;
default = false;
}
class16
{
type = 3;
default = false;
}
score
{
type = 0;
default = 0;
}
renderstyle
{
type = 2;
default = "";
}
gravity
{
type = 1;
default = 0.0;
}
floatbobphase
{
type = 0;
default = -1;
}
alpha
{
type = 1;
default = 1.0;
}
health
{
type = 1;
default = 1.0;
}
arg0str
{
type = 2;
default = "";
}
fillcolor
{
type = 0;
default = 0;
}
conversation
{
type = 0;
default = 0;
}
scalex
{
type = 1;
default = 1.0;
}
scaley
{
type = 1;
default = 1.0;
}
lm_suncolor
{
type = 10;
default = 16777215;
thingtypespecific = true;
}
lm_sampledist
{
type = 0;
default = 16;
thingtypespecific = true;
}
}
sector
@ -788,6 +843,7 @@ universalfields
{
type = 0;
default = 0;
managed = false;
}
healthceiling

View file

@ -1483,7 +1483,6 @@
<None Include="Resources\PuzzlePiece.png" />
<None Include="Resources\Search.png" />
<None Include="Resources\SnapVerts.png" />
<EmbeddedResource Include="Resources\UDMF_UI.cfg" />
<None Include="Resources\Unlink.png" />
<None Include="Resources\Unpin.png" />
<None Include="Resources\Pin.png" />

View file

@ -1461,7 +1461,6 @@
<None Include="Resources\PuzzlePiece.png" />
<None Include="Resources\Search.png" />
<None Include="Resources\SnapVerts.png" />
<EmbeddedResource Include="Resources\UDMF_UI.cfg" />
<None Include="Resources\Unlink.png" />
<None Include="Resources\Unpin.png" />
<None Include="Resources\Pin.png" />

View file

@ -1433,7 +1433,58 @@ namespace CodeImp.DoomBuilder.Config
return supported;
}
/// <summary>
/// Checks if a MapElement type has a UDMF field or flag defined.
/// </summary>
/// <typeparam name="T">Type inherited from MapElement</typeparam>
/// <param name="name">Name of the UDMF field or flag</param>
/// <returns>true if the field or flag exists, false if it doesn't</returns>
public bool HasUniversalFieldOrFlag<T>(string name) where T : MapElement
{
Type type = typeof(T);
List<UniversalFieldInfo> ufi;
Dictionary<string, string> flags;
if (type == typeof(Thing))
{
ufi = thingfields;
flags = thingflags;
}
else if (type == typeof(Linedef))
{
ufi = linedeffields;
flags = linedefflags;
}
else if (type == typeof(Sidedef))
{
ufi = sidedeffields;
flags = sidedefflags;
}
else if (type == typeof(Sector))
{
ufi = sectorfields;
flags = sectorflags;
}
else if (type == typeof(Vertex))
{
ufi = vertexfields;
flags = new Dictionary<string, string>(); // Vertices don't have flags
}
else
throw new NotSupportedException("Unsupported MapElement type: " + type.Name);
// Check for regular UDMF fields
if (ufi.Where(f => f.Name == name).FirstOrDefault() != null)
return true;
// Check for flags
if (flags.ContainsKey(name))
return true;
return false;
}
#endregion
}
}

View file

@ -61,6 +61,7 @@ namespace CodeImp.DoomBuilder.Config
private int type;
private object defaultvalue;
private bool thingtypespecific;
private bool managed;
private EnumList enumlist;
private Dictionary<string, UDMFFieldAssociation> associations;
@ -72,6 +73,7 @@ namespace CodeImp.DoomBuilder.Config
public int Type { get { return type; } }
public object Default { get { return defaultvalue; } }
public bool ThingTypeSpecific { get { return thingtypespecific; } }
public bool Managed { get { return managed; } }
public EnumList Enum { get { return enumlist; } }
public Dictionary<string, UDMFFieldAssociation> Associations { get { return associations; } }
@ -92,6 +94,7 @@ namespace CodeImp.DoomBuilder.Config
type = cfg.ReadSetting(setting + ".type", int.MinValue);
defaultvalue = cfg.ReadSettingObject(setting + ".default", null);
thingtypespecific = cfg.ReadSetting(setting + ".thingtypespecific", false);
managed = cfg.ReadSetting(setting + ".managed", true);
// Read enum
object enumsetting = cfg.ReadSettingObject(setting + ".enum", null);

View file

@ -130,8 +130,10 @@ namespace CodeImp.DoomBuilder.Controls
// Add all fields
foreach(UniversalFieldInfo uf in list)
{
if(uifields.ContainsKey(uf.Name)) continue; //mxd
fieldslist.Rows.Add(new FieldsEditorRow(fieldslist, uf));
//if(uifields.ContainsKey(uf.Name)) continue; //mxd
// Only add fields that are not managed by the UI
if(!uf.Managed)
fieldslist.Rows.Add(new FieldsEditorRow(fieldslist, uf));
}
// Sort fields

View file

@ -138,14 +138,6 @@ namespace CodeImp.DoomBuilder.Controls
{
reset.Visible = (cbAbsolute.CheckState != CheckState.Unchecked || light.GetResult(0) != 0);
if (!General.Map.Config.DistinctSidedefPartBrightness)
{
lbLight.Enabled = false;
light.Enabled = false;
cbAbsolute.Enabled = false;
reset.Enabled = false;
}
preventchanges = false;
}

View file

@ -23,6 +23,8 @@ using System.IO;
using CodeImp.DoomBuilder.Map;
using System.Collections;
using CodeImp.DoomBuilder.Types;
using CodeImp.DoomBuilder.Config;
using System.Linq;
#endregion
@ -30,13 +32,6 @@ namespace CodeImp.DoomBuilder.IO
{
internal class UniversalMapSetIO : MapSetIO
{
#region ================== Constants
// Name of the UDMF configuration file
private const string UDMF_UI_CONFIG_NAME = "UDMF_UI.cfg";
#endregion
#region ================== Constructor / Disposer
// Constructor
@ -44,48 +39,19 @@ namespace CodeImp.DoomBuilder.IO
{
if((manager != null) && (manager.Config != null))
{
// Make configuration
Configuration config = new Configuration();
//mxd. Find a resource named UDMF_UI.cfg
string[] resnames = General.ThisAssembly.GetManifestResourceNames();
foreach(string rn in resnames)
// Build the dictionary of UDMF fields that are managed by the UI and should not be shown in the custom UDMF field dialog
foreach ((MapElementType type, List<UniversalFieldInfo> data) in new[] {
(MapElementType.LINEDEF, General.Map.Config.LinedefFields),
(MapElementType.SECTOR, General.Map.Config.SectorFields),
(MapElementType.SIDEDEF, General.Map.Config.SidedefFields),
(MapElementType.THING, General.Map.Config.ThingFields),
(MapElementType.VERTEX, General.Map.Config.VertexFields)
})
{
// Found it?
if(rn.EndsWith(UDMF_UI_CONFIG_NAME, StringComparison.OrdinalIgnoreCase))
{
// Get a stream from the resource
Stream udmfcfg = General.ThisAssembly.GetManifestResourceStream(rn);
StreamReader udmfcfgreader = new StreamReader(udmfcfg, Encoding.ASCII);
// Load configuration from stream
config.InputConfiguration(udmfcfgreader.ReadToEnd());
Dictionary<string, MapElementType> elements = new Dictionary<string, MapElementType>
{
{ "vertex", MapElementType.VERTEX },
{ "linedef", MapElementType.LINEDEF },
{ "sidedef", MapElementType.SIDEDEF },
{ "sector", MapElementType.SECTOR },
{ "thing", MapElementType.THING }
};
uifields[type] = new Dictionary<string, UniversalType>(StringComparer.Ordinal);
foreach(KeyValuePair<string, MapElementType> group in elements)
{
IDictionary dic = config.ReadSetting("uifields." + group.Key, new Hashtable());
Dictionary<string, UniversalType> values = new Dictionary<string, UniversalType>(StringComparer.Ordinal);
foreach(DictionaryEntry de in dic)
{
values.Add(de.Key.ToString(), (UniversalType)de.Value);
}
uifields.Add(group.Value, values);
}
// Done
udmfcfgreader.Dispose();
break;
}
foreach (UniversalFieldInfo ufi in data.Where(o => o.Managed))
uifields[type].Add(ufi.Name, (UniversalType)ufi.Type);
}
}
}

View file

@ -1,118 +0,0 @@
/********************************************************************\
Configuration for UDMF map reader/writer (UniversalMapSetIO)
\********************************************************************/
//mxd. These are the fields, which are managed by GZDoom Builder's UI, but are still stored as UniversalFields. Values are UniversalType. I should turn all of these into properties one day. But not today.
uifields
{
linedef
{
alpha = 1;
renderstyle = 2;
arg0str = 2;
locknumber = 0;
comment = 2;
stringarg0 = 2;
stringarg1 = 2;
executordelay = 0;
}
sidedef
{
scalex_top = 1;
scaley_top = 1;
scalex_mid = 1;
scaley_mid = 1;
scalex_bottom = 1;
scaley_bottom = 1;
offsetx_top = 1;
offsety_top = 1;
offsetx_mid = 1;
offsety_mid = 1;
offsetx_bottom = 1;
offsety_bottom = 1;
light = 0;
lightabsolute = 3;
light_top = 0;
lightabsolute_top = 3;
light_mid = 0;
lightabsolute_mid = 3;
light_bottom = 0;
lightabsolute_bottom = 3;
repeatcnt = 0;
}
sector
{
xpanningfloor = 1;
ypanningfloor = 1;
xpanningceiling = 1;
ypanningceiling = 1;
xscalefloor = 1;
yscalefloor = 1;
xscaleceiling = 1;
yscaleceiling = 1;
rotationfloor = 1;
rotationceiling = 1;
lightfloor = 0;
lightfloorabsolute = 3;
lightceiling = 0;
lightceilingabsolute = 3;
alphafloor = 1;
alphaceiling = 1;
renderstylefloor = 2;
renderstyleceiling = 2;
gravity = 1;
lightcolor = 0;
fadecolor = 0;
desaturation = 1;
soundsequence = 2;
comment = 2;
damageamount = 0;
damagetype = 2;
damageinterval = 0;
leakiness = 0;
floorterrain = 2;
ceilingterrain = 2;
portal_ceil_overlaytype = 2;
portal_floor_overlaytype = 2;
floor_reflect = 1;
ceiling_reflect = 1;
floorglowcolor = 0;
floorglowheight = 1;
ceilingglowcolor = 0;
ceilingglowheight = 1;
fogdensity = 0;
color_ceiling = 0;
color_walltop = 0;
color_sprites = 0;
color_wallbottom = 0;
color_floor = 0;
lightalpha = 0;
fadealpha = 0;
fadestart = 0;
fadeend = 0;
triggertag = 15;
triggerer = 2;
friction = 1;
}
thing
{
arg0str = 2;
conversation = 0;
gravity = 1;
health = 1;
fillcolor = 0;
alpha = 1;
score = 0;
renderstyle = 2;
floatbobphase = 0;
comment = 2;
scalex = 1;
scaley = 1;
scale = 1;
stringarg0 = 2;
stringarg1 = 2;
}
}

View file

@ -193,6 +193,7 @@ namespace CodeImp.DoomBuilder.Windows
label6.Name = "label6";
label6.Size = new System.Drawing.Size(37, 13);
label6.TabIndex = 17;
label6.Tag = "alpha";
label6.Text = "Alpha:";
//
// labelrenderstyle
@ -202,6 +203,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelrenderstyle.Name = "labelrenderstyle";
this.labelrenderstyle.Size = new System.Drawing.Size(69, 13);
this.labelrenderstyle.TabIndex = 11;
this.labelrenderstyle.Tag = "renderstyle";
this.labelrenderstyle.Text = "Render style:";
//
// labellockpick
@ -211,6 +213,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labellockpick.Name = "labellockpick";
this.labellockpick.Size = new System.Drawing.Size(72, 13);
this.labellockpick.TabIndex = 15;
this.labellockpick.Tag = "locknumber";
this.labellockpick.Text = "Lock number:";
//
// labelLightFront
@ -219,7 +222,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelLightFront.Name = "labelLightFront";
this.labelLightFront.Size = new System.Drawing.Size(80, 14);
this.labelLightFront.TabIndex = 25;
this.labelLightFront.Tag = "";
this.labelLightFront.Tag = "light";
this.labelLightFront.Text = "Brightness:";
this.labelLightFront.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -402,6 +405,7 @@ namespace CodeImp.DoomBuilder.Windows
this.resetalpha.Name = "resetalpha";
this.resetalpha.Size = new System.Drawing.Size(23, 23);
this.resetalpha.TabIndex = 70;
this.resetalpha.Tag = "alpha";
this.tooltip.SetToolTip(this.resetalpha, "Reset");
this.resetalpha.UseVisualStyleBackColor = true;
this.resetalpha.Click += new System.EventHandler(this.resetalpha_Click);
@ -413,6 +417,7 @@ namespace CodeImp.DoomBuilder.Windows
this.lockpick.Name = "lockpick";
this.lockpick.Size = new System.Drawing.Size(115, 21);
this.lockpick.TabIndex = 19;
this.lockpick.Tag = "locknumber";
//
// alpha
//
@ -431,6 +436,7 @@ namespace CodeImp.DoomBuilder.Windows
this.alpha.Size = new System.Drawing.Size(65, 24);
this.alpha.StepValues = null;
this.alpha.TabIndex = 18;
this.alpha.Tag = "alpha";
this.alpha.WhenTextChanged += new System.EventHandler(this.alpha_WhenTextChanged);
//
// renderStyle
@ -441,6 +447,7 @@ namespace CodeImp.DoomBuilder.Windows
this.renderStyle.Name = "renderStyle";
this.renderStyle.Size = new System.Drawing.Size(86, 21);
this.renderStyle.TabIndex = 12;
this.renderStyle.Tag = "renderstyle";
this.renderStyle.SelectedIndexChanged += new System.EventHandler(this.cbRenderStyle_SelectedIndexChanged);
//
// activationGroup
@ -576,7 +583,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontScaleBottom.Name = "labelFrontScaleBottom";
this.labelFrontScaleBottom.Size = new System.Drawing.Size(80, 14);
this.labelFrontScaleBottom.TabIndex = 42;
this.labelFrontScaleBottom.Tag = "";
this.labelFrontScaleBottom.Tag = "scalex_bottom";
this.labelFrontScaleBottom.Text = "Lower scale:";
this.labelFrontScaleBottom.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -586,7 +593,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontScaleMid.Name = "labelFrontScaleMid";
this.labelFrontScaleMid.Size = new System.Drawing.Size(80, 14);
this.labelFrontScaleMid.TabIndex = 41;
this.labelFrontScaleMid.Tag = "";
this.labelFrontScaleMid.Tag = "scalex_mid";
this.labelFrontScaleMid.Text = "Middle scale:";
this.labelFrontScaleMid.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -596,7 +603,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontScaleTop.Name = "labelFrontScaleTop";
this.labelFrontScaleTop.Size = new System.Drawing.Size(80, 14);
this.labelFrontScaleTop.TabIndex = 28;
this.labelFrontScaleTop.Tag = "";
this.labelFrontScaleTop.Tag = "scalex_top";
this.labelFrontScaleTop.Text = "Upper scale:";
this.labelFrontScaleTop.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -617,6 +624,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontScaleTop.Name = "pfcFrontScaleTop";
this.pfcFrontScaleTop.Size = new System.Drawing.Size(186, 26);
this.pfcFrontScaleTop.TabIndex = 38;
this.pfcFrontScaleTop.Tag = "scalex_top";
this.pfcFrontScaleTop.OnValuesChanged += new System.EventHandler(this.pfcFrontScaleTop_OnValuesChanged);
//
// pfcFrontScaleBottom
@ -636,6 +644,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontScaleBottom.Name = "pfcFrontScaleBottom";
this.pfcFrontScaleBottom.Size = new System.Drawing.Size(186, 26);
this.pfcFrontScaleBottom.TabIndex = 40;
this.pfcFrontScaleBottom.Tag = "scalex_bottom";
this.pfcFrontScaleBottom.OnValuesChanged += new System.EventHandler(this.pfcFrontScaleBottom_OnValuesChanged);
//
// pfcFrontScaleMid
@ -655,6 +664,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontScaleMid.Name = "pfcFrontScaleMid";
this.pfcFrontScaleMid.Size = new System.Drawing.Size(186, 26);
this.pfcFrontScaleMid.TabIndex = 39;
this.pfcFrontScaleMid.Tag = "scalex_mid";
this.pfcFrontScaleMid.OnValuesChanged += new System.EventHandler(this.pfcFrontScaleMid_OnValuesChanged);
//
// groupBox6
@ -690,7 +700,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontOffsetBottom.Name = "labelFrontOffsetBottom";
this.labelFrontOffsetBottom.Size = new System.Drawing.Size(80, 14);
this.labelFrontOffsetBottom.TabIndex = 45;
this.labelFrontOffsetBottom.Tag = "";
this.labelFrontOffsetBottom.Tag = "offsetx_bottom";
this.labelFrontOffsetBottom.Text = "Lower offset:";
this.labelFrontOffsetBottom.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -713,7 +723,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontOffsetMid.Name = "labelFrontOffsetMid";
this.labelFrontOffsetMid.Size = new System.Drawing.Size(80, 14);
this.labelFrontOffsetMid.TabIndex = 44;
this.labelFrontOffsetMid.Tag = "";
this.labelFrontOffsetMid.Tag = "offsetx_mid";
this.labelFrontOffsetMid.Text = "Middle offset:";
this.labelFrontOffsetMid.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -734,6 +744,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontOffsetTop.Name = "pfcFrontOffsetTop";
this.pfcFrontOffsetTop.Size = new System.Drawing.Size(186, 26);
this.pfcFrontOffsetTop.TabIndex = 35;
this.pfcFrontOffsetTop.Tag = "offsetx_top";
this.pfcFrontOffsetTop.OnValuesChanged += new System.EventHandler(this.pfcFrontOffsetTop_OnValuesChanged);
//
// labelFrontOffsetTop
@ -742,7 +753,7 @@ namespace CodeImp.DoomBuilder.Windows
this.labelFrontOffsetTop.Name = "labelFrontOffsetTop";
this.labelFrontOffsetTop.Size = new System.Drawing.Size(80, 14);
this.labelFrontOffsetTop.TabIndex = 43;
this.labelFrontOffsetTop.Tag = "";
this.labelFrontOffsetTop.Tag = "offsetx_top";
this.labelFrontOffsetTop.Text = "Upper offset:";
this.labelFrontOffsetTop.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
@ -763,6 +774,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontOffsetMid.Name = "pfcFrontOffsetMid";
this.pfcFrontOffsetMid.Size = new System.Drawing.Size(186, 26);
this.pfcFrontOffsetMid.TabIndex = 36;
this.pfcFrontOffsetMid.Tag = "offsetx_mid";
this.pfcFrontOffsetMid.OnValuesChanged += new System.EventHandler(this.pfcFrontOffsetMid_OnValuesChanged);
//
// pfcFrontOffsetBottom
@ -782,6 +794,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontOffsetBottom.Name = "pfcFrontOffsetBottom";
this.pfcFrontOffsetBottom.Size = new System.Drawing.Size(186, 26);
this.pfcFrontOffsetBottom.TabIndex = 37;
this.pfcFrontOffsetBottom.Tag = "offsetx_bottom";
this.pfcFrontOffsetBottom.OnValuesChanged += new System.EventHandler(this.pfcFrontOffsetBottom_OnValuesChanged);
//
// groupBox5
@ -808,6 +821,7 @@ namespace CodeImp.DoomBuilder.Windows
this.lightfrontlower.Name = "lightfrontlower";
this.lightfrontlower.Size = new System.Drawing.Size(262, 29);
this.lightfrontlower.TabIndex = 29;
this.lightfrontlower.Tag = "light_bottom";
//
// lightfrontmiddle
//
@ -815,6 +829,7 @@ namespace CodeImp.DoomBuilder.Windows
this.lightfrontmiddle.Name = "lightfrontmiddle";
this.lightfrontmiddle.Size = new System.Drawing.Size(262, 29);
this.lightfrontmiddle.TabIndex = 29;
this.lightfrontmiddle.Tag = "light_mid";
//
// lightfrontupper
//
@ -822,6 +837,7 @@ namespace CodeImp.DoomBuilder.Windows
this.lightfrontupper.Name = "lightfrontupper";
this.lightfrontupper.Size = new System.Drawing.Size(262, 29);
this.lightfrontupper.TabIndex = 29;
this.lightfrontupper.Tag = "light_top";
//
// resetfrontlight
//
@ -830,6 +846,7 @@ namespace CodeImp.DoomBuilder.Windows
this.resetfrontlight.Name = "resetfrontlight";
this.resetfrontlight.Size = new System.Drawing.Size(23, 23);
this.resetfrontlight.TabIndex = 28;
this.resetfrontlight.Tag = "light";
this.tooltip.SetToolTip(this.resetfrontlight, "Reset Front Brightness");
this.resetfrontlight.UseVisualStyleBackColor = true;
this.resetfrontlight.Click += new System.EventHandler(this.resetfrontlight_Click);
@ -879,7 +896,7 @@ namespace CodeImp.DoomBuilder.Windows
this.lightFront.Size = new System.Drawing.Size(62, 24);
this.lightFront.StepValues = null;
this.lightFront.TabIndex = 26;
this.lightFront.Tag = "";
this.lightFront.Tag = "light";
this.lightFront.WhenTextChanged += new System.EventHandler(this.lightFront_WhenTextChanged);
//
// cbLightAbsoluteFront

View file

@ -19,6 +19,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Controls;
@ -137,8 +138,12 @@ namespace CodeImp.DoomBuilder.Windows
// Initialize
InitializeComponent();
DoUDMFControls(tabproperties, General.Map.Config.LinedefFields);
DoUDMFControls(tabfront, General.Map.Config.SidedefFields);
DoUDMFControls(tabback, General.Map.Config.SidedefFields);
// Widow setup
if(General.Settings.StoreSelectedEditTab)
if (General.Settings.StoreSelectedEditTab)
{
int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0);
@ -179,8 +184,6 @@ namespace CodeImp.DoomBuilder.Windows
lockpick.Items.Add(item);
}
}
lockpick.Enabled = (keynumbers.Count > 0);
labellockpick.Enabled = (keynumbers.Count > 0);
// Initialize image selectors
fronthigh.Initialize();
@ -227,38 +230,6 @@ namespace CodeImp.DoomBuilder.Windows
lightbackupper.Setup(VisualModes.VisualGeometryType.WALL_UPPER);
lightbackmiddle.Setup(VisualModes.VisualGeometryType.WALL_MIDDLE);
lightbacklower.Setup(VisualModes.VisualGeometryType.WALL_LOWER);
// Disable top/mid/bottom texture offset controls?
if (!General.Map.Config.UseLocalSidedefTextureOffsets)
{
pfcFrontOffsetTop.Enabled = false;
pfcFrontOffsetMid.Enabled = false;
pfcFrontOffsetBottom.Enabled = false;
pfcBackOffsetTop.Enabled = false;
pfcBackOffsetMid.Enabled = false;
pfcBackOffsetBottom.Enabled = false;
labelFrontOffsetTop.Enabled = false;
labelFrontOffsetMid.Enabled = false;
labelFrontOffsetBottom.Enabled = false;
labelBackOffsetTop.Enabled = false;
labelBackOffsetMid.Enabled = false;
labelBackOffsetBottom.Enabled = false;
}
// Diable brightness controls?
if(!General.Map.Config.DistinctWallBrightness)
{
lightFront.Enabled = false;
cbLightAbsoluteFront.Enabled = false;
resetfrontlight.Enabled = false;
lightBack.Enabled = false;
cbLightAbsoluteBack.Enabled = false;
resetbacklight.Enabled = false;
}
}
#endregion
@ -707,6 +678,36 @@ namespace CodeImp.DoomBuilder.Windows
OnValuesChanged?.Invoke(this, EventArgs.Empty);
}
/// <summary>
/// Enables or disables controls depending on if their tag is one of the UDMF fields set in the game config.
/// </summary>
/// <param name="control">Control to process</param>
private void DoUDMFControls(Control control, List<UniversalFieldInfo> info)
{
if (control.Tag is string name && !string.IsNullOrWhiteSpace(name))
{
EnableDisableControlAndChildren(control, info.Any(f => f.Name == name));
}
else
{
foreach (Control c in control.Controls)
DoUDMFControls(c, info);
}
}
/// <summary>
/// Enables or disables a control and all its children.
/// </summary>
/// <param name="control">Control the enable or disable</param>
/// <param name="state">If to enable or disable</param>
private void EnableDisableControlAndChildren(Control control, bool state)
{
control.Enabled = state;
foreach (Control c in control.Controls)
EnableDisableControlAndChildren(c, state);
}
#endregion
#region ================== Events

File diff suppressed because it is too large Load diff

View file

@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Geometry;
@ -187,8 +188,14 @@ namespace CodeImp.DoomBuilder.Windows
{
InitializeComponent();
DoUDMFControls(this);
// Plane equation slopes are handled internally instead through the UDMF fields, so they need special attention
EnableDisableControlAndChildren(gbCeilingSLope, General.Map.Config.PlaneEquationSupport);
EnableDisableControlAndChildren(gbFloorSlope, General.Map.Config.PlaneEquationSupport);
//mxd. Load settings
if(General.Settings.StoreSelectedEditTab)
if (General.Settings.StoreSelectedEditTab)
{
int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0);
tabs.SelectTab(activetab);
@ -220,10 +227,6 @@ namespace CodeImp.DoomBuilder.Windows
{
renderstyles = new List<string>();
}
floorRenderStyle.Enabled = (renderstyles.Count > 0);
labelfloorrenderstyle.Enabled = (renderstyles.Count > 0);
ceilRenderStyle.Enabled = (renderstyles.Count > 0);
labelceilrenderstyle.Enabled = (renderstyles.Count > 0);
// Fill renderstyles
foreach(string name in General.Map.Config.SectorRenderStyles.Values)
@ -243,10 +246,6 @@ namespace CodeImp.DoomBuilder.Windows
{
portalrenderstyles = new List<string>();
}
floorportalrenderstyle.Enabled = (portalrenderstyles.Count > 0);
floorportalrenderstylelabel.Enabled = (portalrenderstyles.Count > 0);
ceilportalrenderstyle.Enabled = (portalrenderstyles.Count > 0);
ceilportalrenderstylelabel.Enabled = (portalrenderstyles.Count > 0);
// Fill portal renderstyles
foreach(string name in General.Map.Config.SectorPortalRenderStyles.Values)
@ -838,6 +837,36 @@ namespace CodeImp.DoomBuilder.Windows
}
}
/// <summary>
/// Enables or disables controls depending on if their tag is one of the UDMF fields set in the game config.
/// </summary>
/// <param name="control">Control to process</param>
private void DoUDMFControls(Control control)
{
if (control.Tag is string name && !string.IsNullOrWhiteSpace(name))
{
EnableDisableControlAndChildren(control, General.Map.Config.SectorFields.Any(f => f.Name == name));
}
else
{
foreach (Control c in control.Controls)
DoUDMFControls(c);
}
}
/// <summary>
/// Enables or disables a control and all its children.
/// </summary>
/// <param name="control">Control the enable or disable</param>
/// <param name="state">If to enable or disable</param>
private void EnableDisableControlAndChildren(Control control, bool state)
{
control.Enabled = state;
foreach (Control c in control.Controls)
EnableDisableControlAndChildren(c, state);
}
#endregion
#region ================== Events

View file

@ -165,6 +165,7 @@
this.cbrandomroll.Name = "cbrandomroll";
this.cbrandomroll.Size = new System.Drawing.Size(66, 17);
this.cbrandomroll.TabIndex = 5;
this.cbrandomroll.Tag = "roll";
this.cbrandomroll.Text = "Random";
this.cbrandomroll.UseVisualStyleBackColor = true;
this.cbrandomroll.CheckedChanged += new System.EventHandler(this.cbrandomroll_CheckedChanged);
@ -176,6 +177,7 @@
this.cbrandompitch.Name = "cbrandompitch";
this.cbrandompitch.Size = new System.Drawing.Size(66, 17);
this.cbrandompitch.TabIndex = 3;
this.cbrandompitch.Tag = "pitch";
this.cbrandompitch.Text = "Random";
this.cbrandompitch.UseVisualStyleBackColor = true;
this.cbrandompitch.CheckedChanged += new System.EventHandler(this.cbrandompitch_CheckedChanged);
@ -208,6 +210,7 @@
this.roll.Size = new System.Drawing.Size(60, 24);
this.roll.StepValues = null;
this.roll.TabIndex = 4;
this.roll.Tag = "roll";
this.roll.WhenTextChanged += new System.EventHandler(this.roll_WhenTextChanged);
//
// labelroll
@ -236,6 +239,7 @@
this.pitch.Size = new System.Drawing.Size(60, 24);
this.pitch.StepValues = null;
this.pitch.TabIndex = 2;
this.pitch.Tag = "pitch";
this.pitch.WhenTextChanged += new System.EventHandler(this.pitch_WhenTextChanged);
//
// labelpitch
@ -295,6 +299,7 @@
this.labelGravity.Name = "labelGravity";
this.labelGravity.Size = new System.Drawing.Size(43, 13);
this.labelGravity.TabIndex = 18;
this.labelGravity.Tag = "gravity";
this.labelGravity.Text = "Gravity:";
this.tooltip.SetToolTip(this.labelGravity, "Positive values are multiplied with the class\'s property.\r\nNegative values are us" +
"ed as their absolute.\r\nDefault is 1.0.");
@ -399,6 +404,7 @@
this.rollControl.Name = "rollControl";
this.rollControl.Size = new System.Drawing.Size(64, 64);
this.rollControl.TabIndex = 20;
this.rollControl.Tag = "roll";
this.rollControl.AngleChanged += new System.EventHandler(this.rollControl_AngleChanged);
//
// grouppitch
@ -420,6 +426,7 @@
this.pitchControl.Name = "pitchControl";
this.pitchControl.Size = new System.Drawing.Size(64, 64);
this.pitchControl.TabIndex = 20;
this.pitchControl.Tag = "pitch";
this.pitchControl.AngleChanged += new System.EventHandler(this.pitchControl_AngleChanged);
//
// groupangle
@ -594,6 +601,7 @@
this.floatbobphase.Size = new System.Drawing.Size(72, 24);
this.floatbobphase.StepValues = null;
this.floatbobphase.TabIndex = 4;
this.floatbobphase.Tag = "floatbobphase";
//
// label1
//
@ -602,6 +610,7 @@
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(86, 13);
this.label1.TabIndex = 27;
this.label1.Tag = "floatbobphase";
this.label1.Text = "Float bob phase:";
//
// conversationID
@ -621,6 +630,7 @@
this.conversationID.Size = new System.Drawing.Size(72, 24);
this.conversationID.StepValues = null;
this.conversationID.TabIndex = 3;
this.conversationID.Tag = "conversation";
//
// labelID
//
@ -629,6 +639,7 @@
this.labelID.Name = "labelID";
this.labelID.Size = new System.Drawing.Size(86, 13);
this.labelID.TabIndex = 25;
this.labelID.Tag = "conversation";
this.labelID.Text = "Conversation ID:";
//
// health
@ -648,6 +659,7 @@
this.health.Size = new System.Drawing.Size(72, 24);
this.health.StepValues = null;
this.health.TabIndex = 2;
this.health.Tag = "health";
//
// label10
//
@ -658,6 +670,7 @@
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(41, 13);
this.label10.TabIndex = 22;
this.label10.Tag = "health";
this.label10.Text = "Health:";
this.tooltip.SetToolTip(this.label10, "Positive values are multiplied with the class\'s property.\r\nNegative values are us" +
"ed as their absolute.\r\nDefault is 1.");
@ -679,6 +692,7 @@
this.score.Size = new System.Drawing.Size(72, 24);
this.score.StepValues = null;
this.score.TabIndex = 1;
this.score.Tag = "score";
//
// label9
//
@ -687,6 +701,7 @@
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(38, 13);
this.label9.TabIndex = 20;
this.label9.Tag = "score";
this.label9.Text = "Score:";
//
// gravity
@ -706,6 +721,7 @@
this.gravity.Size = new System.Drawing.Size(72, 24);
this.gravity.StepValues = null;
this.gravity.TabIndex = 0;
this.gravity.Tag = "gravity";
//
// grouprendering
//
@ -731,6 +747,7 @@
this.resetalpha.Name = "resetalpha";
this.resetalpha.Size = new System.Drawing.Size(23, 23);
this.resetalpha.TabIndex = 69;
this.resetalpha.Tag = "alpha";
this.tooltip.SetToolTip(this.resetalpha, "Reset");
this.resetalpha.UseVisualStyleBackColor = true;
this.resetalpha.Click += new System.EventHandler(this.resetalpha_Click);
@ -741,6 +758,7 @@
this.labelScale.Name = "labelScale";
this.labelScale.Size = new System.Drawing.Size(80, 14);
this.labelScale.TabIndex = 32;
this.labelScale.Tag = "scalex";
this.labelScale.Text = "Scale:";
this.labelScale.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
@ -757,6 +775,7 @@
this.scale.Name = "scale";
this.scale.Size = new System.Drawing.Size(186, 26);
this.scale.TabIndex = 0;
this.scale.Tag = "scalex";
this.scale.OnValuesChanged += new System.EventHandler(this.scale_OnValuesChanged);
//
// color
@ -768,6 +787,7 @@
this.color.Name = "color";
this.color.Size = new System.Drawing.Size(207, 31);
this.color.TabIndex = 3;
this.color.Tag = "fillcolor";
//
// alpha
//
@ -786,6 +806,7 @@
this.alpha.Size = new System.Drawing.Size(72, 24);
this.alpha.StepValues = null;
this.alpha.TabIndex = 2;
this.alpha.Tag = "alpha";
this.alpha.WhenTextChanged += new System.EventHandler(this.alpha_WhenTextChanged);
//
// label8
@ -795,6 +816,7 @@
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(37, 13);
this.label8.TabIndex = 25;
this.label8.Tag = "alpha";
this.label8.Text = "Alpha:";
//
// renderStyle
@ -805,6 +827,7 @@
this.renderStyle.Name = "renderStyle";
this.renderStyle.Size = new System.Drawing.Size(156, 21);
this.renderStyle.TabIndex = 1;
this.renderStyle.Tag = "renderstyle";
this.renderStyle.SelectedIndexChanged += new System.EventHandler(this.renderStyle_SelectedIndexChanged);
//
// labelrenderstyle
@ -814,6 +837,7 @@
this.labelrenderstyle.Name = "labelrenderstyle";
this.labelrenderstyle.Size = new System.Drawing.Size(69, 13);
this.labelrenderstyle.TabIndex = 23;
this.labelrenderstyle.Tag = "renderstyle";
this.labelrenderstyle.Text = "Render style:";
//
// actiongroup

View file

@ -97,6 +97,8 @@ namespace CodeImp.DoomBuilder.Windows
// Initialize
InitializeComponent();
DoUDMFControls(this);
//mxd. Load settings
useabsoluteheight = General.Settings.ReadSetting("windows." + configname + ".useabsoluteheight", false);
@ -417,6 +419,37 @@ namespace CodeImp.DoomBuilder.Windows
flagsrename = newflagsrename;
}
/// <summary>
/// Enables or disables controls depending on if their tag is one of the UDMF fields set in the game config.
/// </summary>
/// <param name="control">Control to process</param>
private void DoUDMFControls(Control control)
{
if (control.Tag is string name && !string.IsNullOrWhiteSpace(name))
{
//EnableDisableControlAndChildren(control, General.Map.Config.HasUniversalFieldOrFlag<Thing>(name));
EnableDisableControlAndChildren(control, General.Map.Config.ThingFields.Any(f => f.Name == name));
}
else
{
foreach (Control c in control.Controls)
DoUDMFControls(c);
}
}
/// <summary>
/// Enables or disables a control and all its children.
/// </summary>
/// <param name="control">Control the enable or disable</param>
/// <param name="state">If to enable or disable</param>
private void EnableDisableControlAndChildren(Control control, bool state)
{
control.Enabled = state;
foreach (Control c in control.Controls)
EnableDisableControlAndChildren(c, state);
}
#endregion
#region ================== Events