diff options
author | Treeki <treeki@gmail.com> | 2013-04-09 22:27:45 +0200 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2013-04-09 22:27:45 +0200 |
commit | 790e76d3731c98c59dc28a1a2b918ecdeb24bdde (patch) | |
tree | f423238349c89835168f257f2b0134892a795235 | |
parent | 24cd30d1451222d4bd524d165a7470ec9c9e7eec (diff) | |
download | kamek-790e76d3731c98c59dc28a1a2b918ecdeb24bdde.tar.gz kamek-790e76d3731c98c59dc28a1a2b918ecdeb24bdde.zip |
only do the final part of the ending sequence once; some other minor fixes
-rw-r--r-- | src/creditsMgr.cpp | 6 | ||||
-rw-r--r-- | src/koopatlas/pathmanager.cpp | 7 | ||||
-rw-r--r-- | src/levelinfo.cpp | 5 |
3 files changed, 13 insertions, 5 deletions
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) |
|