mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-27 20:20:40 +00:00
- Exhumed: added a white flash and fixed the accompanying sound when exiting a level.
See #375
This commit is contained in:
parent
1646e302d2
commit
cddd5d3a4c
5 changed files with 34 additions and 25 deletions
|
@ -54,6 +54,7 @@ extern short bPlayerPan;
|
|||
extern short bLockPan;
|
||||
|
||||
|
||||
static MapRecord* NextMap;
|
||||
|
||||
void uploadCinemaPalettes();
|
||||
int32_t registerosdcommands(void);
|
||||
|
@ -457,16 +458,32 @@ void GameInterface::Ticker()
|
|||
else
|
||||
{
|
||||
// Wait for the end of level sound to play out, but stop updating the playsim.
|
||||
EndLevel--;
|
||||
if (EndLevel == 13)
|
||||
PlayLocalSound(StaticSound[59], 0, true, CHANF_UI);
|
||||
|
||||
if (EndLevel > 1) EndLevel--;
|
||||
r_NoInterpolate = false;
|
||||
if (EndLevel == 0)
|
||||
{
|
||||
auto map = currentLevel->levelNumber == 20? nullptr : FindMapByLevelNum(currentLevel->levelNumber+1); // todo: Use the map record for progression
|
||||
CompleteLevel(map);
|
||||
}
|
||||
int flash = 7 - abs(EndLevel - 7);
|
||||
videoTintBlood(flash * 30, flash * 30, flash * 30);
|
||||
if (EndLevel == 1)
|
||||
{
|
||||
if (!soundEngine->GetSoundPlayingInfo(SOURCE_None, nullptr, StaticSound[59] + 1))
|
||||
{
|
||||
videoTintBlood(0, 0, 0);
|
||||
CompleteLevel(NextMap);
|
||||
NextMap = nullptr;
|
||||
EndLevel = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LevelFinished()
|
||||
{
|
||||
NextMap = currentLevel->levelNumber == 20 ? nullptr : FindMapByLevelNum(currentLevel->levelNumber + 1); // todo: Use the map record for progression
|
||||
EndLevel = 13;
|
||||
}
|
||||
|
||||
void ExitGame()
|
||||
{
|
||||
ShutDown();
|
||||
|
@ -682,4 +699,9 @@ void LoadTextureState()
|
|||
TileFiles.InvalidateTile(kEnergy2);
|
||||
}
|
||||
|
||||
|
||||
CCMD(endit)
|
||||
{
|
||||
LevelFinished();
|
||||
}
|
||||
END_PS_NS
|
||||
|
|
|
@ -206,6 +206,7 @@ extern char g_modDir[BMAX_PATH];
|
|||
void G_LoadGroupsInDir(const char* dirname);
|
||||
void G_DoAutoload(const char* dirname);
|
||||
void DrawRel(int tile, double x, double y, int shade = 0);
|
||||
void LevelFinished();
|
||||
|
||||
// savegame.
|
||||
|
||||
|
|
|
@ -68,22 +68,8 @@ static void FinishLevel(int lnum, TArray<JobDesc> &jobs)
|
|||
automapMode = am_off;
|
||||
|
||||
STAT_Update(lnum == kMap20);
|
||||
if (lnum != kMap20)
|
||||
{
|
||||
if (EndLevel == 13 && !netgame)
|
||||
{
|
||||
// There's really no choice but to enter an active wait loop here to make the sound play out.
|
||||
PlayLocalSound(StaticSound[59], 0, true, CHANF_UI);
|
||||
int nTicks = I_msTime() + 100;
|
||||
while (nTicks > I_msTime())
|
||||
{
|
||||
I_GetEvent();
|
||||
soundEngine->UpdateSounds(I_GetTime());
|
||||
}
|
||||
Net_ClearFifo();
|
||||
}
|
||||
}
|
||||
else nPlayerLives[0] = 0;
|
||||
if (lnum == kMap20)
|
||||
nPlayerLives[0] = 0;
|
||||
|
||||
DoAfterCinemaScene(lnum-1, jobs);
|
||||
}
|
||||
|
|
|
@ -1544,7 +1544,7 @@ void DoFinale()
|
|||
}
|
||||
else if (nFinaleStage == 3 && leveltime*4 >= nextstage)
|
||||
{
|
||||
EndLevel = 13;
|
||||
LevelFinished();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1068,7 +1068,7 @@ void FuncPlayer(int a, int nDamage, int nRun)
|
|||
}
|
||||
else
|
||||
{
|
||||
EndLevel = 13;
|
||||
LevelFinished();
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -2469,7 +2469,7 @@ do_default_b:
|
|||
{
|
||||
if (!bInDemo)
|
||||
{
|
||||
EndLevel = 13;
|
||||
LevelFinished();
|
||||
}
|
||||
|
||||
DestroyItemAnim(nValB);
|
||||
|
|
Loading…
Reference in a new issue