Update to ZDoom r1418:

- Fixed parsing for MustConfirm key in skill parser.
- Converted internal MAPINFOs to new syntax.
- Added a range parameter to SNDINFO's $limit.
- Restored Dehacked music name replacement.
- Added GUICapture mouse events for Win32.
- Changed I_GetFromClipboard() to return an FString.
- Added GTK+-based clipboard support for Linux.
- Fixed: Most Linux filesystems do not fill in d_type for scandir(), so we
  cannot rely on it to detect directories.
- Added NicePath() function to perform shell-style ~ substitution on path
  names.
- Changed the default screenshot directory on Unix to ~/.zdoom/screenshots/.
- Added -shotdir command line option to temporarily override the
  screenshot_dir cvar.
- Fixed: G_SerializeLevel must use the TEXMAN_ReturnFirst flag for getting
  the sky textures so that it still works when the first texture in a TEXTURE1
  lump is used as sky.
- Restored the old drawseg/sprite distance check from 2.0.63. The code that
  replaced it did the check at the center of the area intersected by the
  sprite and the drawseg, whereas 2.0.63 only did the check at the location
  of the sprite on the map.
- Commented out the CALL_ACTION(A_Look, actor) for targetless friendly
  monsters in A_DoChase(). They can still find new targets without this,
  and with it, they got stuck on the first frame of their see state.
- Fixed: Keys bound in a custom key section would unbind the key in the
  main game section.
- Fixed scrolling of the automap background on a rotated automap.
- Changed singleplayer allowrespawn to act like a co-op game when you
  change levels while dead by immediately respawning you before the switch
  so that you get to keep all your inventory.
- Fixed: G_InitLevelLocals() did not set flags2.
- fixed: The compatibility parser applied the last map's settings to all
  maps in the compatibility list.
- Added compatibility settings for a few more levels in some classic WADs.
- Added spechit overflow workaround for Strain MAP07. This is highly map
  specific because the original behavior cannot be restored.
- Added a check for Doom's IWAD levels that forces COMPAT_SHORTTEX for them.
  MD5 cannot be used well here because there's many different IWADs with 
  slightly different levels. This is only done for Doom format levels to
  ensure that custom IWADs for ZDoom are not affected.
- fixed: level.flags2 was not reset at level start.
- Fixed: Morph powerups can change the actor picking up the item so 
  AInventory::CallTryPickup must be able to return the new actor.
- Fixed: ACS's GiveInventory may not assume that a PlayerPawn is still
  attached to the player data after an item has been given.
- Added a missing NULL pointer check to DBaseStatusBar::Blendview.
- Added a compatibility lump because I think it's a shame that Void doesn't
  work properly on new ZDooms after all the collaboration I had with Cyb on
  that map. (Works with other maps, too.)


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@298 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
Christoph Oelckers 2009-02-08 23:01:13 +00:00
parent ad59f4da77
commit 5e8c5c3305
70 changed files with 4299 additions and 2368 deletions

View file

@ -493,50 +493,63 @@ static void AM_findMinMaxBoundaries ()
static void AM_ClipRotatedExtents (fixed_t pivotx, fixed_t pivoty)
{
fixed_t rmin_x, rmin_y, rmax_x, rmax_y;
if (am_rotate == 0 || (am_rotate == 2 && !viewactive))
{
rmin_x = min_x;
rmin_y = min_y;
rmax_x = max_x;
rmax_y = max_y;
if (m_x + m_w/2 > max_x)
m_x = max_x - m_w/2;
else if (m_x + m_w/2 < min_x)
m_x = min_x - m_w/2;
if (m_y + m_h/2 > max_y)
m_y = max_y - m_h/2;
else if (m_y + m_h/2 < min_y)
m_y = min_y - m_h/2;
}
else
{
fixed_t xs[4], ys[4];
#if 0
fixed_t rmin_x, rmin_y, rmax_x, rmax_y;
fixed_t xs[5], ys[5];
int i;
xs[0] = min_x; ys[0] = min_y;
xs[1] = max_x; ys[1] = min_y;
xs[2] = max_x; ys[2] = max_y;
xs[3] = min_x; ys[3] = max_y;
xs[4] = m_x + m_w/2; ys[4] = m_y + m_h/2;
rmin_x = rmin_y = FIXED_MAX;
rmax_x = rmax_y = FIXED_MIN;
for (i = 0; i < 4; ++i)
for (i = 0; i < 5; ++i)
{
xs[i] -= pivotx;
ys[i] -= pivoty;
AM_rotate (&xs[i], &ys[i], ANG90 - players[consoleplayer].camera->angle);
xs[i] += pivotx;
ys[i] += pivoty;
if (i == 5)
break;
// xs[i] += pivotx;
// ys[i] += pivoty;
if (xs[i] < rmin_x) rmin_x = xs[i];
if (xs[i] > rmax_x) rmax_x = xs[i];
if (ys[i] < rmin_y) rmin_y = ys[i];
if (ys[i] > rmax_y) rmax_y = ys[i];
}
if (rmax_x < 0)
xs[4] = -rmax_x;
else if (rmin_x > 0)
xs[4] = -rmin_x;
// if (ys[4] > rmax_y)
// ys[4] = rmax_y;
// else if (ys[4] < rmin_y)
// ys[4] = rmin_y;
AM_rotate (&xs[4], &ys[4], ANG270 - players[consoleplayer].camera->angle);
m_x = xs[4] + pivotx - m_w/2;
m_y = ys[4] + pivoty - m_h/2;
#endif
}
if (m_x + m_w/2 > rmax_x)
m_x = rmax_x - m_w/2;
else if (m_x + m_w/2 < rmin_x)
m_x = rmin_x - m_w/2;
if (m_y + m_h/2 > rmax_y)
m_y = rmax_y - m_h/2;
else if (m_y + m_h/2 < rmin_y)
m_y = rmin_y - m_h/2;
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
@ -580,10 +593,13 @@ void AM_changeWindowLoc ()
}
int oldmx = m_x, oldmy = m_y;
fixed_t incx = m_paninc.x, incy = m_paninc.y;
fixed_t incx, incy, oincx, oincy;
incx = m_paninc.x;
incy = m_paninc.y;
incx = Scale(m_paninc.x, SCREENWIDTH, 320);
incy = Scale(m_paninc.y, SCREENHEIGHT, 200);
oincx = incx = Scale(m_paninc.x, SCREENWIDTH, 320);
oincy = incy = Scale(m_paninc.y, SCREENHEIGHT, 200);
if (am_rotate == 1 || (am_rotate == 2 && viewactive))
{
AM_rotate(&incx, &incy, players[consoleplayer].camera->angle - ANG90);
@ -593,7 +609,7 @@ void AM_changeWindowLoc ()
m_y += incy;
AM_ClipRotatedExtents (oldmx + m_w/2, oldmy + m_h/2);
AM_ScrollParchment (m_x - oldmx, oldmy - m_y);
AM_ScrollParchment (m_x != oldmx ? oincx : 0, m_y != oldmy ? -oincy : 0);
}