Merge remote-tracking branch 'origin/master' into vulkan2

This commit is contained in:
Magnus Norddahl 2019-03-26 13:08:59 +01:00
commit 4cc9880f50
36 changed files with 31 additions and 14 deletions

View file

@ -330,7 +330,8 @@ enum : unsigned int
COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial() COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial()
COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior
COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust
COMPATF2_EXPLODE2 = 1 << 9 // Use original explosion code throughout. COMPATF2_EXPLODE2 = 1 << 9, // Use original explosion code throughout.
COMPATF2_RAILING = 1 << 10, // Bugged Strife railings.
}; };
// Emulate old bugs for select maps. These are not exposed by a cvar // Emulate old bugs for select maps. These are not exposed by a cvar

View file

@ -46,6 +46,13 @@
EventManager staticEventManager; EventManager staticEventManager;
EventManager eventManager; EventManager eventManager;
void EventManager::CallOnRegister()
{
for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next)
{
handler->OnRegister();
}
}
bool EventManager::RegisterHandler(DStaticEventHandler* handler) bool EventManager::RegisterHandler(DStaticEventHandler* handler)
{ {

View file

@ -240,6 +240,8 @@ struct EventManager
~EventManager() { Shutdown(); } ~EventManager() { Shutdown(); }
bool ShouldCallStatic(bool forplay); bool ShouldCallStatic(bool forplay);
// for use after loading a savegame. The old handler explicitly reinstalled all handlers instead of doing a list deserialization which resulted in OnRegister being called even when a save was loaded.
void CallOnRegister();
// register // register
bool RegisterHandler(DStaticEventHandler* handler); bool RegisterHandler(DStaticEventHandler* handler);
// unregister // unregister

View file

@ -1644,6 +1644,7 @@ MapFlagHandlers[] =
{ "compat_checkswitchrange", MITYPE_COMPATFLAG, 0, COMPATF2_CHECKSWITCHRANGE }, { "compat_checkswitchrange", MITYPE_COMPATFLAG, 0, COMPATF2_CHECKSWITCHRANGE },
{ "compat_explode1", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE1 }, { "compat_explode1", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE1 },
{ "compat_explode2", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE2 }, { "compat_explode2", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE2 },
{ "compat_railing", MITYPE_COMPATFLAG, 0, COMPATF2_RAILING },
{ "cd_start_track", MITYPE_EATNEXT, 0, 0 }, { "cd_start_track", MITYPE_EATNEXT, 0, 0 },
{ "cd_end1_track", MITYPE_EATNEXT, 0, 0 }, { "cd_end1_track", MITYPE_EATNEXT, 0, 0 },
{ "cd_end2_track", MITYPE_EATNEXT, 0, 0 }, { "cd_end2_track", MITYPE_EATNEXT, 0, 0 },

View file

@ -225,7 +225,7 @@ enum ELevelFlags : unsigned int
LEVEL2_FORCETEAMPLAYOFF = 0x00080000, LEVEL2_FORCETEAMPLAYOFF = 0x00080000,
LEVEL2_CONV_SINGLE_UNFREEZE = 0x00100000, LEVEL2_CONV_SINGLE_UNFREEZE = 0x00100000,
LEVEL2_RAILINGHACK = 0x00200000, // but UDMF requires them to be separate to have more control // = 0x00200000, // unused, was LEVEL2_RAILINGHACK
LEVEL2_DUMMYSWITCHES = 0x00400000, LEVEL2_DUMMYSWITCHES = 0x00400000,
LEVEL2_HEXENHACK = 0x00800000, // Level was defined in a Hexen style MAPINFO LEVEL2_HEXENHACK = 0x00800000, // Level was defined in a Hexen style MAPINFO

View file

@ -97,7 +97,7 @@ TArray<TArray<FString>> FStringTable::parseCSV(const TArray<uint8_t> &buffer)
while (vend > vcopy && myisspace((unsigned char)vend[-1])) *--vend = 0; // skip over trailing whitespace while (vend > vcopy && myisspace((unsigned char)vend[-1])) *--vend = 0; // skip over trailing whitespace
*/ */
for (int i = 0; i < bufLength; ++i) for (size_t i = 0; i < bufLength; ++i)
{ {
if (buffer[i] == '"') if (buffer[i] == '"')
{ {

View file

@ -167,6 +167,7 @@ static FCompatOption Options[] =
{ "checkswitchrange", COMPATF2_CHECKSWITCHRANGE, SLOT_COMPAT2 }, { "checkswitchrange", COMPATF2_CHECKSWITCHRANGE, SLOT_COMPAT2 },
{ "explode1", COMPATF2_EXPLODE1, SLOT_COMPAT2 }, { "explode1", COMPATF2_EXPLODE1, SLOT_COMPAT2 },
{ "explode2", COMPATF2_EXPLODE2, SLOT_COMPAT2 }, { "explode2", COMPATF2_EXPLODE2, SLOT_COMPAT2 },
{ "railing", COMPATF2_RAILING, SLOT_COMPAT2 },
{ NULL, 0, 0 } { NULL, 0, 0 }
}; };

View file

@ -3004,11 +3004,6 @@ void MapLoader::LoadLevel(MapData *map, const char *lumpname, int position)
if (!map->HasBehavior && !map->isText) if (!map->HasBehavior && !map->isText)
{ {
// set compatibility flags
if (gameinfo.gametype == GAME_Strife)
{
Level->flags2 |= LEVEL2_RAILINGHACK;
}
Level->flags2 |= LEVEL2_DUMMYSWITCHES; Level->flags2 |= LEVEL2_DUMMYSWITCHES;
} }

View file

@ -2161,7 +2161,7 @@ public:
case NAME_Strife: case NAME_Strife:
namespace_bits = St; namespace_bits = St;
Level->Translator = P_LoadTranslator("xlat/strife_base.txt"); Level->Translator = P_LoadTranslator("xlat/strife_base.txt");
Level->flags2 |= LEVEL2_DUMMYSWITCHES|LEVEL2_RAILINGHACK; Level->flags2 |= LEVEL2_DUMMYSWITCHES;
floordrop = true; floordrop = true;
break; break;
default: default:

View file

@ -976,7 +976,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
// better than Strife's handling of rails, which lets you jump into rails // better than Strife's handling of rails, which lets you jump into rails
// from either side. How long until somebody reports this as a bug and I'm // from either side. How long until somebody reports this as a bug and I'm
// forced to say, "It's not a bug. It's a feature?" Ugh. // forced to say, "It's not a bug. It's a feature?" Ugh.
(!(tm.thing->Level->flags2 & LEVEL2_RAILINGHACK) || (!(tm.thing->Level->i_compatflags2 & COMPATF2_RAILING) ||
open.bottom == tm.thing->Sector->floorplane.ZatPoint(ref))) open.bottom == tm.thing->Sector->floorplane.ZatPoint(ref)))
{ {
open.bottom += 32; open.bottom += 32;

View file

@ -994,6 +994,7 @@ void FLevelLocals::Serialize(FSerializer &arc, bool hubload)
// [ZZ] serialize events // [ZZ] serialize events
arc("firstevent", localEventManager->FirstEventHandler) arc("firstevent", localEventManager->FirstEventHandler)
("lastevent", localEventManager->LastEventHandler); ("lastevent", localEventManager->LastEventHandler);
localEventManager->CallOnRegister();
Thinkers.SerializeThinkers(arc, hubload); Thinkers.SerializeThinkers(arc, hubload);
arc("polyobjs", Polyobjects); arc("polyobjs", Polyobjects);
SerializeSubsectors(arc, "subsectors"); SerializeSubsectors(arc, "subsectors");

View file

@ -221,7 +221,7 @@ void PostProcessShaderInstance::BindTextures()
{ {
glUniform1i(location, textureUnit); glUniform1i(location, textureUnit);
glActiveTexture(GL_TEXTURE0 + 1); glActiveTexture(GL_TEXTURE0 + textureUnit);
auto it = mTextureHandles.find(tex); auto it = mTextureHandles.find(tex);
if (it == mTextureHandles.end()) if (it == mTextureHandles.end())
{ {

View file

@ -627,6 +627,7 @@ map MAP04 LOOKUP "TXT_STRIFE_MAP04"
sky1 = "SKYMNT02" sky1 = "SKYMNT02"
music = "D_FAST" music = "D_FAST"
cluster = 1 cluster = 1
compat_railing
} }
map MAP05 LOOKUP "TXT_STRIFE_MAP05" map MAP05 LOOKUP "TXT_STRIFE_MAP05"

View file

@ -1662,6 +1662,7 @@ OptionMenu "CompatPhysicsMenu" protected
Option "$CMPTMNU_MISSILECLIP", "compat_MISSILECLIP", "YesNo" Option "$CMPTMNU_MISSILECLIP", "compat_MISSILECLIP", "YesNo"
Option "$CMPTMNU_EXPLODE1", "compat_explode1", "YesNo" Option "$CMPTMNU_EXPLODE1", "compat_explode1", "YesNo"
Option "$CMPTMNU_EXPLODE2", "compat_explode2", "YesNo" Option "$CMPTMNU_EXPLODE2", "compat_explode2", "YesNo"
Option "$CMPTMNU_RAILINGHACK", "compat_railing", "YesNo"
Class "CompatibilityMenu" Class "CompatibilityMenu"
} }

View file

@ -1341,5 +1341,6 @@ enum ECompatFlags
COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial() COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial()
COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior
COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust
COMPATF2_EXPLODE2 = 1 << 9 // Use original explosion code throughout. COMPATF2_EXPLODE2 = 1 << 9, // Use original explosion code throughout.
COMPATF2_RAILING = 1 << 10, // Bugged Strife railings.
}; };

View file

@ -892,6 +892,12 @@ class LevelCompatibility native play
break; break;
} }
case '8D7A24B169717907DDA8399D8C1655DF': // strife1.wad map15
{
SetWallTexture(319, Line.back, Side.top, "WALTEK21");
break;
}
case 'DB31D71B11E3E4393B9C0CCB44A8639F': // rop_2015.wad e1m5 case 'DB31D71B11E3E4393B9C0CCB44A8639F': // rop_2015.wad e1m5
{ {
// Lower floor a bit so secret switch becomes accessible // Lower floor a bit so secret switch becomes accessible

View file

@ -811,8 +811,8 @@ class OptionMenuSliderBase : OptionMenuItem
lm.ReleaseFocus(); lm.ReleaseFocus();
} }
int slide_left = mDrawX+8*CleanXfac_1; int slide_left = mDrawX+16*CleanXfac_1;
int slide_right = slide_left + (10*8*CleanXfac_1 >> mSliderShort); // 12 char cells with 8 pixels each. int slide_right = slide_left + (10*16*CleanXfac_1 >> mSliderShort); // 10 char cells with 16 pixels each.
if (type == Menu.MOUSE_Click) if (type == Menu.MOUSE_Click)
{ {