mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-06-01 09:41:58 +00:00
- Fixed: player.damagescreencolor was not implemented for the GL renderer.
Update to ZDoom r1190: - Gave the PlayerPawn base class a default damage fade color instead of hacking it into the actor when actually used. - Fixed: The DamageFade color was not saved in savegames. - Added Blzut3's patch for a real Chex Quest game mode. - Fixed: SKIP_SUPER doesn't work for inventory items so it must be disabled for them - Fixed: Chex Quest doesn't have a HELP2 screen so it must not be used in the gameinfo. - Fixed: Default blood color is no longer red so P_DrawSplash2 must get it from the gameinfo instead. - Added new French language texts by DoomKn1ght_. - Blood default color is set in the gameinfo now so that Chex Quest can default to green instead of red. - Fixed: The version of CheckNumForFullName that checks for a specific WAD did not work. - Moved MAPINFO names into gameinfo structure. - Added Chex Quest support. Credits go to fraggle for creating a Dehacked patch that does most of the work. The rest includes a new MAPINFO and removal of the drop items from the monsters being used. - Added Win64 support to the crash report generator. (Pity that Win32 cannot be as informative.) - Added and fixed Boss death submission for random spawner. - Added functions to FActorInfo that can set the damage factors and pain chances to reduce the chance of new errors when working with these features. - Fixed: The handling of the deprecated FIRERESIST flag didn't work. There were 3 problems: * Actor defaults have no class information so HandleDeprecatedFlags needs to be passed a pointer to the ActorInfo. * The DamageFactors list is only created when needed so the code needs to check if it already exists. * damage factors are stored as fixed_t but this set a float. - Fixed: Timidity::Renderer::reset_voices() must completely zero the voices. Because this wasn't done, note_on() could try to access the sample for a voice that had never been played yet and access random memory. There may be other places where it's a problem, but this is where I noticed it, by chance. - Added a traditional Strife color set for the automap. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@166 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
62fa25fd63
commit
43b83f14c9
53 changed files with 1801 additions and 214 deletions
102
src/m_menu.cpp
102
src/m_menu.cpp
|
@ -926,7 +926,7 @@ void M_NotifyNewSave (const char *file, const char *title, bool okForQuicksave)
|
|||
//
|
||||
void M_DrawLoad (void)
|
||||
{
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
FTexture *title = TexMan["M_LOADG"];
|
||||
screen->DrawTexture (title,
|
||||
|
@ -952,7 +952,7 @@ void M_DrawLoad (void)
|
|||
//
|
||||
void M_DrawSaveLoadBorder (int x, int y, int len)
|
||||
{
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -1272,7 +1272,10 @@ void M_LoadGame (int choice)
|
|||
{
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage (GStrings("LOADNET"), NULL, false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage (GStrings("CLOADNET"), NULL, false);
|
||||
else
|
||||
M_StartMessage (GStrings("LOADNET"), NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1289,7 +1292,7 @@ void M_LoadGame (int choice)
|
|||
//
|
||||
void M_DrawSave()
|
||||
{
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
FTexture *title = TexMan["M_SAVEG"];
|
||||
screen->DrawTexture (title,
|
||||
|
@ -1401,7 +1404,10 @@ void M_QuickSave ()
|
|||
M_SaveGame (0);
|
||||
return;
|
||||
}
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("QSPROMPT"), quickSaveSlot->Title);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("CQSPROMPT"), quickSaveSlot->Title);
|
||||
else
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("QSPROMPT"), quickSaveSlot->Title);
|
||||
strcpy (savegamestring, quickSaveSlot->Title);
|
||||
M_StartMessage (tempstring, M_QuickSaveResponse, true);
|
||||
}
|
||||
|
@ -1425,7 +1431,10 @@ void M_QuickLoad ()
|
|||
{
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage (GStrings("QLOADNET"), NULL, false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage (GStrings("CQLOADNET"), NULL, false);
|
||||
else
|
||||
M_StartMessage (GStrings("QLOADNET"), NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1437,7 +1446,10 @@ void M_QuickLoad ()
|
|||
M_LoadGame (0);
|
||||
return;
|
||||
}
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("QLPROMPT"), quickSaveSlot->Title);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("CQLPROMPT"), quickSaveSlot->Title);
|
||||
else
|
||||
mysnprintf (tempstring, countof(tempstring), GStrings("QLPROMPT"), quickSaveSlot->Title);
|
||||
M_StartMessage (tempstring, M_QuickLoadResponse, true);
|
||||
}
|
||||
|
||||
|
@ -1499,7 +1511,7 @@ void M_DrawReadThis ()
|
|||
//
|
||||
void M_DrawMainMenu (void)
|
||||
{
|
||||
if (gameinfo.gametype == GAME_Doom)
|
||||
if (gameinfo.gametype & GAME_DoomChex)
|
||||
{
|
||||
screen->DrawTexture (TexMan["M_DOOM"], 94, 2, DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
|
@ -1542,9 +1554,9 @@ void M_DrawHereticMainMenu ()
|
|||
//
|
||||
void M_DrawNewGame(void)
|
||||
{
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
screen->DrawTexture (TexMan[gameinfo.gametype == GAME_Doom ? "M_NEWG" : "M_NGAME"], 96, 14, DTA_Clean, true, TAG_DONE);
|
||||
screen->DrawTexture (TexMan[gameinfo.gametype & GAME_DoomChex ? "M_NEWG" : "M_NGAME"], 96, 14, DTA_Clean, true, TAG_DONE);
|
||||
screen->DrawTexture (TexMan["M_SKILL"], 54, 38, DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
}
|
||||
|
@ -1553,12 +1565,15 @@ void M_NewGame(int choice)
|
|||
{
|
||||
if (netgame && !demoplayback)
|
||||
{
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage (GStrings("CNEWGAME"), NULL, false);
|
||||
else
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
// Set up episode menu positioning
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
EpiDef.x = 48;
|
||||
EpiDef.y = 63;
|
||||
|
@ -1679,7 +1694,7 @@ static void M_DrawClassMenu ()
|
|||
if (ClassMenuDef.numitems > 4 && gameinfo.gametype & GAME_Raven)
|
||||
tit_y = 2;
|
||||
|
||||
screen->DrawText (gameinfo.gametype == GAME_Doom ? CR_RED : CR_UNTRANSLATED,
|
||||
screen->DrawText (gameinfo.gametype & GAME_DoomChex ? CR_RED : CR_UNTRANSLATED,
|
||||
160 - BigFont->StringWidth (text)/2,
|
||||
tit_y,
|
||||
text, DTA_Clean, true, TAG_DONE);
|
||||
|
@ -1738,7 +1753,7 @@ static void DrawHexenSkillMenu()
|
|||
//
|
||||
void M_DrawEpisode ()
|
||||
{
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
screen->DrawTexture (TexMan["M_EPISOD"], 54, 38, DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
|
@ -1790,6 +1805,10 @@ void M_Episode (int choice)
|
|||
M_StartMessage(GStrings("SWSTRING"),NULL,false);
|
||||
//M_SetupNextMenu(&ReadDef);
|
||||
}
|
||||
else if (gameinfo.gametype == GAME_Chex)
|
||||
{
|
||||
M_StartMessage(GStrings("CSWSTRING"),NULL,false);
|
||||
}
|
||||
else
|
||||
{
|
||||
showSharewareMessage = 3*TICRATE;
|
||||
|
@ -1818,7 +1837,10 @@ static void SCClass (int option)
|
|||
{
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage (GStrings("CNEWGAME"), NULL, false);
|
||||
else
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1846,7 +1868,10 @@ static void M_ChooseClass (int choice)
|
|||
{
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage (GStrings("CNEWGAME"), NULL, false);
|
||||
else
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1899,11 +1924,17 @@ void M_EndGame(int choice)
|
|||
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage(GStrings("NETEND"),NULL,false);
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage(GStrings("CNETEND"),NULL,false);
|
||||
else
|
||||
M_StartMessage(GStrings("NETEND"),NULL,false);
|
||||
return;
|
||||
}
|
||||
|
||||
M_StartMessage(GStrings("ENDGAME"),M_EndGameResponse,true);
|
||||
|
||||
if(gameinfo.gametype == GAME_Chex)
|
||||
M_StartMessage(GStrings("CENDGAME"),M_EndGameResponse,true);
|
||||
else
|
||||
M_StartMessage(GStrings("ENDGAME"),M_EndGameResponse,true);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1966,12 +1997,19 @@ void M_QuitGame (int choice)
|
|||
{
|
||||
// We pick index 0 which is language sensitive,
|
||||
// or one at random, between 1 and maximum number.
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
int quitmsg = gametic % (gameinfo.gametype == GAME_Doom ? NUM_QUITDOOMMESSAGES : NUM_QUITSTRIFEMESSAGES - 1);
|
||||
if (quitmsg != 0 || gameinfo.gametype == GAME_Strife)
|
||||
int quitmsg = 0;
|
||||
if (gameinfo.gametype == GAME_Doom)
|
||||
quitmsg = gametic % NUM_QUITDOOMMESSAGES;
|
||||
else if (gameinfo.gametype == GAME_Strife)
|
||||
quitmsg = gametic % NUM_QUITSTRIFEMESSAGES - 1;
|
||||
else //Chex quest has 2 messages but one is more likely to show
|
||||
quitmsg = (gametic % NUM_QUITCHEXMESSAGES + 6) > NUM_QUITCHEXMESSAGES ? NUM_QUITCHEXMESSAGES - 1 : (gametic % NUM_QUITCHEXMESSAGES + 6);
|
||||
|
||||
if (quitmsg != 0 || gameinfo.gametype == GAME_Strife || gameinfo.gametype == GAME_Chex)
|
||||
{
|
||||
EndString.Format("QUITMSG%d", quitmsg + (gameinfo.gametype == GAME_Doom ? 0 : NUM_QUITDOOMMESSAGES + 1));
|
||||
EndString.Format("QUITMSG%d", quitmsg + (gameinfo.gametype == GAME_Doom ? 0 : (gameinfo.gametype == GAME_Chex ? NUM_QUITDOOMMESSAGES + NUM_QUITSTRIFEMESSAGES : NUM_QUITDOOMMESSAGES + 1)));
|
||||
EndString.Format("%s\n\n%s", GStrings(EndString), GStrings("DOSY"));
|
||||
}
|
||||
else
|
||||
|
@ -2061,7 +2099,7 @@ static void M_PlayerSetupDrawer ()
|
|||
EColorRange label, value;
|
||||
DWORD color;
|
||||
|
||||
if (!(gameinfo.gametype & (GAME_Doom|GAME_Strife)))
|
||||
if (!(gameinfo.gametype & (GAME_DoomStrifeChex)))
|
||||
{
|
||||
xo = 5;
|
||||
yo = 5;
|
||||
|
@ -2077,7 +2115,7 @@ static void M_PlayerSetupDrawer ()
|
|||
|
||||
// Draw title
|
||||
const char * text = GStrings("MNU_PLAYERSETUP");
|
||||
screen->DrawText (gameinfo.gametype == GAME_Doom ? CR_RED : CR_UNTRANSLATED,
|
||||
screen->DrawText (gameinfo.gametype & GAME_DoomChex ? CR_RED : CR_UNTRANSLATED,
|
||||
160 - BigFont->StringWidth (text)/2,
|
||||
15,
|
||||
text, DTA_Clean, true, TAG_DONE);
|
||||
|
@ -3210,7 +3248,7 @@ void M_Drawer ()
|
|||
if (color == CR_UNTRANSLATED)
|
||||
{
|
||||
// The default DBIGFONT is white but Doom's default should be red.
|
||||
if (gameinfo.gametype == GAME_Doom)
|
||||
if (gameinfo.gametype & GAME_DoomChex)
|
||||
{
|
||||
color = CR_RED;
|
||||
}
|
||||
|
@ -3241,12 +3279,12 @@ void M_Drawer ()
|
|||
screen->SetFont (ConFont);
|
||||
screen->DrawText (CR_RED, x - 16,
|
||||
currentMenu->y + itemOn*LINEHEIGHT +
|
||||
(!(gameinfo.gametype & (GAME_Doom|GAME_Strife)) ? 6 : -1), "\xd",
|
||||
(!(gameinfo.gametype & (GAME_DoomStrifeChex)) ? 6 : -1), "\xd",
|
||||
DTA_Clean, true, TAG_DONE);
|
||||
screen->SetFont (SmallFont);
|
||||
}
|
||||
}
|
||||
else if (gameinfo.gametype == GAME_Doom)
|
||||
else if (gameinfo.gametype & GAME_DoomChex)
|
||||
{
|
||||
screen->DrawTexture (TexMan[skullName[whichSkull]],
|
||||
x + SKULLXOFF, currentMenu->y - 5 + itemOn*LINEHEIGHT,
|
||||
|
@ -3398,7 +3436,7 @@ void M_Init (void)
|
|||
|
||||
atterm (M_Deinit);
|
||||
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
TopLevelMenu = currentMenu = &MainDef;
|
||||
if (gameinfo.gametype == GAME_Strife)
|
||||
|
@ -3429,10 +3467,10 @@ void M_Init (void)
|
|||
lastSaveSlot = NULL;
|
||||
strcpy (NewSaveNode.Title, "<New Save Game>");
|
||||
|
||||
underscore[0] = (gameinfo.gametype & (GAME_Doom|GAME_Strife)) ? '_' : '[';
|
||||
underscore[0] = (gameinfo.gametype & (GAME_DoomStrifeChex)) ? '_' : '[';
|
||||
underscore[1] = '\0';
|
||||
|
||||
if (gameinfo.gametype == GAME_Doom)
|
||||
if (gameinfo.gametype & GAME_DoomChex)
|
||||
{
|
||||
LINEHEIGHT = 16;
|
||||
}
|
||||
|
@ -3494,7 +3532,7 @@ void M_Init (void)
|
|||
ClassMenuDef.numitems = 1;
|
||||
}
|
||||
|
||||
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||
if (gameinfo.gametype & (GAME_DoomStrifeChex))
|
||||
{
|
||||
ClassMenuDef.x = 48;
|
||||
ClassMenuDef.y = 63;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue