diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index fe1559991..4cc566657 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -887,7 +887,7 @@ void FParser::SF_Spawn(void) { t_return.value.mobj->Angles.Yaw = angle; - if (!DFraggleThinker::ActiveThinker->nocheckposition) + if (!level.info->fs_nocheckposition) { if (!P_TestMobjLocation(t_return.value.mobj)) { @@ -3724,19 +3724,7 @@ void FParser::SF_SetColor(void) FSSectorTagIterator itr(tagnum); while ((i = itr.Next()) >= 0) { - if (!DFraggleThinker::ActiveThinker->setcolormaterial) - { - level.sectors[i].SetColor(color, 0); - } - else - { - // little hack for testing the D64 color stuff. - for (int j = 0; j < 4; j++) level.sectors[i].SetSpecialColor(j, color); - // simulates 'nocoloredspritelighting' settings. - int v = (color.r + color.g + color.b) / 3; - v = (255 + v + v) / 3; - level.sectors[i].SetSpecialColor(sector_t::sprites, v, v, v); - } + level.sectors[i].SetColor(color, 0); } } } diff --git a/src/fragglescript/t_load.cpp b/src/fragglescript/t_load.cpp index 1d5b86ce0..0196036ac 100644 --- a/src/fragglescript/t_load.cpp +++ b/src/fragglescript/t_load.cpp @@ -55,56 +55,6 @@ public: bool ParseInfo(MapData * map); }; -struct FFsOptions : public FOptionalMapinfoData -{ - FFsOptions() - { - identifier = "fragglescript"; - nocheckposition = false; - setcolormaterial = false; - } - virtual FOptionalMapinfoData *Clone() const - { - FFsOptions *newopt = new FFsOptions; - newopt->identifier = identifier; - newopt->nocheckposition = nocheckposition; - newopt->setcolormaterial = setcolormaterial; - return newopt; - } - bool nocheckposition; - bool setcolormaterial; -}; - -DEFINE_MAP_OPTION(fs_nocheckposition, false) -{ - FFsOptions *opt = info->GetOptData("fragglescript"); - - if (parse.CheckAssign()) - { - parse.sc.MustGetNumber(); - opt->nocheckposition = !!parse.sc.Number; - } - else - { - opt->nocheckposition = true; - } -} - -DEFINE_MAP_OPTION(fs_setcolormaterial, false) -{ - FFsOptions *opt = info->GetOptData("fragglescript"); - - if (parse.CheckAssign()) - { - parse.sc.MustGetNumber(); - opt->setcolormaterial = !!parse.sc.Number; - } - else - { - opt->setcolormaterial = true; - } -} - //----------------------------------------------------------------------------- // // Process the lump to strip all unneeded information from it @@ -308,18 +258,6 @@ bool FScriptLoader::ParseInfo(MapData * map) if (drownflag==-1) drownflag = (level.maptype != MAPTYPE_DOOM || fsglobal); if (!drownflag) level.airsupply=0; // Legacy doesn't to water damage so we need to check if it has to be disabled here. - - FFsOptions *opt = level.info->GetOptData("fragglescript", false); - if (opt != NULL) - { - DFraggleThinker::ActiveThinker->nocheckposition = opt->nocheckposition; - DFraggleThinker::ActiveThinker->setcolormaterial = opt->setcolormaterial; - } - else - { - DFraggleThinker::ActiveThinker->nocheckposition = false; - DFraggleThinker::ActiveThinker->setcolormaterial = false; - } } diff --git a/src/fragglescript/t_script.cpp b/src/fragglescript/t_script.cpp index 59a0605e5..b07a92df2 100644 --- a/src/fragglescript/t_script.cpp +++ b/src/fragglescript/t_script.cpp @@ -394,7 +394,6 @@ DFraggleThinker::DFraggleThinker() LevelScript->parent = global_script; GC::WriteBarrier(this, RunningScripts); GC::WriteBarrier(this, LevelScript); - nocheckposition = false; } } @@ -435,8 +434,7 @@ void DFraggleThinker::Serialize(FSerializer &arc) Super::Serialize(arc); arc("levelscript", LevelScript) ("runningscripts", RunningScripts) - ("spawnedthings", SpawnedThings) - ("nocheckposition", nocheckposition); + ("spawnedthings", SpawnedThings); } //========================================================================== diff --git a/src/fragglescript/t_script.h b/src/fragglescript/t_script.h index 80751003c..3c3869755 100644 --- a/src/fragglescript/t_script.h +++ b/src/fragglescript/t_script.h @@ -681,8 +681,6 @@ public: TObjPtr LevelScript; TObjPtr RunningScripts; TArray > SpawnedThings; - bool nocheckposition = false; - bool setcolormaterial = false; DFraggleThinker(); void OnDestroy() override; diff --git a/src/g_level.h b/src/g_level.h index 46ffbf795..dac10eaa9 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -263,25 +263,6 @@ class DScroller; class FScanner; struct level_info_t; -struct FOptionalMapinfoData -{ - FOptionalMapinfoData *Next = nullptr; - FName identifier = NAME_None; - virtual ~FOptionalMapinfoData() {} - virtual FOptionalMapinfoData *Clone() const = 0; -}; - -struct FOptionalMapinfoDataPtr -{ - FOptionalMapinfoData *Ptr; - - FOptionalMapinfoDataPtr() throw() : Ptr(NULL) {} - ~FOptionalMapinfoDataPtr() { if (Ptr!=NULL) delete Ptr; } - FOptionalMapinfoDataPtr(const FOptionalMapinfoDataPtr &p) throw() : Ptr(p.Ptr->Clone()) {} - FOptionalMapinfoDataPtr &operator= (FOptionalMapinfoDataPtr &p) throw() { Ptr = p.Ptr->Clone(); return *this; } -}; - -typedef TMap FOptData; typedef TMap FMusicMap; enum EMapType : int @@ -398,7 +379,6 @@ struct level_info_t double teamdamage; - FOptData optdata; FMusicMap MusicMap; TArray specialactions; @@ -416,6 +396,10 @@ struct level_info_t FVector3 skyrotatevector; FVector3 skyrotatevector2; + FString EDName; + FString acsName; + bool fs_nocheckposition; + level_info_t() { @@ -434,24 +418,6 @@ struct level_info_t deferred.Clear(); } level_info_t *CheckLevelRedirect (); - - template - T *GetOptData(FName id, bool create = true) - { - FOptionalMapinfoDataPtr *pdat = optdata.CheckKey(id); - - if (pdat != NULL) - { - return static_cast(pdat->Ptr); - } - else if (create) - { - T *newobj = new T; - optdata[id].Ptr = newobj; - return newobj; - } - else return NULL; - } }; diff --git a/src/g_mapinfo.cpp b/src/g_mapinfo.cpp index 4595afff0..e90fa52b5 100644 --- a/src/g_mapinfo.cpp +++ b/src/g_mapinfo.cpp @@ -1445,6 +1445,34 @@ DEFINE_MAP_OPTION(skyrotate2, false) info->skyrotatevector2.MakeUnit(); } +DEFINE_MAP_OPTION(fs_nocheckposition, false) +{ + if (parse.CheckAssign()) + { + parse.sc.MustGetNumber(); + info->fs_nocheckposition = !!parse.sc.Number; + } + else + { + info->fs_nocheckposition = true; + } +} + +DEFINE_MAP_OPTION(edata, false) +{ + parse.ParseAssign(); + parse.sc.MustGetString(); + info->EDName = parse.sc.String; +} + +DEFINE_MAP_OPTION(loadacs, false) +{ + parse.ParseAssign(); + parse.sc.MustGetString(); + info->acsName = parse.sc.String; +} + + //========================================================================== // // All flag based map options diff --git a/src/maploader/edata.cpp b/src/maploader/edata.cpp index b88e8f518..004bef988 100644 --- a/src/maploader/edata.cpp +++ b/src/maploader/edata.cpp @@ -50,42 +50,6 @@ #include "maploader.h" -struct FEDOptions : public FOptionalMapinfoData -{ - FEDOptions() - { - identifier = "EData"; - } - virtual FOptionalMapinfoData *Clone() const - { - FEDOptions *newopt = new FEDOptions; - newopt->identifier = identifier; - newopt->EDName = EDName; - newopt->acsName = acsName; - return newopt; - } - FString EDName; - FString acsName; -}; - -DEFINE_MAP_OPTION(edata, false) -{ - FEDOptions *opt = info->GetOptData("EData"); - - parse.ParseAssign(); - parse.sc.MustGetString(); - opt->EDName = parse.sc.String; -} - -DEFINE_MAP_OPTION(loadacs, false) -{ - FEDOptions *opt = info->GetOptData("EData"); - - parse.ParseAssign(); - parse.sc.MustGetString(); - opt->acsName = parse.sc.String; -} - static void parseLinedef(FScanner &sc, TMap &EDLines) { EDLinedef ld; @@ -552,21 +516,9 @@ static void parseMapthing(FScanner &sc, TMap &EDThings) void MapLoader::InitED() { - FString filename; + FString filename = Level->info->EDName; FScanner sc; - const char *arg = Args->CheckValue("-edf"); - - if (arg != nullptr) filename = arg; - else - { - FEDOptions *opt = Level->info->GetOptData("EData", false); - if (opt != nullptr) - { - filename = opt->EDName; - } - } - if (filename.IsEmpty()) return; int lump = Wads.CheckNumForFullName(filename, true, ns_global); if (lump == -1) return; @@ -705,10 +657,9 @@ void MapLoader::ProcessEDSectors() void MapLoader::LoadMapinfoACSLump() { - FEDOptions *opt = Level->info->GetOptData("EData", false); - if (opt != nullptr) + if (Level->info->acsName.IsNotEmpty()) { - int lump = Wads.CheckNumForName(opt->acsName); + int lump = Wads.CheckNumForName(Level->info->acsName); if (lump >= 0) FBehavior::StaticLoadModule(lump); } }