mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- use a more precise timer for Exhumed's text scroller.
This commit is contained in:
parent
a7b198d7ee
commit
8dfb7967e2
4 changed files with 11 additions and 12 deletions
|
@ -630,7 +630,7 @@ public:
|
|||
int DisplayFrame()
|
||||
{
|
||||
auto& job = jobs[index];
|
||||
auto now = I_nsTime();
|
||||
auto now = I_GetTimeNS();
|
||||
bool processed = job.job->ProcessInput();
|
||||
bool skiprequest = inputState.CheckAllInput() && !processed;
|
||||
if (startTime == -1)
|
||||
|
@ -661,7 +661,7 @@ public:
|
|||
|
||||
int FadeoutFrame()
|
||||
{
|
||||
auto now = I_nsTime();
|
||||
auto now = I_GetTimeNS();
|
||||
|
||||
if (!M_Active())
|
||||
{
|
||||
|
|
|
@ -834,7 +834,7 @@ public:
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void TextOverlay::Start(int starttime)
|
||||
void TextOverlay::Start(double starttime)
|
||||
{
|
||||
lastclock = starttime;
|
||||
}
|
||||
|
@ -879,12 +879,12 @@ void TextOverlay::DisplayText()
|
|||
}
|
||||
}
|
||||
|
||||
bool TextOverlay::AdvanceCinemaText(int clock)
|
||||
bool TextOverlay::AdvanceCinemaText(double clock)
|
||||
{
|
||||
if (nHeight + nCrawlY > 0 || CDplaying())
|
||||
{
|
||||
nCrawlY-= (clock - lastclock) / 15.; // do proper interpolation.
|
||||
Printf("Scroll: crawlY = %f, clock = %d, time = %d, real time = %u\n", nCrawlY, clock, lastclock - clock, I_msTime());
|
||||
Printf("Scroll: crawlY = %f, clock = %f, time = %f, real time = %u\n", nCrawlY, clock, lastclock - clock, I_msTime());
|
||||
lastclock = clock;
|
||||
return true;
|
||||
}
|
||||
|
@ -980,7 +980,7 @@ public:
|
|||
DrawTexture(twod, tileGetTexture(cinematile), 0, 0, DTA_FullscreenEx, FSMode_ScaleToFit43, DTA_TranslationIndex, TRANSLATION(Translation_BasePalettes, currentCinemaPalette), TAG_DONE);
|
||||
|
||||
text.DisplayText();
|
||||
auto cont = text.AdvanceCinemaText(clock * 120 / 1'000'000'000);
|
||||
auto cont = text.AdvanceCinemaText(clock * (120. / 1'000'000'000));
|
||||
int ret = skiprequest ? -1 : cont ? 1 : 0;
|
||||
|
||||
// quit the game if we've finished level 4 and displayed the advert text
|
||||
|
|
|
@ -185,18 +185,18 @@ class TextOverlay
|
|||
double nCrawlY;
|
||||
short nLeft[50];
|
||||
int nHeight;
|
||||
int lastclock;
|
||||
double lastclock;
|
||||
TArray<FString> screentext;
|
||||
int currentCinemaPalette = 0;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
void Start(int starttime);
|
||||
void Start(double starttime);
|
||||
void ComputeCinemaText();
|
||||
void ReadyCinemaText(uint16_t nVal);
|
||||
void DisplayText();
|
||||
bool AdvanceCinemaText(int clock);
|
||||
bool AdvanceCinemaText(double clock);
|
||||
void SetPalette(int pal) { currentCinemaPalette = pal; }
|
||||
};
|
||||
|
||||
|
|
|
@ -405,7 +405,6 @@ void DrawView(double smoothRatio, bool sceneonly)
|
|||
|
||||
if (nFreeze == 2)
|
||||
{
|
||||
int myclock = leveltime + mulscale16(4, (int)smoothRatio);
|
||||
if (nHeadStage == 4)
|
||||
{
|
||||
nHeadStage = 5;
|
||||
|
@ -424,7 +423,7 @@ void DrawView(double smoothRatio, bool sceneonly)
|
|||
|
||||
if (bSubTitles)
|
||||
{
|
||||
subtitleOverlay.Start(myclock);
|
||||
subtitleOverlay.Start(I_GetTimeNS());
|
||||
if (currentLevel->levelNumber == 1)
|
||||
subtitleOverlay.ReadyCinemaText(1);
|
||||
else
|
||||
|
@ -434,7 +433,7 @@ void DrawView(double smoothRatio, bool sceneonly)
|
|||
}
|
||||
else if (nHeadStage == 5)
|
||||
{
|
||||
if ((bSubTitles && !subtitleOverlay.AdvanceCinemaText(myclock)) || inputState.CheckAllInput())
|
||||
if ((bSubTitles && !subtitleOverlay.AdvanceCinemaText(I_GetTimeNS())) || inputState.CheckAllInput())
|
||||
{
|
||||
inputState.ClearAllInput();
|
||||
EndLevel = 1;
|
||||
|
|
Loading…
Reference in a new issue