1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-12 16:14:25 +02:00

#183 fix "Last FMV don't play"

This commit is contained in:
XProger
2019-05-27 04:05:17 +03:00
parent b55a9134e5
commit 806ef115fe
3 changed files with 37 additions and 13 deletions

View File

@@ -52,7 +52,7 @@ namespace Game {
bool playLogo = level->level.isTitle() && id == TR::LVL_MAX; bool playLogo = level->level.isTitle() && id == TR::LVL_MAX;
playVideo = playVideo && (id != level->level.id); playVideo = playVideo && (id != level->level.id);
if (level->level.isTitle() && id != TR::LVL_MAX) if (level->level.isTitle() && id != TR::LVL_MAX && !TR::isGameEnded)
playVideo = false; playVideo = false;
level->init(playLogo, playVideo); level->init(playLogo, playVideo);
@@ -152,6 +152,8 @@ namespace Game {
#endif #endif
char fileName[255]; char fileName[255];
TR::isGameEnded = false;
TR::Version version = TR::getGameVersion(); TR::Version version = TR::getGameVersion();
if (!lvlName) if (!lvlName)
TR::getGameLevelFile(fileName, version, TR::getTitleId(version)); TR::getGameLevelFile(fileName, version, TR::getTitleId(version));

View File

@@ -9,6 +9,7 @@
namespace TR { namespace TR {
bool useEasyStart; bool useEasyStart;
bool isGameEnded;
enum { enum {
NO_TRACK = 0xFF, NO_TRACK = 0xFF,
@@ -949,7 +950,7 @@ namespace TR {
StringID getVideoSubs(LevelID id) { StringID getVideoSubs(LevelID id) {
switch (id) { switch (id) {
// TR1 // TR1
case LVL_TR1_TITLE : return STR_TR1_SUB_CAFE; case LVL_TR1_TITLE : return isGameEnded ? STR_EMPTY : STR_TR1_SUB_CAFE;
case LVL_TR1_4 : return STR_TR1_SUB_LIFT; case LVL_TR1_4 : return STR_TR1_SUB_LIFT;
case LVL_TR1_10A : return STR_TR1_SUB_CANYON; case LVL_TR1_10A : return STR_TR1_SUB_CANYON;
case LVL_TR1_CUT_4 : return STR_TR1_SUB_PRISON; case LVL_TR1_CUT_4 : return STR_TR1_SUB_PRISON;
@@ -963,10 +964,12 @@ namespace TR {
const char *str = NULL; const char *str = NULL;
switch (id) { switch (id) {
// TR1 // TR1
case LVL_TR1_TITLE : str = "CAFE"; break; case LVL_TR1_TITLE : str = isGameEnded ? NULL : "CAFE"; break;
case LVL_TR1_4 : str = "LIFT"; break; case LVL_TR1_4 : str = "LIFT"; break;
case LVL_TR1_10A : str = "CANYON"; break; case LVL_TR1_10A : str = "CANYON"; break;
case LVL_TR1_CUT_4 : str = "PRISON"; break; case LVL_TR1_CUT_4 : str = "PRISON"; break;
// TR2 TODO
// TR3 TODO
default : return false; default : return false;
} }
@@ -983,6 +986,7 @@ namespace TR {
if ((version & VER_TR1) && (track >= 22 && track <= 56 && track != 24)) { if ((version & VER_TR1) && (track >= 22 && track <= 56 && track != 24)) {
return StringID(STR_TR1_SUB_22 + (track - 22)); return StringID(STR_TR1_SUB_22 + (track - 22));
} }
// TR2, TR3 TODO
return STR_EMPTY; return STR_EMPTY;
} }
@@ -1234,12 +1238,21 @@ namespace TR {
switch (id) { switch (id) {
// TR1 // TR1
case LVL_TR1_TITLE : case LVL_TR1_TITLE :
CHECK_FILE("FMV/CAFE.FMV"); if (isGameEnded) {
CHECK_FILE("FMV/CAFE.RPL"); CHECK_FILE("FMV/END.FMV");
CHECK_FILE("FMV/CAFE.CPK"); CHECK_FILE("FMV/END.RPL");
CHECK_FILE("video/1/CAFE.FMV"); CHECK_FILE("FMV/END.CPK");
CHECK_FILE("video/1/CAFE.RPL"); CHECK_FILE("video/1/END.FMV");
CHECK_FILE("video/1/CAFE.CPK"); CHECK_FILE("video/1/END.RPL");
CHECK_FILE("video/1/END.CPK");
} else {
CHECK_FILE("FMV/CAFE.FMV");
CHECK_FILE("FMV/CAFE.RPL");
CHECK_FILE("FMV/CAFE.CPK");
CHECK_FILE("video/1/CAFE.FMV");
CHECK_FILE("video/1/CAFE.RPL");
CHECK_FILE("video/1/CAFE.CPK");
}
break; break;
case LVL_TR1_GYM : case LVL_TR1_GYM :
CHECK_FILE("FMV/MANSION.FMV"); CHECK_FILE("FMV/MANSION.FMV");
@@ -1350,10 +1363,17 @@ namespace TR {
break; break;
// TR3 // TR3
case LVL_TR3_TITLE : case LVL_TR3_TITLE :
CHECK_FILE("FMV/INTRO.FMV"); if (isGameEnded) {
CHECK_FILE("fmv/Intr_Eng.rpl"); CHECK_FILE("FMV/END.FMV");
CHECK_FILE("video/3/INTRO.FMV"); CHECK_FILE("fmv/Endgame.rpl");
CHECK_FILE("video/3/Intr_Eng.rpl"); CHECK_FILE("video/3/END.FMV");
CHECK_FILE("video/3/Endgame.rpl");
} else {
CHECK_FILE("FMV/INTRO.FMV");
CHECK_FILE("fmv/Intr_Eng.rpl");
CHECK_FILE("video/3/INTRO.FMV");
CHECK_FILE("video/3/Intr_Eng.rpl");
}
break; break;
case LVL_TR3_SHORE : case LVL_TR3_SHORE :
CHECK_FILE("FMV/LAGOON.FMV"); CHECK_FILE("FMV/LAGOON.FMV");

View File

@@ -98,6 +98,8 @@ struct Level : IGame {
#endif #endif
id = (level.isEnd() || level.isHome()) ? level.getTitleId() : TR::LevelID(level.id + 1); id = (level.isEnd() || level.isHome()) ? level.getTitleId() : TR::LevelID(level.id + 1);
TR::isGameEnded = level.isEnd();
if (!level.isTitle() && loadSlot == -1) { if (!level.isTitle() && loadSlot == -1) {
// update statistics info for current level // update statistics info for current level
if (!TR::isCutsceneLevel(level.id) && !level.isHome()) if (!TR::isCutsceneLevel(level.id) && !level.isHome())