From 790e76d3731c98c59dc28a1a2b918ecdeb24bdde Mon Sep 17 00:00:00 2001 From: Treeki Date: Tue, 9 Apr 2013 22:27:45 +0200 Subject: only do the final part of the ending sequence once; some other minor fixes --- src/creditsMgr.cpp | 6 +++++- src/koopatlas/pathmanager.cpp | 7 +++++-- src/levelinfo.cpp | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/creditsMgr.cpp b/src/creditsMgr.cpp index 4f30bc4..e4dafda 100644 --- a/src/creditsMgr.cpp +++ b/src/creditsMgr.cpp @@ -564,7 +564,11 @@ void dCreditsMgr_c::theEnd() { GetTheEnd()->willShow = true; } void dCreditsMgr_c::exitStage() { - ExitStage(WORLD_MAP, 0x20000000, BEAT_LEVEL, CIRCLE_WIPE); + SaveBlock *save = GetSaveFile()->GetBlock(-1); + bool wasPreviouslyBeat = (save->bitfield & 2) != 0; + save->bitfield |= 2; + + ExitStage(WORLD_MAP, wasPreviouslyBeat ? 0 : 0x20000000, BEAT_LEVEL, CIRCLE_WIPE); } Vec2 dCreditsMgr_c::_vf70() { diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp index 162084d..ad39c69 100644 --- a/src/koopatlas/pathmanager.cpp +++ b/src/koopatlas/pathmanager.cpp @@ -695,6 +695,8 @@ bool dWMPathManager_c::doingThings() { } void dWMPathManager_c::execute() { + dScKoopatlas_c *wm = dScKoopatlas_c::instance; + if (isEnteringLevel) { if (levelStartWait > 0) { levelStartWait--; @@ -724,7 +726,8 @@ void dWMPathManager_c::execute() { waitAfterInitialPlayerAnim = 38; nw4r::snd::SoundHandle something; - PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_VOC_MA_CS_JUMP, 1); + if (!wm->isEndingScene) + PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_VOC_MA_CS_JUMP, 1); } } } @@ -735,7 +738,7 @@ void dWMPathManager_c::execute() { waitAfterInitialPlayerAnim--; if (waitAfterInitialPlayerAnim == 0) daWMPlayer_c::instance->startAnimation(wait_select, 1.0f, 0.0f, 0.0f); - if (mustPlayAfterWinAnim && (waitAfterInitialPlayerAnim == 9)) { + if (mustPlayAfterWinAnim && (waitAfterInitialPlayerAnim == 9) && !wm->isEndingScene) { nw4r::snd::SoundHandle something; PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_PLY_LAND_ROCK, 1); } diff --git a/src/levelinfo.cpp b/src/levelinfo.cpp index d0ddd9a..1b71e70 100644 --- a/src/levelinfo.cpp +++ b/src/levelinfo.cpp @@ -115,9 +115,10 @@ void UpdateFSStars() { bool beatGame = (save->GetLevelCondition(7, 23) & COND_NORMAL) != 0; - save->bitfield &= ~0x3E; +// save->bitfield &= ~0x3E; + save->bitfield &= ~0x3C; save->bitfield |= - (beatGame ? 2 : 0) | +// (beatGame ? 2 : 0) | (exitsNormal ? 4 : 0) | (coinsNormal ? 8 : 0) | (exitsW9 ? 0x10 : 0) | -- cgit v1.2.3