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)"; game = "EDGE-Classic: Doom 2 (Doom format)";
// This is the simplified game engine/sourceport name // This is the simplified game engine/sourceport name
engine = "edge"; engine = "edge-classic";
// ******************************************************* // Settings common to Doom games
// * * include("Includes\\Game_Doom.cfg");
// * 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 DOOM SETTINGS // STANDARD DOOM SETTINGS
// Settings common to all games and all map formats // 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\\Boom_common.cfg", "mapformat_doom");
include("Includes\\MBF21_common.cfg", "mapformat_doom"); include("Includes\\MBF21_common.cfg", "mapformat_doom");
// Settings common to Doom games // Settings common to all games and all map formats
include("Includes\\Game_Doom.cfg"); 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. // Map name format for Doom 2.
mapnameformat = "MAPxy"; mapnameformat = "MAPxy";
//mxd. No DECORATE support in vanilla
decorategames = "";
// Default thing filters // Default thing filters
// (these are not required, just useful for new users) // (these are not required, just useful for new users)
@ -45,16 +40,6 @@ thingsfilters
include("Includes\\Doom_misc.cfg", "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 // ENUMERATIONS
// Each engine has its own additional thing types // Each engine has its own additional thing types
@ -65,10 +50,5 @@ enums
include("Includes\\Doom_misc.cfg", "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 // Default testing parameters
include("Test_params.cfg", "modern"); include("Test_params.cfg", "modern");
// Default nodebuilder configurations
defaultsavecompiler = "glbsp_normal";
defaulttestcompiler = "glbsp_fast";
// Generalized actions // Generalized actions
// generalizedlinedefs is true for Doom format and false for
// the other two, so it's not here.
generalizedsectors = true; generalizedsectors = true;
generalizedlinedefs = true;
//mxd. Maximum safe map size check (0 means skip check) //mxd. Maximum safe map size check (0 means skip check)
safeboundary = 0; safeboundary = 0;
@ -30,9 +25,52 @@ common
defaultflatscale = 1.0f; defaultflatscale = 1.0f;
scaledtextureoffsets = true; 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 //mxd. Sidedefs compression
// ioanch FIXME: what does this do? I made it false // ioanch FIXME: what does this do? I made it false
sidedefcompressionignoresaction = 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 // Texture sources
textures textures
@ -47,7 +85,6 @@ common
include("EdgeC_misc.cfg", "hires"); include("EdgeC_misc.cfg", "hires");
} }
// Patch sources // Patch sources
patches patches
{ {
@ -71,91 +108,44 @@ common
{ {
include("Boom_misc.cfg", "colormaps"); include("Boom_misc.cfg", "colormaps");
} }
compatibility compatibility
{ {
fixnegativepatchoffsets = true; fixnegativepatchoffsets = true;
fixmaskedpatchoffsets = true; fixmaskedpatchoffsets = true;
} }
}
// GENERALIZED LINEDEF TYPES
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
gen_linedeftypes gen_linedeftypes
{ {
include("Boom_generalized.cfg", "gen_linedeftypes"); include("Boom_generalized.cfg", "gen_linedeftypes");
} }
// GENERALIZED SECTOR TYPES // GENERALIZED SECTOR TYPES
gen_sectortypes gen_sectortypes
{ {
include("Boom_generalized.cfg", "gen_sectortypes"); include("Boom_generalized.cfg", "gen_sectortypes");
} }
// DEFAULT SECTOR BRIGHTNESS LEVELS // Door making
sectorbrightness makedoortrack = "DOORTRAK";
{ makedoordoor = "BIGDOOR2";
include("Doom_misc.cfg", "sectorbrightness"); makedoorceil = "FLAT20";
} makedooraction = 1; // See linedeftypes
// SECTOR TYPES // DEFAULT SECTOR BRIGHTNESS LEVELS
sectortypes sectorbrightness
{
include("Doom_sectors.cfg");
include("EdgeC_sectors.cfg");
}
// LINEDEF FLAGS
linedefflags
{ {
include("Doom_misc.cfg", "linedefflags"); include("Doom_misc.cfg", "sectorbrightness");
include("Boom_misc.cfg", "linedefflags");
} }
// LINEDEF ACTIVATIONS // SECTOR TYPES
linedefactivations 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 // LINEDEF TYPES
linedeftypes linedeftypes
{ {
@ -164,227 +154,21 @@ mapformat_doom
include("EdgeC_linedefs.cfg"); include("EdgeC_linedefs.cfg");
} }
thingtypes thingtypes
{ {
// Basic game actors
include("Doom_things.cfg");
include("Doom2_things.cfg");
include("Boom_things.cfg");
include("EdgeC_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 // Dehacked data
textures dehacked
{ {
include("Doom_misc.cfg", "textures"); include("Dehacked_Doom.cfg");
include("EdgeC_misc.cfg", "textures"); // works for Eternity too
}
//mxd. HiRes sources
hires
{
include("EdgeC_misc.cfg", "hires");
} }
} }
// ***********************************************************
// * *
// * 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 linedefflags
{ {
@ -16,8 +12,6 @@ linedefflagtooltips
} }
// Linedef flags UDMF translation table // Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly // This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted // 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 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 // Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly // 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 // 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. // * Doom map format *
*/ // * *
universalfields // ***********************************************************
mapformat_doom
{ {
linedef // The format interface handles the map data format
formatinterface = "DoomMapSetIO";
maplumpnames
{ {
comment include("Doom_misc.cfg", "doommaplumpnames");
{ include("Boom_misc.cfg", "boommaplumpnames");
type = 2;
default = "";
}
} }
sidedef
{
comment
{
type = 2;
default = "";
}
}
thing
{
comment
{
type = 2;
default = "";
}
}
sector
{
comment
{
type = 2;
default = "";
}
}
}
/* // Enables support for individual offsets of upper/middle/lower sidedef textures
MAP LUMP NAMES localsidedeftextureoffsets = false;
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
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 // Default flags for first new thing
{ defaultthingflags
REJECT
{ {
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; include("UDMF_misc.cfg", "udmfmaplumpnames_begin");
nodebuild = false; include("UDMF_misc.cfg", "udmfmaplumpnames_end");
blindcopy = true; }
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; skill1;
nodebuild = false; skill2;
script = "ZDoom_USDF.cfg"; 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; include("Doom_misc.cfg", "linedefflagstranslation");
nodebuild = true; }
allowempty = false;
}
universalfields
BLOCKMAP
{ {
required = false; linedef
nodebuild = true; {
allowempty = true; comment
} {
type = 2;
REJECT default = "";
{ }
required = false; }
nodebuild = true;
allowempty = true; sidedef
} {
comment
SCRIPTS {
{ type = 2;
required = false; default = "";
nodebuild = false; }
script = "ZDoom_ACS.cfg";
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 enums
{ {
frontback 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"; 29 = "Hub Entry";
20 = "Airless"; 20 = "Airless";
25 = "Lo Grav"; 25 = "Lo Grav";
4418 = "Water Liquid Extrafloor SCROLL/PUSH North"; 4418 = "Water Liquid Extrafloor SCROLL/PUSH North";
4419 = "Water Liquid Extrafloor SCROLL/PUSH North East"; 4419 = "Water Liquid Extrafloor SCROLL/PUSH North East";
4420 = "Water Liquid Extrafloor SCROLL/PUSH East"; 4420 = "Water Liquid Extrafloor SCROLL/PUSH East";
4421 = "Water Liquid Extrafloor SCROLL/PUSH South East"; 4421 = "Water Liquid Extrafloor SCROLL/PUSH South East";
4422 = "Water Liquid Extrafloor SCROLL/PUSH South"; 4422 = "Water Liquid Extrafloor SCROLL/PUSH South";
4423 = "Water Liquid Extrafloor SCROLL/PUSH South West"; 4423 = "Water Liquid Extrafloor SCROLL/PUSH South West";
4424 = "Water Liquid Extrafloor SCROLL/PUSH West"; 4424 = "Water Liquid Extrafloor SCROLL/PUSH West";
4425 = "Water Liquid Extrafloor SCROLL/PUSH North West"; 4425 = "Water Liquid Extrafloor SCROLL/PUSH North West";
4426 = "Slime Liquid Extrafloor SCROLL/PUSH North"; 4426 = "Slime Liquid Extrafloor SCROLL/PUSH North";
4427 = "Slime Liquid Extrafloor SCROLL/PUSH North East"; 4427 = "Slime Liquid Extrafloor SCROLL/PUSH North East";
4428 = "Slime Liquid Extrafloor SCROLL/PUSH East"; 4428 = "Slime Liquid Extrafloor SCROLL/PUSH East";
4429 = "Slime Liquid Extrafloor SCROLL/PUSH South East"; 4429 = "Slime Liquid Extrafloor SCROLL/PUSH South East";
4430 = "Slime Liquid Extrafloor SCROLL/PUSH South"; 4430 = "Slime Liquid Extrafloor SCROLL/PUSH South";
4431 = "Slime Liquid Extrafloor SCROLL/PUSH South West"; 4431 = "Slime Liquid Extrafloor SCROLL/PUSH South West";
4432 = "Slime Liquid Extrafloor SCROLL/PUSH West"; 4432 = "Slime Liquid Extrafloor SCROLL/PUSH West";
4433 = "Slime Liquid Extrafloor SCROLL/PUSH North West"; 4433 = "Slime Liquid Extrafloor SCROLL/PUSH North West";
4434 = "Lava Liquid Extrafloor SCROLL/PUSH North"; 4434 = "Lava Liquid Extrafloor SCROLL/PUSH North";
4435 = "Lava Liquid Extrafloor SCROLL/PUSH North East"; 4435 = "Lava Liquid Extrafloor SCROLL/PUSH North East";
4436 = "Lava Liquid Extrafloor SCROLL/PUSH East"; 4436 = "Lava Liquid Extrafloor SCROLL/PUSH East";
4437 = "Lava Liquid Extrafloor SCROLL/PUSH South East"; 4437 = "Lava Liquid Extrafloor SCROLL/PUSH South East";
4438 = "Lava Liquid Extrafloor SCROLL/PUSH South"; 4438 = "Lava Liquid Extrafloor SCROLL/PUSH South";
4439 = "Lava Liquid Extrafloor SCROLL/PUSH South West"; 4439 = "Lava Liquid Extrafloor SCROLL/PUSH South West";
4440 = "Lava Liquid Extrafloor SCROLL/PUSH West"; 4440 = "Lava Liquid Extrafloor SCROLL/PUSH West";
4441 = "Lava Liquid Extrafloor SCROLL/PUSH North West"; 4441 = "Lava Liquid Extrafloor SCROLL/PUSH North West";
4442 = "Push North"; 4442 = "Push North";
4443 = "Push North East"; 4443 = "Push North East";
4444 = "Push East"; 4444 = "Push East";
4445 = "Push South East"; 4445 = "Push South East";
4446 = "Push South"; 4446 = "Push South";
4447 = "Push South West"; 4447 = "Push South West";
4448 = "Push West"; 4448 = "Push West";
4449 = "Push North West"; 4449 = "Push North West";
4450 = "Scroll Floor Texture North"; 4450 = "Scroll Floor Texture North";
4451 = "Scroll Floor Texture North East"; 4451 = "Scroll Floor Texture North East";
4452 = "Scroll Floor Texture East"; 4452 = "Scroll Floor Texture East";
4453 = "Scroll Floor Texture South East"; 4453 = "Scroll Floor Texture South East";
4454 = "Scroll Floor Texture South"; 4454 = "Scroll Floor Texture South";
4455 = "Scroll Floor Texture South West"; 4455 = "Scroll Floor Texture South West";
4456 = "Scroll Floor Texture West"; 4456 = "Scroll Floor Texture West";
4457 = "Scroll Floor Texture North West"; 4457 = "Scroll Floor Texture North West";
4458 = "Scroll Floor Texture/Push North"; 4458 = "Scroll Floor Texture/Push North";
4459 = "Scroll Floor Texture/Push North East"; 4459 = "Scroll Floor Texture/Push North East";
4460 = "Scroll Floor Texture/Push East"; 4460 = "Scroll Floor Texture/Push East";
4461 = "Scroll Floor Texture/Push South East"; 4461 = "Scroll Floor Texture/Push South East";
4462 = "Scroll Floor Texture/Push South"; 4462 = "Scroll Floor Texture/Push South";
4463 = "Scroll Floor Texture/Push South West"; 4463 = "Scroll Floor Texture/Push South West";
4464 = "Scroll Floor Texture/Push West"; 4464 = "Scroll Floor Texture/Push West";
4465 = "Scroll Floor Texture/Push North West"; 4465 = "Scroll Floor Texture/Push North West";
4466 = "Blue Hue (Swimmable)"; 4466 = "Blue Hue (Swimmable)";
4467 = "Green Hue (Swimmable)"; 4467 = "Green Hue (Swimmable)";
4468 = "Green Hue + Damage (Swimmable)"; 4468 = "Green Hue + Damage (Swimmable)";
4469 = "Red Hue (Swimmable)"; 4469 = "Red Hue (Swimmable)";
4470 = "Red Hue + Damage (Swimmable)"; 4470 = "Red Hue + Damage (Swimmable)";
4471 = "Blue Hue"; 4471 = "Blue Hue";
4472 = "Green Hue"; 4472 = "Green Hue";
4473 = "Red Hue"; 4473 = "Red Hue";
4474 = "Yellow Hue"; 4474 = "Yellow Hue";
4475 = "Purple Hue"; 4475 = "Purple Hue";
4476 = "Grey 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 EDGE_monsters
{ {
color = 12; // Light Red color = 12; // Light Red
arrow = 1; arrow = 1;
title = "Edge: Monsters"; title = "EDGE: Monsters";
width = 20; width = 20;
sort = 1; sort = 1;
height = 56; height = 56;
hangs = 0; hangs = 0;
blocking = 1; blocking = 1;
error = 2; error = 2;
4050 4050
{ {
title = "Stealth Arachnotron"; title = "Stealth Arachnotron";
height = 32; height = 32;
} }
4051 4051
{ {
title = "Stealth Archvile"; title = "Stealth Archvile";
height = 32; height = 32;
} }
4052 4052
{ {
title = "Stealth Baron of Hell"; title = "Stealth Baron of Hell";
height = 32; height = 32;
} }
4053 4053
{ {
title = "Stealth Cacodemon"; title = "Stealth Cacodemon";
height = 32; height = 32;
} }
4054 4054
{ {
title = "Stealth Heavy weapon dude"; title = "Stealth Heavy weapon dude";
height = 32; height = 32;
} }
4055 4055
{ {
title = "Stealth Demon"; title = "Stealth Demon";
height = 32; height = 32;
} }
4056 4056
{ {
title = "Stealth Hell knight"; title = "Stealth Hell knight";
height = 32; height = 32;
} }
4057 4057
{ {
title = "Stealth Imp"; title = "Stealth Imp";
height = 32; height = 32;
} }
4058 4058
{ {
title = "Stealth Mancubus"; title = "Stealth Mancubus";
height = 32; height = 32;
} }
4059 4059
{ {
title = "Stealth Revenant"; title = "Stealth Revenant";
height = 32; height = 32;
} }
4060 4060
{ {
title = "Stealth Shotgun Guy"; title = "Stealth Shotgun Guy";
height = 32; height = 32;
} }
4061 4061
{ {
title = "Stealth Zombie man"; title = "Stealth Zombie man";
height = 32; height = 32;
} }
7100 7100
{ {
title = "EDGE Revenant MKII"; title = "EDGE Revenant MKII";
height = 32; height = 32;
} }
7101 7101
{ {
title = "EDGE Teleport spawner"; title = "EDGE Teleport spawner";
height = 32; height = 32;
} }
7102 7102
{ {
title = "Arachnotron MKII"; title = "Arachnotron MKII";
height = 32; height = 32;
} }
7103 7103
{ {
title = "Mancubus MKII"; title = "Mancubus MKII";
height = 32; height = 32;
} }
} }
edge_powerups edge_powerups
{ {
color = 9; // Light Blue color = 9; // Light Blue
arrow = 0; arrow = 0;
title = "EDGE: Powerups"; title = "EDGE: Powerups";
width = 20; width = 20;
height = 20; height = 20;
hangs = 0; hangs = 0;
blocking = 0; blocking = 0;
sort = 1; sort = 1;
7000 7000
{ {
title = "EDGE Nightvision Specs"; title = "EDGE Nightvision Specs";
sprite = "NVSCA0"; sprite = "NVSCA0";
} }
7020 7020
{ {
title = "EDGE Jetpack"; title = "EDGE Jetpack";
sprite = "JPCKA0"; sprite = "JPCKA0";
} }
7005 7005
{ {
title = "EDGE Stop Time"; title = "EDGE Stop Time";
sprite = "TSTPB0"; sprite = "TSTPB0";
} }
} }
edge_glowlights edge_glowlights
{ {
color = 9; // Light Blue color = 11; // Light Cyan
arrow = 0; arrow = 0;
title = "EDGE: Sector Light FX"; title = "EDGE: Sector Light FX";
sprite = "internal:light"; sprite = "internal:light";
width = 20; width = 16;
height = 20; height = 16;
hangs = 0; hangs = 0;
blocking = 0; blocking = 0;
7041 7041
{ {
title = "EDGE Nukage Glow"; title = "EDGE Nukage Glow: Floor";
height = 32; color = 10; // Light Green
} }
7042 7042
{ {
title = "EDGE Lava Glow"; title = "EDGE Lava Glow: Floor";
height = 32; color = 12; // Light Red
} }
7043 7043
{ {
title = "EDGE Water Glow"; title = "EDGE Water Glow: Floor";
height = 32; color = 9; // Light Blue
} }
}
7070
edge_lights {
{ title = "EDGE Nukage Glow: Wall";
color = 9; // Light Blue color = 10; // Light Green
arrow = 0; }
title = "EDGE: Lights";
sprite = "internal:light"; 7071
width = 8; {
height = 20; title = "EDGE Lava Glow: Wall";
hangs = 0; color = 12; // Light Red
blocking = 0; }
7044 7072
{ {
title = "White light: Floor"; title = "EDGE Water Glow: Wall";
height = 32; color = 9; // Light Blue
color = 15; }
}
7073
7045 {
{ title = "EDGE White Glow: Wall";
title = "Yellow light: Floor"; color = 15; // White
height = 32; }
color = 15; }
}
edge_lights
7046 {
{ color = 11; // Light Cyan
title = "Red light: Floor"; arrow = 0;
height = 32; title = "EDGE: Lights";
color = 15; sprite = "internal:light";
} width = 8;
height = 20;
7047 hangs = 0;
{ blocking = 0;
title = "Blue light: Floor";
height = 32; 7044
color = 15; {
} title = "White light: Floor";
height = 32;
7048 color = 15; // White
{ }
title = "Green light: Floor";
height = 32; 7045
color = 15; {
} title = "Yellow light: Floor";
height = 32;
7049 color = 14; // Yellow
{ }
title = "Orange light: Floor";
height = 32; 7046
color = 15; {
} title = "Red light: Floor";
height = 32;
7054 color = 12; // Light Red
{ }
title = "White light: Ceiling";
height = 16; 7047
hangs = 1; {
color = 15; title = "Blue light: Floor";
} height = 32;
color = 9; // Light Blue
7055 }
{
title = "Yellow light: Ceiling"; 7048
height = 16; {
hangs = 1; title = "Green light: Floor";
color = 15; height = 32;
} color = 10; // Light Green
}
7056
{ 7049
title = "Red light: Ceiling"; {
height = 16; title = "Orange light: Floor";
hangs = 1; height = 32;
color = 15; color = 17; //Orange
} }
7057 7054
{ {
title = "Blue light: Ceiling"; title = "White light: Ceiling";
height = 16; height = 16;
hangs = 1; hangs = 1;
color = 15; color = 15; // White
} }
7058 7055
{ {
title = "Green light: Ceiling"; title = "Yellow light: Ceiling";
height = 16; height = 16;
hangs = 1; hangs = 1;
color = 15; color = 14; // Yellow
} }
7059 7056
{ {
title = "Orange light: Ceiling"; title = "Red light: Ceiling";
height = 16; height = 16;
hangs = 1; hangs = 1;
color = 15; color = 12; // Light Red
} }
} 7057
{
title = "Blue light: Ceiling";
height = 16;
edge_keys hangs = 1;
{ color = 9; // Light Blue
color = 13; // Light Magenta }
arrow = 0;
title = "EDGE: Keys"; 7058
width = 20; {
sort = 1; title = "Green light: Ceiling";
height = 16; height = 16;
hangs = 0; hangs = 1;
blocking = 0; color = 10; // Light Green
}
7015
{ 7059
title = "Green keycard"; {
sprite = "BKEYA0"; title = "Orange light: Ceiling";
} height = 16;
7017 hangs = 1;
{ color = 17; //Orange
title = "Green skullkey"; }
sprite = "BSKUB0";
} }
}
edge_armour
{ edge_keys
color = 1; // Blue {
arrow = 0; color = 13; // Light Magenta
title = "EDGE: Armour"; arrow = 0;
width = 20; title = "EDGE: Keys";
sort = 1; width = 20;
height = 16; sort = 1;
hangs = 0; height = 16;
blocking = 0; hangs = 0;
blocking = 0;
7031
{ 7015
title = "Purple armor"; {
sprite = "ARM1A0"; title = "Green keycard";
} sprite = "BKEYA0";
7032 color = 10; // Light Green
{ }
title = "Yellow armor"; 7017
sprite = "ARM2A0"; {
} title = "Green skullkey";
7033 sprite = "BSKUB0";
{ color = 10; // Light Green
title = "Red armor"; }
sprite = "ARM2A0"; }
}
} 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"); 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) // How to compare thing flags (for the stuck things error checker)
thingflagscompare thingflagscompare
{ {

View file

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

View file

@ -298,38 +298,18 @@ universalfields
{ {
linedef linedef
{ {
comment alpha
{
type = 1;
default = 1.0;
}
arg0str
{ {
type = 2; type = 2;
default = ""; 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 automapstyle
{ {
type = 11; type = 11;
@ -351,19 +331,44 @@ universalfields
12 = "Unexplored secret wall"; 12 = "Unexplored secret wall";
13 = "Portal line"; 13 = "Portal line";
} }
managed = false;
} }
arg0str comment
{ {
type = 2; type = 2;
default = ""; default = "";
} }
alpha // Should be moved to flags eventually
damagespecial
{ {
type = 1; type = 3;
default = 1.0; 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 locknumber
{ {
@ -381,25 +386,35 @@ universalfields
{ {
type = 0; type = 0;
default = 0; default = 0;
managed = false;
} }
lm_sampledist_top lm_sampledist_top
{ {
type = 0; type = 0;
default = 0; default = 0;
managed = false;
} }
lm_sampledist_mid lm_sampledist_mid
{ {
type = 0; type = 0;
default = 0; default = 0;
managed = false;
} }
lm_sampledist_bot lm_sampledist_bot
{ {
type = 0; type = 0;
default = 0; default = 0;
managed = false;
} }
renderstyle
{
type = 2;
default = "";
}
} }
sidedef sidedef
@ -410,88 +425,16 @@ universalfields
default = ""; 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 light
{ {
type = 0; type = 0;
default = 0; default = 0;
} }
offsetx_mid lightabsolute
{ {
type = 1; type = 3;
default = 0.0; default = false;
}
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;
} }
light_top light_top
@ -528,6 +471,78 @@ universalfields
{ {
type = 3; type = 3;
default = false; 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 lm_sampledist
@ -557,16 +572,194 @@ universalfields
thing 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 comment
{ {
type = 2; type = 2;
default = ""; 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 skill6
{ {
type = 3; type = 3;
default = false; default = false;
} }
skill7 skill7
@ -585,195 +778,57 @@ universalfields
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill10 skill10
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill11 skill11
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill12 skill12
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill13 skill13
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill14 skill14
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill15 skill15
{ {
type = 3; type = 3;
default = false; default = false;
managed = false;
} }
skill16 skill16
{ {
type = 3; type = 3;
default = false; 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 sector
@ -788,6 +843,7 @@ universalfields
{ {
type = 0; type = 0;
default = 0; default = 0;
managed = false;
} }
healthceiling healthceiling

View file

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

View file

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

View file

@ -1433,7 +1433,58 @@ namespace CodeImp.DoomBuilder.Config
return supported; 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 #endregion
} }
} }

View file

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

View file

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

View file

@ -138,14 +138,6 @@ namespace CodeImp.DoomBuilder.Controls
{ {
reset.Visible = (cbAbsolute.CheckState != CheckState.Unchecked || light.GetResult(0) != 0); 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; preventchanges = false;
} }

View file

@ -23,6 +23,8 @@ using System.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using System.Collections; using System.Collections;
using CodeImp.DoomBuilder.Types; using CodeImp.DoomBuilder.Types;
using CodeImp.DoomBuilder.Config;
using System.Linq;
#endregion #endregion
@ -30,13 +32,6 @@ namespace CodeImp.DoomBuilder.IO
{ {
internal class UniversalMapSetIO : MapSetIO 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 #region ================== Constructor / Disposer
// Constructor // Constructor
@ -44,48 +39,19 @@ namespace CodeImp.DoomBuilder.IO
{ {
if((manager != null) && (manager.Config != null)) if((manager != null) && (manager.Config != null))
{ {
// Make configuration // Build the dictionary of UDMF fields that are managed by the UI and should not be shown in the custom UDMF field dialog
Configuration config = new Configuration(); foreach ((MapElementType type, List<UniversalFieldInfo> data) in new[] {
(MapElementType.LINEDEF, General.Map.Config.LinedefFields),
//mxd. Find a resource named UDMF_UI.cfg (MapElementType.SECTOR, General.Map.Config.SectorFields),
string[] resnames = General.ThisAssembly.GetManifestResourceNames(); (MapElementType.SIDEDEF, General.Map.Config.SidedefFields),
foreach(string rn in resnames) (MapElementType.THING, General.Map.Config.ThingFields),
(MapElementType.VERTEX, General.Map.Config.VertexFields)
})
{ {
// Found it? uifields[type] = new Dictionary<string, UniversalType>(StringComparer.Ordinal);
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 }
};
foreach(KeyValuePair<string, MapElementType> group in elements) foreach (UniversalFieldInfo ufi in data.Where(o => o.Managed))
{ uifields[type].Add(ufi.Name, (UniversalType)ufi.Type);
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;
}
} }
} }
} }

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

View file

@ -19,6 +19,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.Controls;
@ -137,8 +138,12 @@ namespace CodeImp.DoomBuilder.Windows
// Initialize // Initialize
InitializeComponent(); InitializeComponent();
DoUDMFControls(tabproperties, General.Map.Config.LinedefFields);
DoUDMFControls(tabfront, General.Map.Config.SidedefFields);
DoUDMFControls(tabback, General.Map.Config.SidedefFields);
// Widow setup // Widow setup
if(General.Settings.StoreSelectedEditTab) if (General.Settings.StoreSelectedEditTab)
{ {
int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0); int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0);
@ -179,8 +184,6 @@ namespace CodeImp.DoomBuilder.Windows
lockpick.Items.Add(item); lockpick.Items.Add(item);
} }
} }
lockpick.Enabled = (keynumbers.Count > 0);
labellockpick.Enabled = (keynumbers.Count > 0);
// Initialize image selectors // Initialize image selectors
fronthigh.Initialize(); fronthigh.Initialize();
@ -227,38 +230,6 @@ namespace CodeImp.DoomBuilder.Windows
lightbackupper.Setup(VisualModes.VisualGeometryType.WALL_UPPER); lightbackupper.Setup(VisualModes.VisualGeometryType.WALL_UPPER);
lightbackmiddle.Setup(VisualModes.VisualGeometryType.WALL_MIDDLE); lightbackmiddle.Setup(VisualModes.VisualGeometryType.WALL_MIDDLE);
lightbacklower.Setup(VisualModes.VisualGeometryType.WALL_LOWER); 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 #endregion
@ -707,6 +678,36 @@ namespace CodeImp.DoomBuilder.Windows
OnValuesChanged?.Invoke(this, EventArgs.Empty); 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 #endregion
#region ================== Events #region ================== Events

File diff suppressed because it is too large Load diff

View file

@ -2,6 +2,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
@ -187,8 +188,14 @@ namespace CodeImp.DoomBuilder.Windows
{ {
InitializeComponent(); 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 //mxd. Load settings
if(General.Settings.StoreSelectedEditTab) if (General.Settings.StoreSelectedEditTab)
{ {
int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0); int activetab = General.Settings.ReadSetting("windows." + configname + ".activetab", 0);
tabs.SelectTab(activetab); tabs.SelectTab(activetab);
@ -220,10 +227,6 @@ namespace CodeImp.DoomBuilder.Windows
{ {
renderstyles = new List<string>(); 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 // Fill renderstyles
foreach(string name in General.Map.Config.SectorRenderStyles.Values) foreach(string name in General.Map.Config.SectorRenderStyles.Values)
@ -243,10 +246,6 @@ namespace CodeImp.DoomBuilder.Windows
{ {
portalrenderstyles = new List<string>(); 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 // Fill portal renderstyles
foreach(string name in General.Map.Config.SectorPortalRenderStyles.Values) 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 #endregion
#region ================== Events #region ================== Events

View file

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

View file

@ -97,6 +97,8 @@ namespace CodeImp.DoomBuilder.Windows
// Initialize // Initialize
InitializeComponent(); InitializeComponent();
DoUDMFControls(this);
//mxd. Load settings //mxd. Load settings
useabsoluteheight = General.Settings.ReadSetting("windows." + configname + ".useabsoluteheight", false); useabsoluteheight = General.Settings.ReadSetting("windows." + configname + ".useabsoluteheight", false);
@ -417,6 +419,37 @@ namespace CodeImp.DoomBuilder.Windows
flagsrename = newflagsrename; 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 #endregion
#region ================== Events #region ================== Events