mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-24 04:29:34 -04:00
Import EE mouse fix, EE screen centering code, and EE player corpse deferred removal savegame bug fix.
This commit is contained in:
parent
5d5f2a10f2
commit
8df96343bb
@ -55,6 +55,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
// SoM: From CHOCODOOM Thank you fraggle!!
|
// SoM: From CHOCODOOM Thank you fraggle!!
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
putenv("SDL_VIDEO_WINDOW_POS=center") ;
|
||||||
|
putenv("SDL_VIDEO_CENTERED=1") ;
|
||||||
|
|
||||||
// Allow -gdi as a shortcut for using the windib driver.
|
// Allow -gdi as a shortcut for using the windib driver.
|
||||||
|
|
||||||
|
@ -356,8 +356,8 @@ void I_GetEvent()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// SoM 1-20-04 Ok, use xrel/yrel for mouse movement because most people like it the most.
|
// SoM 1-20-04 Ok, use xrel/yrel for mouse movement because most people like it the most.
|
||||||
mouseevent.data3 = -event.motion.yrel;
|
mouseevent.data3 -= event.motion.yrel;
|
||||||
mouseevent.data2 = event.motion.xrel;
|
mouseevent.data2 += event.motion.xrel;
|
||||||
sendmouseevent = 1;
|
sendmouseevent = 1;
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
@ -426,8 +426,8 @@ void I_GetEvent()
|
|||||||
D_PostEvent(&mouseevent);
|
D_PostEvent(&mouseevent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(paused && !window_focused)
|
if(paused || !window_focused)
|
||||||
I_WaitVBL(1);
|
SDL_Delay(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -336,16 +336,25 @@ void P_ArchiveThinkers (void)
|
|||||||
|
|
||||||
// killough 9/14/98: save soundtargets
|
// killough 9/14/98: save soundtargets
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
CheckSaveGame(numsectors * sizeof(mobj_t *)); // killough 9/14/98
|
CheckSaveGame(numsectors * sizeof(mobj_t *)); // killough 9/14/98
|
||||||
for (i = 0; i < numsectors; i++)
|
for (i = 0; i < numsectors; i++)
|
||||||
{
|
{
|
||||||
mobj_t *target = sectors[i].soundtarget;
|
mobj_t *target = sectors[i].soundtarget;
|
||||||
if (target)
|
if (target)
|
||||||
target = (mobj_t *) target->thinker.prev;
|
{
|
||||||
memcpy(save_p, &target, sizeof target);
|
// haleyjd 03/23/09: Imported from Eternity:
|
||||||
save_p += sizeof target;
|
// haleyjd 11/03/06: We must check for P_MobjThinker here as well,
|
||||||
}
|
// or player corpses waiting for deferred removal will be saved as
|
||||||
|
// raw pointer values instead of twizzled numbers, causing a crash
|
||||||
|
// on savegame load!
|
||||||
|
target = target->thinker.function == P_MobjThinker ?
|
||||||
|
(mobj_t *)target->thinker.prev : NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
memcpy(save_p, &target, sizeof target);
|
||||||
|
save_p += sizeof target;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// killough 2/14/98: restore prev pointers
|
// killough 2/14/98: restore prev pointers
|
||||||
@ -382,6 +391,7 @@ void P_UnArchiveThinkers (void)
|
|||||||
thinker_t *th;
|
thinker_t *th;
|
||||||
mobj_t **mobj_p; // killough 2/14/98: Translation table
|
mobj_t **mobj_p; // killough 2/14/98: Translation table
|
||||||
size_t size; // killough 2/14/98: size of or index into table
|
size_t size; // killough 2/14/98: size of or index into table
|
||||||
|
size_t idx; // haleyjd 11/03/06: separate index var
|
||||||
|
|
||||||
// killough 3/26/98: Load boss brain state
|
// killough 3/26/98: Load boss brain state
|
||||||
memcpy(&brain, save_p, sizeof brain);
|
memcpy(&brain, save_p, sizeof brain);
|
||||||
@ -417,12 +427,13 @@ void P_UnArchiveThinkers (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// read in saved thinkers
|
// read in saved thinkers
|
||||||
for (size = 1; *save_p++ == tc_mobj; size++) // killough 2/14/98
|
// haleyjd 11/03/06: use idx to save "size" for rangechecking
|
||||||
|
for (idx = 1; *save_p++ == tc_mobj; idx++) // killough 2/14/98
|
||||||
{
|
{
|
||||||
mobj_t *mobj = Z_Malloc(sizeof(mobj_t), PU_LEVEL, NULL);
|
mobj_t *mobj = Z_Malloc(sizeof(mobj_t), PU_LEVEL, NULL);
|
||||||
|
|
||||||
// killough 2/14/98 -- insert pointers to thinkers into table, in order:
|
// killough 2/14/98 -- insert pointers to thinkers into table, in order:
|
||||||
mobj_p[size] = mobj;
|
mobj_p[idx] = mobj;
|
||||||
|
|
||||||
PADSAVEP();
|
PADSAVEP();
|
||||||
memcpy (mobj, save_p, sizeof(mobj_t));
|
memcpy (mobj, save_p, sizeof(mobj_t));
|
||||||
@ -473,12 +484,17 @@ void P_UnArchiveThinkers (void)
|
|||||||
{ // killough 9/14/98: restore soundtargets
|
{ // killough 9/14/98: restore soundtargets
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < numsectors; i++)
|
for (i = 0; i < numsectors; i++)
|
||||||
{
|
{
|
||||||
mobj_t *target;
|
mobj_t *target;
|
||||||
memcpy(&target, save_p, sizeof target);
|
memcpy(&target, save_p, sizeof target);
|
||||||
save_p += sizeof target;
|
save_p += sizeof target;
|
||||||
P_SetNewTarget(§ors[i].soundtarget, mobj_p[(size_t) target]);
|
|
||||||
}
|
// haleyjd 11/03/06: rangecheck for security
|
||||||
|
if((size_t)target < size)
|
||||||
|
P_SetNewTarget(§ors[i].soundtarget, mobj_p[(size_t) target]);
|
||||||
|
else
|
||||||
|
sectors[i].soundtarget = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(mobj_p); // free translation table
|
free(mobj_p); // free translation table
|
||||||
|
Loading…
x
Reference in New Issue
Block a user