mirror of
https://github.com/ZDoom/Raze.git
synced 2024-12-11 13:21:49 +00:00
- ported the statistics screen.
This commit is contained in:
parent
0e051a9d96
commit
18e37577bc
4 changed files with 97 additions and 23 deletions
|
@ -3,6 +3,9 @@
|
||||||
#include "screenjob.h"
|
#include "screenjob.h"
|
||||||
#include "raze_music.h"
|
#include "raze_music.h"
|
||||||
#include "raze_sound.h"
|
#include "raze_sound.h"
|
||||||
|
#include "v_draw.h"
|
||||||
|
#include "v_font.h"
|
||||||
|
#include "mapinfo.h"
|
||||||
|
|
||||||
BEGIN_WH_NS
|
BEGIN_WH_NS
|
||||||
|
|
||||||
|
@ -31,30 +34,88 @@ void IntroMovie(const CompletionFunc& completion)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void showStatisticsScreen()
|
static const char* ratings[] = { "poor", "average", "good", "perfect" };
|
||||||
|
|
||||||
|
/*
|
||||||
|
inited = false;
|
||||||
|
if (init("stairs.smk"))
|
||||||
|
inited = true;
|
||||||
|
*/
|
||||||
|
class DStatisticsScreen : public DScreenJob
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
gStatisticsScreen.show(plr, new Runnable(){
|
boolean inited = false;
|
||||||
@Override
|
int bonus, rating;
|
||||||
public void run() {
|
|
||||||
mapon++;
|
public:
|
||||||
spritesound(S_CHAINDOOR1, &sprite[plr.spritenum]);
|
DStatisticsScreen(PLAYER& plr)
|
||||||
playertorch = 0;
|
{
|
||||||
spritesound(S_WARP, &sprite[plr.spritenum]);
|
if (kills > killcnt)
|
||||||
loadnewlevel(mapon);
|
kills = killcnt;
|
||||||
|
int killp = (kills * 100) / (killcnt + 1);
|
||||||
|
if (treasuresfound > treasurescnt)
|
||||||
|
treasuresfound = treasurescnt;
|
||||||
|
int treap = (treasuresfound * 100) / (treasurescnt + 1);
|
||||||
|
rating = (killp + treap) / 2;
|
||||||
|
if (rating >= 95) {
|
||||||
|
rating = 3;
|
||||||
}
|
}
|
||||||
});
|
else if (rating >= 70)
|
||||||
#endif
|
rating = 2;
|
||||||
|
else if (rating >= 40)
|
||||||
|
rating = 1;
|
||||||
|
else rating = 0;
|
||||||
|
bonus = rating * 500;
|
||||||
|
plr.score += bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawText(int x, int y, const char* text)
|
||||||
|
{
|
||||||
|
DrawText(twod, SmallFont, CR_UNTRANSLATED, x, y, text, DTA_FullscreenScale, FSMode_Fit320x200, TAG_DONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Frame(uint64_t nsclock, bool skiprequest) override
|
||||||
|
{
|
||||||
|
if (nsclock == 0) SND_Sound(S_CHAINDOOR1);
|
||||||
|
DrawTexture(twod, tileGetTexture(VMAINBLANK), 0, 0, DTA_Fullscreen, FSMode_ScaleToFit43, TAG_DONE);
|
||||||
|
|
||||||
|
drawText(10, 13, currentLevel->DisplayName());
|
||||||
|
drawText(10, 31, GStrings("Level conquered"));
|
||||||
|
|
||||||
|
drawText(10, 64, GStrings("Enemies killed"));
|
||||||
|
drawText(160 + 48 + 14, 64, FStringf("%d %s %d", kills, GStrings("TXT_OF"), killcnt));
|
||||||
|
|
||||||
|
drawText(10, 64 + 18, GStrings("Treasures found"));
|
||||||
|
drawText(160 + 48 + 14, 64 + 18, FStringf("%d %s %d", treasuresfound, GStrings("TXT_OF"), treasurescnt));
|
||||||
|
|
||||||
|
drawText(10, 64 + 2 * 18, GStrings("Experience gained"));
|
||||||
|
drawText(160 + 48 + 14, 64 + 2 * 18, FStringf("%s", (expgained + bonus)));
|
||||||
|
|
||||||
|
drawText(10, 64 + 3 * 18, GStrings("Rating"));
|
||||||
|
drawText(160 + 48 + 14, 64 + 3 * 18, FStringf("%d", GStrings(ratings[rating])));
|
||||||
|
|
||||||
|
drawText(10, 64 + 4 * 18, GStrings("Bonus"));
|
||||||
|
drawText(160 + 48 + 14, 64 + 4 * 18, FStringf("%d", bonus));
|
||||||
|
|
||||||
|
return skiprequest ? -1 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void showStatisticsScreen(CompletionFunc completion)
|
||||||
|
{
|
||||||
|
JobDesc job = { Create<DStatisticsScreen>(player[pyrn]), nullptr };
|
||||||
|
RunScreenJob(&job, 1, completion, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void startWh2Ending()
|
void startWh2Ending(CompletionFunc completion)
|
||||||
{
|
{
|
||||||
#if 0
|
JobDesc jobs[3];
|
||||||
if (gCutsceneScreen.init("ending1.smk"))
|
jobs[0] = { PlayVideo("smk/ending1.smk", nullptr) };
|
||||||
if (gCutsceneScreen.init("ending2.smk"))
|
jobs[1] = { PlayVideo("smk/ending2.smk", nullptr) };
|
||||||
if (gCutsceneScreen.init("ending3.smk"))
|
jobs[2] = { PlayVideo("smk/ending3.smk", nullptr) };
|
||||||
game.changeScreen(gMenuScreen);
|
RunScreenJob(jobs, 3, completion, true, false);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void showVictoryScreen()
|
void showVictoryScreen()
|
||||||
|
@ -62,6 +123,8 @@ void showVictoryScreen()
|
||||||
//game.changeScreen(gVictoryScreen);
|
//game.changeScreen(gVictoryScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
void orbpic(PLAYER& plr, int currentorb) {
|
void orbpic(PLAYER& plr, int currentorb) {
|
||||||
if (plr.orbammo[currentorb] < 0)
|
if (plr.orbammo[currentorb] < 0)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "ns.h"
|
#include "ns.h"
|
||||||
#include "wh.h"
|
#include "wh.h"
|
||||||
|
#include "gamestate.h"
|
||||||
|
|
||||||
BEGIN_WH_NS
|
BEGIN_WH_NS
|
||||||
|
|
||||||
|
@ -581,7 +582,9 @@ void InitItems()
|
||||||
|
|
||||||
{
|
{
|
||||||
if (isWh2()) {
|
if (isWh2()) {
|
||||||
startWh2Ending();
|
startWh2Ending([](bool) {
|
||||||
|
gameaction = ga_mainmenu;
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
plr.treasure[THORNEDSKULL] = 1;
|
plr.treasure[THORNEDSKULL] = 1;
|
||||||
|
|
|
@ -501,8 +501,8 @@ void analyzesprites(PLAYER& plr, int dasmoothratio);
|
||||||
void precacheTiles();
|
void precacheTiles();
|
||||||
|
|
||||||
|
|
||||||
void startWh2Ending();
|
void startWh2Ending(CompletionFunc);
|
||||||
void showStatisticsScreen();
|
void showStatisticsScreen(CompletionFunc);
|
||||||
void showVictoryScreen();
|
void showVictoryScreen();
|
||||||
|
|
||||||
void InitNames();
|
void InitNames();
|
||||||
|
|
|
@ -462,7 +462,15 @@ void teleporter() {
|
||||||
justteleported = true;
|
justteleported = true;
|
||||||
|
|
||||||
if(isWh2()) {
|
if(isWh2()) {
|
||||||
showStatisticsScreen();
|
auto pplr = &plr;
|
||||||
|
showStatisticsScreen([=](bool)
|
||||||
|
{
|
||||||
|
mapon++;
|
||||||
|
spritesound(S_CHAINDOOR1, &sprite[pplr->spritenum]);
|
||||||
|
playertorch = 0;
|
||||||
|
spritesound(S_WARP, &sprite[pplr->spritenum]);
|
||||||
|
loadnewlevel(mapon);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue