From 9e33599536574c096e1e9dae9bbc2300e6bc7986 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 12 Jan 2016 09:13:55 +0100 Subject: [PATCH] - at least get the terms being used right. Of course it's not EDF (which would way beyond the scope of what's intended here) but only Extradata, that's being supported. (For EDF an external converter would make more sense.) --- src/CMakeLists.txt | 2 +- src/{edf.cpp => edata.cpp} | 110 ++++++++++++++++---------------- src/edata.h | 12 ++++ src/p_lnspec.h | 4 +- src/p_setup.cpp | 20 +++--- src/p_spec.cpp | 8 +-- wadsrc/static/xlat/eternity.txt | 8 +-- 7 files changed, 88 insertions(+), 76 deletions(-) rename src/{edf.cpp => edata.cpp} (90%) create mode 100644 src/edata.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 83dd1ce13..b269e677b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -944,7 +944,7 @@ add_executable( zdoom WIN32 MACOSX_BUNDLE doomstat.cpp dsectoreffect.cpp dthinker.cpp - edf.cpp + edata.cpp f_wipe.cpp farchive.cpp files.cpp diff --git a/src/edf.cpp b/src/edata.cpp similarity index 90% rename from src/edf.cpp rename to src/edata.cpp index 50ac2835c..13e986425 100644 --- a/src/edf.cpp +++ b/src/edata.cpp @@ -1,6 +1,6 @@ /* -** edf.cpp -** Parses Eternity EDF lumps +** edata.cpp +** Parses Eternity Extradata lumps ** **--------------------------------------------------------------------------- ** Copyright 2015 Christoph Oelckers @@ -51,43 +51,43 @@ #include "r_data/colormaps.h" -struct FEdfOptions : public FOptionalMapinfoData +struct FEDOptions : public FOptionalMapinfoData { - FEdfOptions() + FEDOptions() { - identifier = "EDF"; + identifier = "EData"; } virtual FOptionalMapinfoData *Clone() const { - FEdfOptions *newopt = new FEdfOptions; + FEDOptions *newopt = new FEDOptions; newopt->identifier = identifier; - newopt->edfName = edfName; + newopt->EDName = EDName; newopt->acsName = acsName; return newopt; } - FString edfName; + FString EDName; FString acsName; }; -DEFINE_MAP_OPTION(edf, false) +DEFINE_MAP_OPTION(edata, false) { - FEdfOptions *opt = info->GetOptData("EDF"); + FEDOptions *opt = info->GetOptData("EData"); parse.ParseAssign(); parse.sc.MustGetString(); - opt->edfName = parse.sc.String; + opt->EDName = parse.sc.String; } DEFINE_MAP_OPTION(loadacs, false) { - FEdfOptions *opt = info->GetOptData("EDF"); + FEDOptions *opt = info->GetOptData("EData"); parse.ParseAssign(); parse.sc.MustGetString(); opt->acsName = parse.sc.String; } -struct EDFMapthing +struct EDMapthing { int recordnum; int tid; @@ -98,7 +98,7 @@ struct EDFMapthing DWORD flags; }; -struct EDFLinedef +struct EDLinedef { int recordnum; int special; @@ -112,7 +112,7 @@ struct EDFLinedef -struct EDFSector +struct EDSector { int recordnum; @@ -146,15 +146,15 @@ struct EDFSector fixed_t overlayalpha[2]; }; -static FString EDFMap; -static TMap EDFLines; -static TMap EDFSectors; -static TMap EDFThings; +static FString EDMap; +static TMap EDLines; +static TMap EDSectors; +static TMap EDThings; static void parseLinedef(FScanner &sc) { - EDFLinedef ld; + EDLinedef ld; bool argsset = false; memset(&ld, 0, sizeof(ld)); @@ -267,12 +267,12 @@ static void parseLinedef(FScanner &sc) ld.flags = (ld.flags & ~(ML_REPEAT_SPECIAL | ML_FIRSTSIDEONLY)) | (line.flags & (ML_REPEAT_SPECIAL | ML_FIRSTSIDEONLY)); if (!argsset) memcpy(ld.args, line.args, sizeof(ld.args)); } - EDFLines[ld.recordnum] = ld; + EDLines[ld.recordnum] = ld; } static void parseSector(FScanner &sc) { - EDFSector sec; + EDSector sec; memset(&sec, 0, sizeof(sec)); sec.overlayalpha[sector_t::floor] = sec.overlayalpha[sector_t::ceiling] = FRACUNIT; @@ -499,15 +499,15 @@ static void parseSector(FScanner &sc) sc.ScriptError("Unknown property '%s'", sc.String); } } - EDFSectors[sec.recordnum] = sec; + EDSectors[sec.recordnum] = sec; } static void parseMapthing(FScanner &sc) { - EDFMapthing mt; + EDMapthing mt; memset(&mt, 0, sizeof(mt)); - mt.flags |= MTF_SINGLE | MTF_COOPERATIVE | MTF_DEATHMATCH; // EDF uses inverse logic, like Doom.exe + mt.flags |= MTF_SINGLE | MTF_COOPERATIVE | MTF_DEATHMATCH; // Extradata uses inverse logic, like Doom.exe sc.MustGetStringName("{"); while (!sc.CheckString("}")) @@ -607,30 +607,30 @@ static void parseMapthing(FScanner &sc) sc.ScriptError("Unknown property '%s'", sc.String); } } - EDFThings[mt.recordnum] = mt; + EDThings[mt.recordnum] = mt; } -void InitEDF() +void InitED() { FString filename; FScanner sc; - if (EDFMap.CompareNoCase(level.MapName) != 0) + if (EDMap.CompareNoCase(level.MapName) != 0) { - EDFLines.Clear(); - EDFSectors.Clear(); - EDFThings.Clear(); - EDFMap = level.MapName; + EDLines.Clear(); + EDSectors.Clear(); + EDThings.Clear(); + EDMap = level.MapName; const char *arg = Args->CheckValue("-edf"); if (arg != NULL) filename = arg; else { - FEdfOptions *opt = level.info->GetOptData("EDF", false); + FEDOptions *opt = level.info->GetOptData("EData", false); if (opt != NULL) { - filename = opt->edfName; + filename = opt->EDName; } } @@ -662,11 +662,11 @@ void InitEDF() } } -void ProcessEDFMapthing(FMapThing *mt, int recordnum) +void ProcessEDMapthing(FMapThing *mt, int recordnum) { - InitEDF(); + InitED(); - EDFMapthing *emt = EDFThings.CheckKey(recordnum); + EDMapthing *emt = EDThings.CheckKey(recordnum); if (emt == NULL) { Printf("EDF Mapthing record %d not found\n", recordnum); @@ -682,11 +682,11 @@ void ProcessEDFMapthing(FMapThing *mt, int recordnum) mt->flags = emt->flags; } -void ProcessEDFLinedef(line_t *ld, int recordnum) +void ProcessEDLinedef(line_t *ld, int recordnum) { - InitEDF(); + InitED(); - EDFLinedef *eld = EDFLines.CheckKey(recordnum); + EDLinedef *eld = EDLines.CheckKey(recordnum); if (eld == NULL) { Printf("EDF Linedef record %d not found\n", recordnum); @@ -702,9 +702,9 @@ void ProcessEDFLinedef(line_t *ld, int recordnum) tagManager.AddLineID(int(ld - lines), eld->tag); } -void ProcessEDFSector(sector_t *sec, int recordnum) +void ProcessEDSector(sector_t *sec, int recordnum) { - EDFSector *esec = EDFSectors.CheckKey(recordnum); + EDSector *esec = EDSectors.CheckKey(recordnum); if (esec == NULL) { Printf("EDF Sector record %d not found\n", recordnum); @@ -722,7 +722,7 @@ void ProcessEDFSector(sector_t *sec, int recordnum) sec->Flags = (sec->Flags | esec->damageflags | esec->damageflagsAdd) & ~esec->damageflagsRemove; leak = (leak | esec->leaky | esec->leakyadd) & ~esec->leakyremove; - // the damage properties will be unconditionally overridden by EDF. + // the damage properties will be unconditionally overridden by Extradata. sec->leakydamage = leak == 0 ? 0 : leak == 1 ? 5 : 256; sec->damageamount = esec->damageamount; sec->damageinterval = esec->damageinterval; @@ -745,37 +745,37 @@ void ProcessEDFSector(sector_t *sec, int recordnum) } -void ProcessEDFSectors() +void ProcessEDSectors() { int i; - InitEDF(); - if (EDFSectors.CountUsed() == 0) return; // don't waste time if there's no records. + InitED(); + if (EDSectors.CountUsed() == 0) return; // don't waste time if there's no records. - // collect all EDF sector records up front so we do not need to search the complete line array for each sector separately. - int *edfsectorrecord = new int[numsectors]; - memset(edfsectorrecord, -1, numsectors * sizeof(int)); + // collect all Extradata sector records up front so we do not need to search the complete line array for each sector separately. + int *sectorrecord = new int[numsectors]; + memset(sectorrecord, -1, numsectors * sizeof(int)); for (i = 0; i < numlines; i++) { - if (lines[i].special == Static_Init && lines[i].args[1] == Init_EDFSector) + if (lines[i].special == Static_Init && lines[i].args[1] == Init_EDSector) { - edfsectorrecord[lines[i].frontsector - sectors] = lines[i].args[0]; + sectorrecord[lines[i].frontsector - sectors] = lines[i].args[0]; lines[i].special = 0; } } for (i = 0; i < numsectors; i++) { - if (edfsectorrecord[i] >= 0) + if (sectorrecord[i] >= 0) { - ProcessEDFSector(§ors[i], edfsectorrecord[i]); + ProcessEDSector(§ors[i], sectorrecord[i]); } } - delete[] edfsectorrecord; + delete[] sectorrecord; } void LoadMapinfoACSLump() { - FEdfOptions *opt = level.info->GetOptData("EDF", false); + FEDOptions *opt = level.info->GetOptData("EData", false); if (opt != NULL) { int lump = Wads.CheckNumForName(opt->acsName); diff --git a/src/edata.h b/src/edata.h new file mode 100644 index 000000000..ffbe7d59a --- /dev/null +++ b/src/edata.h @@ -0,0 +1,12 @@ +#ifndef EDATA_H +#define EDATA_H + +struct FMapThing; +struct line_t; + +void ProcessEDMapthing(FMapThing *mt, int recordnum); +void ProcessEDLinedef(line_t *line, int recordnum); +void ProcessEDSectors(); +void LoadMapinfoACSLump(); + +#endif \ No newline at end of file diff --git a/src/p_lnspec.h b/src/p_lnspec.h index 3f97c75e6..2ddccd67d 100644 --- a/src/p_lnspec.h +++ b/src/p_lnspec.h @@ -60,8 +60,8 @@ typedef enum { Init_Damage = 2, Init_SectorLink = 3, NUM_STATIC_INITS, - Init_EDFSector = 253, - Init_EDFLine = 254, + Init_EDSector = 253, + Init_EDLine = 254, Init_TransferSky = 255 } staticinit_t; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 46f984bf1..f4b66cbe6 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -68,8 +68,8 @@ #include "po_man.h" #include "r_renderer.h" #include "r_data/colormaps.h" -#ifndef NO_EDF -#include "edf.h" +#ifndef NO_EDATA +#include "edata.h" #endif #include "fragglescript/t_fs.h" @@ -1770,10 +1770,10 @@ void P_LoadThings (MapData * map) mti[i].info = DoomEdMap.CheckKey(mti[i].EdNum); -#ifndef NO_EDF +#ifndef NO_EDATA if (mti[i].info != NULL && mti[i].info->Special == SMT_EDFThing) { - ProcessEDFMapthing(&mti[i], flags); + ProcessEDMapthing(&mti[i], flags); } else #endif @@ -2173,15 +2173,15 @@ void P_LoadLineDefs (MapData * map) // compatible with the new format. P_TranslateLineDef (ld, mld, -1); - // do not assign the tag for EDF lines. - if (ld->special != Static_Init || (ld->args[1] != Init_EDFLine && ld->args[1] != Init_EDFSector)) + // do not assign the tag for Extradata lines. + if (ld->special != Static_Init || (ld->args[1] != Init_EDLine && ld->args[1] != Init_EDSector)) { tagManager.AddLineID(i, mld->tag); } -#ifndef NO_EDF - if (ld->special == Static_Init && ld->args[1] == Init_EDFLine) +#ifndef NO_EDATA + if (ld->special == Static_Init && ld->args[1] == Init_EDLine) { - ProcessEDFLinedef(ld, mld->tag); + ProcessEDLinedef(ld, mld->tag); } #endif @@ -3702,7 +3702,7 @@ void P_SetupLevel (const char *lumpname, int position) } FBehavior::StaticLoadDefaultModules (); -#ifndef NO_EDF +#ifndef NO_EDATA LoadMapinfoACSLump(); #endif diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 5499d737f..e153e0fb8 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -63,8 +63,8 @@ #include "a_keys.h" #include "c_dispatch.h" #include "r_sky.h" -#ifndef NO_EDF -#include "edf.h" +#ifndef NO_EDATA +#include "edata.h" #endif // State. @@ -1377,8 +1377,8 @@ void P_SpawnSpecials (void) P_InitSectorSpecial(sector, sector->special, false); } -#ifndef NO_EDF - ProcessEDFSectors(); +#ifndef NO_EDATA + ProcessEDSectors(); #endif diff --git a/wadsrc/static/xlat/eternity.txt b/wadsrc/static/xlat/eternity.txt index f56d5f62b..bfe275b1f 100644 --- a/wadsrc/static/xlat/eternity.txt +++ b/wadsrc/static/xlat/eternity.txt @@ -10,8 +10,8 @@ define Unsupported (0) enum { - Init_EDFSector = 253, - Init_EDFLine = 254 + Init_EDSector = 253, + Init_EDLine = 254 } // The tag for such a line is actually a key to find, in an ExtraData lump @@ -19,7 +19,7 @@ enum // to actually use. This is how parameterized linedefs are used by Eternity // in the Doom format. -270 = 0, Static_Init(tag, Init_EDFLine) // "ExtraDataSpecial" +270 = 0, Static_Init(tag, Init_EDLine) // "ExtraDataSpecial" // These two are standard MBF specials, no need to redefine them, they're in xlat/doom.txt // 271 = 0, Static_Init (tag, Init_TransferSky, 0) @@ -195,7 +195,7 @@ enum 399 = 0, Thing_SpawnNoFog(0) 400 = 0, Teleport_EndGame(0) -401 = 0, Static_Init(tag, Init_EDFSector) +401 = 0, Static_Init(tag, Init_EDSector) 402 = 0, Thing_Projectile(0) 403 = 0, Thing_ProjectileGravity(0)