mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- Fixed: SECSPAC_EyesSurface and SECSPAC_EyesDive did not trigger due to
crouching motion. - Fixed: The keypress for nightmare mode verification appeared in the console if the fullscreen console was open while using the menu. - Added support for scaling down large console fonts in the customize controls menu. - Fixed: Joining a negative team was possible. SVN r590 (trunk)
This commit is contained in:
parent
1225071f78
commit
6a00173a12
9 changed files with 95 additions and 28 deletions
|
@ -1,4 +1,11 @@
|
|||
December 8, 2007
|
||||
- Fixed: SECSPAC_EyesSurface and SECSPAC_EyesDive did not trigger due to
|
||||
crouching motion.
|
||||
- Fixed: The keypress for nightmare mode verification appeared in the console
|
||||
if the fullscreen console was open while using the menu.
|
||||
- Added support for scaling down large console fonts in the customize
|
||||
controls menu.
|
||||
- Fixed: Joining a negative team was possible.
|
||||
- Fixed: Skill level confirmation only worked with Doom. Also fixed parsing
|
||||
of MustConfirm: It looked for TK_String when it should have used TK_StringConst.
|
||||
- Fixed: When travelling to a new non-hub map, any items being carried with
|
||||
|
|
|
@ -250,6 +250,10 @@ static void UpdateTeam (int pnum, int team, bool update)
|
|||
userinfo_t *info = &players[pnum].userinfo;
|
||||
int oldteam;
|
||||
|
||||
if (team < 0)
|
||||
{
|
||||
team = TEAM_None;
|
||||
}
|
||||
oldteam = info->team;
|
||||
info->team = team;
|
||||
|
||||
|
|
|
@ -1733,7 +1733,7 @@ void M_VerifyNightmare (int ch)
|
|||
{
|
||||
gamestate = GS_HIDECONSOLE;
|
||||
gameaction = ga_newgame;
|
||||
}
|
||||
}
|
||||
M_ClearMenus ();
|
||||
}
|
||||
|
||||
|
@ -2716,6 +2716,10 @@ bool M_Responder (event_t *ev)
|
|||
}
|
||||
return true;
|
||||
}
|
||||
else if (ev->subtype == EV_GUI_Char && messageToPrint && messageNeedsInput)
|
||||
{
|
||||
ch = ev->data1;
|
||||
}
|
||||
}
|
||||
|
||||
if (OptionsActive && !chatmodeon)
|
||||
|
@ -2763,10 +2767,23 @@ bool M_Responder (event_t *ev)
|
|||
if (messageToPrint)
|
||||
{
|
||||
ch = tolower (ch);
|
||||
if (messageNeedsInput &&
|
||||
ch != ' ' && ch != 'n' && ch != 'y' && ch != GK_ESCAPE)
|
||||
if (messageNeedsInput)
|
||||
{
|
||||
return false;
|
||||
// For each printable keystroke, both EV_GUI_KeyDown and
|
||||
// EV_GUI_Char will be generated, in that order. If we close
|
||||
// the menu after the first event arrives and the fullscreen
|
||||
// console is up, the console will get the EV_GUI_Char event
|
||||
// next. Therefore, the message input should only respond to
|
||||
// EV_GUI_Char events (sans Escape, which only generates
|
||||
// EV_GUI_KeyDown.)
|
||||
if (ev->subtype != EV_GUI_Char && ch != GK_ESCAPE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ch != ' ' && ch != 'n' && ch != 'y' && ch != GK_ESCAPE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
menuactive = messageLastMenuActive;
|
||||
|
|
|
@ -1358,6 +1358,22 @@ CCMD (sizeup)
|
|||
S_Sound (CHAN_VOICE, "menu/change", 1, ATTN_NONE);
|
||||
}
|
||||
|
||||
// Draws a string in the console font, scaled to the 8x8 cells
|
||||
// used by the default console font.
|
||||
static void M_DrawConText (int color, int x, int y, const char *str)
|
||||
{
|
||||
int len = (int)strlen(str);
|
||||
|
||||
screen->SetFont (ConFont);
|
||||
x = (x - 160) * CleanXfac + screen->GetWidth() / 2;
|
||||
y = (y - 100) * CleanYfac + screen->GetHeight() / 2;
|
||||
screen->DrawText (color, x, y, str,
|
||||
DTA_CellX, 8 * CleanXfac,
|
||||
DTA_CellY, 8 * CleanYfac,
|
||||
TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
}
|
||||
|
||||
void M_BuildKeyList (menuitem_t *item, int numitems)
|
||||
{
|
||||
int i;
|
||||
|
@ -1426,10 +1442,8 @@ void M_DrawSlider (int x, int y, float min, float max, float cur)
|
|||
|
||||
cur -= min;
|
||||
|
||||
screen->SetFont (ConFont);
|
||||
screen->DrawText (CR_WHITE, x, y, "\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12", DTA_Clean, true, TAG_DONE);
|
||||
screen->DrawText (CR_ORANGE, x + 5 + (int)((cur * 78.f) / range), y, "\x13", DTA_Clean, true, TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
M_DrawConText(CR_WHITE, x, y, "\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12");
|
||||
M_DrawConText(CR_ORANGE, x + 5 + (int)((cur * 78.f) / range), y, "\x13");
|
||||
}
|
||||
|
||||
int M_FindCurVal (float cur, value_t *values, int numvals)
|
||||
|
@ -1676,10 +1690,7 @@ void M_OptDrawer ()
|
|||
char description[64];
|
||||
|
||||
C_NameKeys (description, item->b.key1, item->c.key2);
|
||||
screen->SetFont (ConFont);
|
||||
screen->DrawText (CR_WHITE,
|
||||
CurrentMenu->indent + 14, y-1+labelofs, description, DTA_Clean, true, TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
M_DrawConText(CR_WHITE, CurrentMenu->indent + 14, y-1+labelofs, description);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1768,10 +1779,7 @@ void M_OptDrawer ()
|
|||
i == CurrentItem &&
|
||||
(skullAnimCounter < 6 || menuactive == MENU_WaitKey))
|
||||
{
|
||||
screen->SetFont (ConFont);
|
||||
screen->DrawText (CR_RED, CurrentMenu->indent + 3, y-1+labelofs, "\xd",
|
||||
DTA_Clean, true, TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
M_DrawConText(CR_RED, CurrentMenu->indent + 3, y-1+labelofs, "\xd");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1799,10 +1807,7 @@ void M_OptDrawer ()
|
|||
|
||||
if (i == CurrentItem && ((item->a.selmode != -1 && (skullAnimCounter < 6 || menuactive == MENU_WaitKey)) || testingmode))
|
||||
{
|
||||
screen->SetFont (ConFont);
|
||||
screen->DrawText (CR_RED, item->a.selmode * 104 + 8, y-1 + labelofs, "\xd",
|
||||
DTA_Clean, true, TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
M_DrawConText(CR_RED, item->a.selmode * 104 + 8, y-1 + labelofs, "\xd");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1811,16 +1816,14 @@ void M_OptDrawer ()
|
|||
CanScrollDown = (i < CurrentMenu->numitems);
|
||||
VisBottom = i - 1;
|
||||
|
||||
screen->SetFont (ConFont);
|
||||
if (CanScrollUp)
|
||||
{
|
||||
screen->DrawText (CR_ORANGE, 3, ytop + labelofs, "\x1a", DTA_Clean, true, TAG_DONE);
|
||||
M_DrawConText(CR_ORANGE, 3, ytop + labelofs, "\x1a");
|
||||
}
|
||||
if (CanScrollDown)
|
||||
{
|
||||
screen->DrawText (CR_ORANGE, 3, y - 8 + labelofs, "\x1b", DTA_Clean, true, TAG_DONE);
|
||||
M_DrawConText(CR_ORANGE, 3, y - 8 + labelofs, "\x1b");
|
||||
}
|
||||
screen->SetFont (SmallFont);
|
||||
|
||||
if (flagsvar)
|
||||
{
|
||||
|
|
|
@ -117,7 +117,7 @@ AActor *P_SpawnPlayerMissile (AActor* source, const PClass *type);
|
|||
AActor *P_SpawnPlayerMissile (AActor *source, const PClass *type, angle_t angle);
|
||||
AActor *P_SpawnPlayerMissile (AActor *source, fixed_t x, fixed_t y, fixed_t z, const PClass *type, angle_t angle);
|
||||
|
||||
void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz);
|
||||
void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz, bool oldz_has_viewheight=false);
|
||||
|
||||
//
|
||||
// [RH] P_THINGS
|
||||
|
|
|
@ -2058,7 +2058,7 @@ void P_ZMovement (AActor *mo)
|
|||
P_CheckFakeFloorTriggers (mo, oldz);
|
||||
}
|
||||
|
||||
void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz)
|
||||
void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz, bool oldz_has_viewheight)
|
||||
{
|
||||
if (mo->player && (mo->player->cheats & CF_PREDICTING))
|
||||
{
|
||||
|
@ -2092,7 +2092,10 @@ void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz)
|
|||
}
|
||||
|
||||
newz = mo->z + viewheight;
|
||||
oldz += viewheight;
|
||||
if (!oldz_has_viewheight)
|
||||
{
|
||||
oldz += viewheight;
|
||||
}
|
||||
|
||||
if (oldz <= waterz && newz > waterz)
|
||||
{ // View went above fake floor
|
||||
|
|
|
@ -1833,6 +1833,7 @@ void P_CrouchMove(player_t * player, int direction)
|
|||
fixed_t defaultheight = player->mo->GetDefault()->height;
|
||||
fixed_t savedheight = player->mo->height;
|
||||
fixed_t crouchspeed = direction * CROUCHSPEED;
|
||||
fixed_t oldheight = player->viewheight;
|
||||
|
||||
player->crouchdir = (signed char) direction;
|
||||
player->crouchfactor += crouchspeed;
|
||||
|
@ -1854,6 +1855,9 @@ void P_CrouchMove(player_t * player, int direction)
|
|||
player->crouchfactor = clamp<fixed_t>(player->crouchfactor, FRACUNIT/2, FRACUNIT);
|
||||
player->viewheight = FixedMul(player->mo->ViewHeight, player->crouchfactor);
|
||||
player->crouchviewdelta = player->viewheight - player->mo->ViewHeight;
|
||||
|
||||
// Check for eyes going above/below fake floor due to crouching motion.
|
||||
P_CheckFakeFloorTriggers(player->mo, player->mo->z + oldheight, true);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -98,6 +98,7 @@ void STACK_ARGS DCanvas::DrawText (int normalcolor, int x, int y, const char *st
|
|||
int boldcolor;
|
||||
const BYTE *range;
|
||||
int height;
|
||||
int forcedwidth = 0;
|
||||
int scalex, scaley;
|
||||
int kerning;
|
||||
FTexture *pic;
|
||||
|
@ -147,12 +148,14 @@ void STACK_ARGS DCanvas::DrawText (int normalcolor, int x, int y, const char *st
|
|||
#endif
|
||||
break;
|
||||
|
||||
// We don't handle these. :(
|
||||
case DTA_DestWidth:
|
||||
case DTA_DestHeight:
|
||||
*(DWORD *)tags = TAG_IGNORE;
|
||||
data = va_arg (tags, DWORD);
|
||||
break;
|
||||
|
||||
// Translation is specified explicitly by the text.
|
||||
case DTA_Translation:
|
||||
*(DWORD *)tags = TAG_IGNORE;
|
||||
ptrval = va_arg (tags, void*);
|
||||
|
@ -186,6 +189,14 @@ void STACK_ARGS DCanvas::DrawText (int normalcolor, int x, int y, const char *st
|
|||
case DTA_TextLen:
|
||||
maxstrlen = va_arg (tags, int);
|
||||
break;
|
||||
|
||||
case DTA_CellX:
|
||||
forcedwidth = va_arg (tags, int);
|
||||
break;
|
||||
|
||||
case DTA_CellY:
|
||||
height = va_arg (tags, int);
|
||||
break;
|
||||
}
|
||||
tag = va_arg (tags, DWORD);
|
||||
}
|
||||
|
@ -219,7 +230,21 @@ void STACK_ARGS DCanvas::DrawText (int normalcolor, int x, int y, const char *st
|
|||
{
|
||||
va_list taglist;
|
||||
va_start (taglist, string);
|
||||
DrawTexture (pic, cx, cy, DTA_Translation, range, TAG_MORE, &taglist);
|
||||
if (forcedwidth)
|
||||
{
|
||||
w = forcedwidth;
|
||||
DrawTexture (pic, cx, cy,
|
||||
DTA_Translation, range,
|
||||
DTA_DestWidth, forcedwidth,
|
||||
DTA_DestHeight, height,
|
||||
TAG_MORE, &taglist);
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawTexture (pic, cx, cy,
|
||||
DTA_Translation, range,
|
||||
TAG_MORE, &taglist);
|
||||
}
|
||||
va_end (taglist);
|
||||
}
|
||||
cx += (w + kerning) * scalex;
|
||||
|
|
|
@ -102,6 +102,10 @@ enum
|
|||
DTA_KeepRatio, // doesn't adjust screen size for DTA_Virtual* if the aspect ratio is not 4:3
|
||||
DTA_TextLen, // for DrawText: stop after this many characters, even if \0 not hit
|
||||
DTA_RenderStyle, // same as render style for actors
|
||||
|
||||
// For DrawText calls:
|
||||
DTA_CellX, // horizontal size of character cell
|
||||
DTA_CellY, // vertical size of character cell
|
||||
};
|
||||
|
||||
enum
|
||||
|
|
Loading…
Reference in a new issue