[Scummvm-git-logs] scummvm master -> 44474e8693ce9779faf71ba8e73713296ce0fe89
neuromancer
noreply at scummvm.org
Mon Nov 15 18:41:40 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ed0efdd647 HYPNO: refactored how difficutly is handled in wet and spider and starte to add levels in spider
44474e8693 HYPNO: fixed uninitialized values in ox and oy
Commit: ed0efdd647c2d1665473fecb5324fadec30fb763
https://github.com/scummvm/scummvm/commit/ed0efdd647c2d1665473fecb5324fadec30fb763
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-11-15T19:41:27+01:00
Commit Message:
HYPNO: refactored how difficutly is handled in wet and spider and starte to add levels in spider
Changed paths:
engines/hypno/actions.cpp
engines/hypno/arcade.cpp
engines/hypno/grammar.h
engines/hypno/hypno.cpp
engines/hypno/hypno.h
engines/hypno/scene.cpp
engines/hypno/spider/spider.cpp
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/actions.cpp b/engines/hypno/actions.cpp
index 6d479ee7c2..85fc9db633 100644
--- a/engines/hypno/actions.cpp
+++ b/engines/hypno/actions.cpp
@@ -101,7 +101,7 @@ void HypnoEngine::runEscape() {
void HypnoEngine::runCutscene(Cutscene *a) {
stopSound();
- disableCursor();
+ defaultCursor();
_music.clear();
_nextSequentialVideoToPlay.push_back(MVideo(a->path, Common::Point(0, 0), false, true, false));
}
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index b61d30aea4..76b5830155 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -89,7 +89,7 @@ ShootSequence HypnoEngine::parseShootList(const Common::String &filename, const
}
void HypnoEngine::loadArcadeLevel(const Common::String ¤t, const Common::String &next, const Common::String &prefix) {
- Common::String arclevel = current + _difficulty + ".mi_";
+ Common::String arclevel = current + ".mi_";
debugC(1, kHypnoDebugParser, "Parsing %s", arclevel.c_str());
Common::String arc;
Common::String list;
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index 550ffe1a72..45f7f6612e 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -375,10 +375,21 @@ public:
class Transition : public Level {
public:
- Transition() {
+ Transition(Common::String level) {
type = TransitionLevel;
+ nextLevel = level;
+ levelEasy = "";
+ levelHard = "";
}
- Common::String level;
+
+ Transition(Common::String easy, Common::String hard) {
+ type = TransitionLevel;
+ levelEasy = easy;
+ levelHard = hard;
+ }
+ Common::String nextLevel;
+ Common::String levelEasy;
+ Common::String levelHard;
Filename frameImage;
uint32 frameNumber;
};
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index 46f203c098..dc41dd8685 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -130,17 +130,15 @@ Common::Error HypnoEngine::run() {
_compositeSurface->create(_screenW, _screenH, _pixelFormat);
// Main event loop
- Common::Event event;
- Common::Point mousePos;
loadAssets();
- _nextLevel = "<start>";
+ assert(!_nextLevel.empty());
while (!shouldQuit()) {
- //debug("nextLevel: %s", _nextLevel.c_str());
+ debug("nextLevel: %s", _nextLevel.c_str());
_defaultCursor = "";
_prefixDir = "";
_videosPlaying.clear();
if (!_nextLevel.empty()) {
- _currentLevel = _nextLevel;
+ _currentLevel = findNextLevel(_nextLevel);
_nextLevel = "";
runLevel(_currentLevel);
}
@@ -158,6 +156,7 @@ void HypnoEngine::runLevel(Common::String &name) {
// Play intros
disableCursor();
+ debug("Number of videos to play: %d", _levels[name]->intros.size());
for (Filenames::iterator it = _levels[name]->intros.begin(); it != _levels[name]->intros.end(); ++it) {
MVideo v(*it, Common::Point(0, 0), false, true, false);
runIntro(v);
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 30c2b30e24..9b662cc94d 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -169,6 +169,8 @@ public:
// levels
Common::String _nextLevel;
Common::String _currentLevel;
+ virtual Common::String findNextLevel(const Common::String &level);
+ virtual Common::String findNextLevel(const Transition *trans);
uint32 _levelId;
// hotspots
@@ -252,6 +254,9 @@ public:
void drawPlayer() override;
void drawHealth() override;
void runCode(Code *code) override;
+ Common::String findNextLevel(const Common::String &level) override;
+ Common::String findNextLevel(const Transition *trans) override;
+
private:
void runMainMenu(Code *code);
@@ -269,6 +274,8 @@ public:
void drawPlayer() override;
void drawHealth() override;
void runCode(Code *code) override;
+ Common::String findNextLevel(const Common::String &level) override;
+ Common::String findNextLevel(const Transition *trans) override;
void showConversation() override;
void rightClickedConversation(const Common::Point &mousePos) override;
diff --git a/engines/hypno/scene.cpp b/engines/hypno/scene.cpp
index 44334fae14..ab7765a2c2 100644
--- a/engines/hypno/scene.cpp
+++ b/engines/hypno/scene.cpp
@@ -62,8 +62,6 @@ const static char *sceneVariables[] = {
void HypnoEngine::loadSceneLevel(const Common::String ¤t, const Common::String &next, const Common::String &prefix) {
debugC(1, kHypnoDebugParser, "Parsing %s", current.c_str());
Common::String name = convertPath(current);
- // if (!prefix.empty())
- // name = prefix + "/" + name;
Common::File test;
if (!test.open(name.c_str()))
@@ -87,7 +85,9 @@ void HypnoEngine::loadSceneLevel(const Common::String ¤t, const Common::St
void HypnoEngine::resetSceneState() {
uint32 i = 0;
while (sceneVariables[i]) {
- _sceneState[sceneVariables[i]] = 0;
+ // Preserve difficulty level variables
+ if (sceneVariables[i] != Common::String("GS_COMBATLEVEL") && sceneVariables[i] != Common::String("GS_PUZZLELEVEL"))
+ _sceneState[sceneVariables[i]] = 0;
i++;
}
}
@@ -214,7 +214,11 @@ bool HypnoEngine::hoverHotspot(Common::Point mousePos) {
return false;
}
+Common::String HypnoEngine::findNextLevel(const Transition *trans) { error("no code!"); }
+Common::String HypnoEngine::findNextLevel(const Common::String &level) { error("no code!"); }
+
void HypnoEngine::runTransition(Transition *trans) {
+ Common::String nextLevel = findNextLevel(trans);
if (!trans->frameImage.empty()) {
debugC(1, kHypnoDebugScene, "Rendering %s frame in transaction", trans->frameImage.c_str());
Graphics::Surface *frame = decodeFrame(trans->frameImage, trans->frameNumber);
@@ -225,11 +229,11 @@ void HypnoEngine::runTransition(Transition *trans) {
delete frame;
sframe->free();
delete sframe;
- Common::String *ptr = new Common::String(trans->level);
+ Common::String *ptr = new Common::String(nextLevel);
if (!installTimer(2 * 1000000, ptr)) // 2 seconds
error("Failed to install timer");
} else
- _nextLevel = trans->level;
+ _nextLevel = nextLevel;
}
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 5a15f62f44..805ce81b50 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -73,7 +73,7 @@ void SpiderEngine::loadAssetsFullGame() {
sc->hots[1].actions.push_back(cl);
loadSceneLevel("options.mi_", "", prefix);
- loadSceneLevel("levels.mi_", "mv0t.mi_", prefix);
+ loadSceneLevel("levels.mi_", "", prefix);
loadSceneLevel("combmenu.mi_", "", prefix);
loadSceneLevel("mv0t.mi_", "roof.mi_", prefix);
@@ -88,21 +88,17 @@ void SpiderEngine::loadAssetsFullGame() {
sc = (Scene *) _levels["decide1.mi_"];
cl = new ChangeLevel("bank.mi_");
sc->hots[2].actions.push_back(cl);
- cl = new ChangeLevel("c1.mi_");
+ cl = new ChangeLevel("c1"); // depens on the difficulty
sc->hots[4].actions.push_back(cl);
loadSceneLevel("bank.mi_", "", prefix);
_levels["bank.mi_"]->intros.push_back("cine/swcs001s.smk");
- _levels["bank.mi_"]->levelIfWin = "alley.mi_";
+ _levels["bank.mi_"]->levelIfWin = "<alley_selector>";
- loadSceneLevel("busintro.mi_", "buspuz.mi_", prefix);
- loadSceneLevel("busint.mi_", "buspuz.mi_", prefix);
- loadSceneLevel("buspuz.mi_", "", prefix);
- _levels["buspuz.mi_"]->intros.push_back("cine/apts004s.smk");
- _levels["buspuz.mi_"]->intros.push_back("cine/blcs001s.smk");
- _levels["buspuz.mi_"]->intros.push_back("cine/ppv001s.smk");
+ Transition *alley_selector = new Transition("alley.mi_", "<puz_matr>");
+ _levels["<alley_selector>"] = alley_selector;
- loadSceneLevel("alley.mi_", "<bank_easy>", prefix);
+ loadSceneLevel("alley.mi_", "<trans_apt_2>", prefix);
_levels["alley.mi_"]->music = "alleymus.raw";
_levels["alley.mi_"]->intros.push_back("cine/aleyc01s.smk");
@@ -110,15 +106,39 @@ void SpiderEngine::loadAssetsFullGame() {
_levels["c1.mi_"]->intros.push_back("cine/ross002s.smk");
_levels["c1.mi_"]->levelIfLose = "<over_apt_1>";
- Transition *trans_apt_1 = new Transition();
- trans_apt_1->level = "busintro.mi_";
+ // Hardcoded levels
+ Code *matrix = new Code();
+ matrix->name = "<puz_matr>";
+ matrix->intros.push_back("spider/cine/aleyc01s.smk");
+ matrix->levelIfWin = "<trans_apt_2>";
+ _levels["<puz_matr>"] = matrix;
+
+ // Transitions
+ Transition *trans_apt_1 = new Transition("busintro.mi_");
+ trans_apt_1->frameImage = "spider/cine/blcs00.smk";
+ trans_apt_1->frameNumber = 0;
+ trans_apt_1->intros.push_back("spider/cine/ross004s.smk");
trans_apt_1->intros.push_back("spider/cine/apts002s.smk");
_levels["<trans_apt_1>"] = trans_apt_1;
- Transition *bankEasy = new Transition();
- bankEasy->level = "buspuz.mi_";
- bankEasy->intros.push_back("spider/cine/dia002s.smk");
- _levels["<bank_easy>"] = bankEasy;
+ Transition *trans_apt_2 = new Transition("busint.mi_");
+ trans_apt_2->frameImage = "spider/cine/blcs00.smk";
+ trans_apt_2->frameNumber = 0;
+ trans_apt_2->intros.push_back("spider/cine/dia002s.smk");
+ trans_apt_2->intros.push_back("spider/cine/apts004s.smk");
+ _levels["<trans_apt_2>"] = trans_apt_2;
+
+ loadSceneLevel("busint.mi_", "busintro.mi_", prefix);
+ loadSceneLevel("busintro.mi_", "buspuz.mi_", prefix);
+ _levels["busintro.mi_"]->intros.push_back("cine/blcs001s.smk");
+
+ loadSceneLevel("buspuz.mi_", "decide3.mi_", prefix);
+ loadSceneLevel("decide3.mi_", "", prefix);
+ //_levels["buspuz.mi_"]->intros.push_back("cine/ppv001s.smk");
+
+ // Transition *bus_transition = new Transition("buspuz.mi_");
+ // bankEasy->intros.push_back("spider/cine/dia002s.smk");
+ // _levels["<bus_transition>"] = bankEasy;
// Transition *bankHard = new Transition();
// bankHard->level = "buspuz.mi_";
@@ -140,31 +160,22 @@ void SpiderEngine::loadAssetsFullGame() {
loadArcadeLevel("c13", "", prefix);
// // Hard arcade levels
- // loadArcadeLevel("c1h", "", prefix);
- // loadArcadeLevel("c2h", "", prefix);
- // loadArcadeLevel("c3h", "", prefix);
- // loadArcadeLevel("c4h", "", prefix);
- // loadArcadeLevel("c5h", "", prefix);
- // //loadArcadeLevel("c6h", "", "spider");
- // // No c7h level?
- // loadArcadeLevel("c8h", "", prefix);
- // loadArcadeLevel("c9h", "", prefix);
- // loadArcadeLevel("c10h", "", prefix);
- // loadArcadeLevel("c11h", "", prefix);
- // loadArcadeLevel("c12h", "", prefix);
- // loadArcadeLevel("c13h", "", prefix);
-
-
- // // Hardcoded levels
- // Code *matrix = new Code();
- // matrix->name = "<puz_matr>";
- // matrix->intros.push_back("spider/cine/aleyc01s.smk");
- // matrix->levelIfWin = "";
- // _levels["<puz_matr>"] = matrix;
+ loadArcadeLevel("c1h", "", prefix);
+ loadArcadeLevel("c2h", "", prefix);
+ loadArcadeLevel("c3h", "", prefix);
+ loadArcadeLevel("c4h", "", prefix);
+ loadArcadeLevel("c5h", "", prefix);
+ //loadArcadeLevel("c6h", "", "spider");
+ // No c7h level?
+ loadArcadeLevel("c8h", "", prefix);
+ loadArcadeLevel("c9h", "", prefix);
+ loadArcadeLevel("c10h", "", prefix);
+ loadArcadeLevel("c11h", "", prefix);
+ loadArcadeLevel("c12h", "", prefix);
+ loadArcadeLevel("c13h", "", prefix);
// start level
- Transition *start = new Transition();
- start->level = "mainmenu.mi_";
+ Transition *start = new Transition("mainmenu.mi_");
start->intros.push_back("spider/cine/dcine1.smk");
start->intros.push_back("spider/cine/dcine2.smk");
_levels["<start>"] = start;
@@ -179,6 +190,18 @@ void SpiderEngine::loadAssetsFullGame() {
cl = new ChangeLevel("<quit>");
sc->hots[5].actions.push_back(cl);
+ sc = (Scene *) _levels["levels.mi_"];
+ cl = new ChangeLevel("levels.mi_");
+ sc->hots[1].actions.push_back(cl);
+ sc->hots[2].actions.push_back(cl);
+ sc->hots[3].actions.push_back(cl);
+ sc->hots[4].actions.push_back(cl);
+
+ cl = new ChangeLevel("mv0t.mi_");
+ sc->hots[5].actions.push_back(cl);
+ cl = new ChangeLevel("mainmenu.mi_");
+ sc->hots[6].actions.push_back(cl);
+
sc = (Scene *) _levels["options.mi_"];
cl = new ChangeLevel("combmenu.mi_");
@@ -195,41 +218,41 @@ void SpiderEngine::loadAssetsFullGame() {
cl = new ChangeLevel("options.mi_");
sc->hots[1].actions.push_back(cl);
- cl = new ChangeLevel("c1.mi_");
+ cl = new ChangeLevel("c1h.mi_");
sc->hots[2].actions.push_back(cl);
- cl = new ChangeLevel("c2.mi_");
+ cl = new ChangeLevel("c2h.mi_");
sc->hots[3].actions.push_back(cl);
- cl = new ChangeLevel("c3.mi_");
+ cl = new ChangeLevel("c3h.mi_");
sc->hots[4].actions.push_back(cl);
- cl = new ChangeLevel("c4.mi_");
+ cl = new ChangeLevel("c4h.mi_");
sc->hots[5].actions.push_back(cl);
- cl = new ChangeLevel("c5.mi_");
+ cl = new ChangeLevel("c5h.mi_");
sc->hots[6].actions.push_back(cl);
- cl = new ChangeLevel("c8.mi_");
+ cl = new ChangeLevel("c8h.mi_");
sc->hots[7].actions.push_back(cl);
- cl = new ChangeLevel("c9.mi_");
+ cl = new ChangeLevel("c9h.mi_");
sc->hots[8].actions.push_back(cl);
- cl = new ChangeLevel("c10.mi_");
+ cl = new ChangeLevel("c10h.mi_");
sc->hots[9].actions.push_back(cl);
- cl = new ChangeLevel("c11.mi_");
+ cl = new ChangeLevel("c11h.mi_");
sc->hots[10].actions.push_back(cl);
- cl = new ChangeLevel("c12.mi_");
+ cl = new ChangeLevel("c12h.mi_");
sc->hots[11].actions.push_back(cl);
// Game overs
- Transition *over_apt_1 = new Transition();
- over_apt_1->level = "tryagain.mi_";
+ Transition *over_apt_1 = new Transition("tryagain.mi_");
over_apt_1->intros.push_back("spider/cine/apts01as.smk");
_levels["<over_apt_1>"] = over_apt_1;
+ _nextLevel = "<start>";
}
void SpiderEngine::loadAssetsDemo() {
@@ -245,8 +268,7 @@ void SpiderEngine::loadAssetsDemo() {
error("Failed to load any file from missions.lib");
// start level
- Transition *start = new Transition();
- start->level = "sixdemo/mis/demo.mis";
+ Transition *start = new Transition("sixdemo/mis/demo.mis");
start->intros.push_back("sixdemo/demo/dcine1.smk");
start->intros.push_back("sixdemo/demo/dcine2.smk");
_levels["<start>"] = start;
@@ -267,7 +289,7 @@ void SpiderEngine::loadAssetsDemo() {
cl = new ChangeLevel("sixdemo/mis/alley.mis");
sc->hots[2].actions.push_back(cl);
- cl = new ChangeLevel("puz_matr");
+ cl = new ChangeLevel("<puz_matr>");
sc->hots[3].actions.push_back(cl);
cl = new ChangeLevel("sixdemo/mis/shoctalk.mis");
@@ -294,11 +316,12 @@ void SpiderEngine::loadAssetsDemo() {
Code *matrix = new Code();
matrix->name = "<puz_matr>";
- matrix->intros.push_back("spiderman/demo/aleyc01s.smk");
+ matrix->intros.push_back("sixdemo/demo/aleyc01s.smk");
matrix->levelIfWin = "sixdemo/mis/demo.mis";
matrix->levelIfLose = "sixdemo/mis/demo.mis";
_levels["<puz_matr>"] = matrix;
_soundPath = "c_misc/sound.lib/";
+ _nextLevel = "<start>";
}
void SpiderEngine::runCode(Code *code) {
@@ -415,4 +438,19 @@ void SpiderEngine::showCredits() {
_nextLevel = "mainmenu.mi_";
}
+Common::String SpiderEngine::findNextLevel(const Transition *trans) {
+ if (trans->nextLevel.empty())
+ return _sceneState["GS_PUZZLELEVEL"] == 0 ? trans->levelEasy : trans->levelHard;
+
+ return trans->nextLevel;
+}
+
+Common::String SpiderEngine::findNextLevel(const Common::String &level) {
+ if (Common::matchString(level.c_str(), "c#") || Common::matchString(level.c_str(), "c##"))
+ return level + (_sceneState["GS_COMBATLEVEL"] == 0 ? "" : "h") + ".mi_";
+ else {
+ return level;
+ }
+}
+
} // End of namespace Hypno
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index eef68dd46f..c66eb3bcec 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -104,8 +104,7 @@ void WetEngine::loadAssetsDemoDisc() {
start->hots = hs;
_levels["<start>"] = start;
- Transition *intro = new Transition();
- intro->level = "c31.mi_";
+ Transition *intro = new Transition("c31");
intro->intros.push_back("movie/nw_logo.smk");
intro->intros.push_back("movie/hypnotix.smk");
intro->intros.push_back("movie/wetlogo.smk");
@@ -113,8 +112,7 @@ void WetEngine::loadAssetsDemoDisc() {
intro->frameNumber = 0;
_levels["<intro>"] = intro;
- Transition *movies = new Transition();
- movies->level = "<quit>";
+ Transition *movies = new Transition("<quit>");
movies->intros.push_back("movie/nw_logo.smk");
movies->intros.push_back("movie/hypnotix.smk");
movies->intros.push_back("movie/wetlogo.smk");
@@ -136,17 +134,17 @@ void WetEngine::loadAssetsDemoDisc() {
_levels["<movies>"] = movies;
loadArcadeLevel("c31", "c52", "wetlands");
- _levels["c31.mi_"]->levelIfLose = "c52.mi_";
+ _levels["c31.mi_"]->levelIfLose = "c52";
loadArcadeLevel("c52", "<gameover>", "wetlands");
_levels["c52.mi_"]->levelIfLose = "<gameover>";
- Transition *over = new Transition();
- over->level = "<quit>";
+ Transition *over = new Transition("<quit>");
over->intros.push_back("movie/gameover.smk");
_levels["<gameover>"] = over;
loadLib("", "wetlands/c_misc/fonts.lib", true);
loadLib("wetlands/sound/", "wetlands/c_misc/sound.lib", true);
+ _nextLevel = "<start>";
}
void WetEngine::loadAssetsPCW() {
@@ -156,8 +154,7 @@ void WetEngine::loadAssetsPCW() {
if (missions->listMembers(files) == 0)
error("Failed to load any files from missions.lib");
- Transition *intro = new Transition();
- intro->level = "c11.mis";
+ Transition *intro = new Transition("c11.mis");
intro->intros.push_back("c_misc/nw_logo.smk");
intro->intros.push_back("c_misc/h.s");
intro->intros.push_back("c_misc/wet.smk");
@@ -166,8 +163,7 @@ void WetEngine::loadAssetsPCW() {
loadArcadeLevel("c11", "<gameover>", "");
- Transition *over = new Transition();
- over->level = "<quit>";
+ Transition *over = new Transition("<quit>");
over->intros.push_back("movie/gameover.smk");
_levels["<gameover>"] = over;
@@ -181,8 +177,7 @@ void WetEngine::loadAssetsPCG() {
if (missions->listMembers(files) == 0)
error("Failed to load any files from missions.lib");
- Transition *intro = new Transition();
- intro->level = "c31.mi_";
+ Transition *intro = new Transition("c31.mi_");
intro->intros.push_back("nw_logo.smk");
intro->intros.push_back("h.s");
intro->intros.push_back("wet.smk");
@@ -191,8 +186,7 @@ void WetEngine::loadAssetsPCG() {
loadArcadeLevel("c31", "<gameover>", "");
- Transition *over = new Transition();
- over->level = "<quit>";
+ Transition *over = new Transition("<quit>");
over->intros.push_back("gameover.smk");
_levels["<gameover>"] = over;
@@ -205,8 +199,7 @@ void WetEngine::loadAssetsFullGame() {
if (missions == nullptr || missions->listMembers(files) == 0)
error("Failed to load any files from missions.lib");
- Transition *logos = new Transition();
- logos->level = "wetlands/main_menu.mis"; //"c11" + _difficulty + ".mi_";
+ Transition *logos = new Transition("<main_menu>");
logos->intros.push_back("c_misc/logo.smk");
logos->intros.push_back("c_misc/nw_logo.smk");
logos->intros.push_back("c_misc/hypnotix.smk");
@@ -214,21 +207,28 @@ void WetEngine::loadAssetsFullGame() {
_levels["<start>"] = logos;
Code *menu = new Code();
- menu->name = "wetlands/main_menu.mis";
- _levels["wetlands/main_menu.mis"] = menu;
- _levels["wetlands/main_menu.mis"]->levelIfWin = "<intro>";
+ menu->name = "<main_menu>";
+ _levels["<main_menu>"] = menu;
+ _levels["<main_menu>"]->levelIfWin = "c11";
- Transition *intro = new Transition();
- intro->level = "c11" + _difficulty + ".mi_";
- intro->intros.push_back("c_misc/intros.smk");
- _levels["<intro>"] = intro;
+ loadArcadeLevel("c110", "c20", "");
+ _levels["c110.mi_"]->intros.push_front("c_misc/intros.smk");
+
+ loadArcadeLevel("c111", "c20", "");
+ _levels["c111.mi_"]->intros.push_front("c_misc/intros.smk");
+
+ loadArcadeLevel("c112", "c20", "");
+ _levels["c112.mi_"]->intros.push_front("c_misc/intros.smk");
- //loadLevel("c10", "c11", "");
- loadArcadeLevel("c11", "c20", "");
- loadArcadeLevel("c20", "", "");
+ loadArcadeLevel("c200", "???", "");
+ loadArcadeLevel("c201", "???", "");
+ loadArcadeLevel("c202", "???", "");
+
+ //loadArcadeLevel("c20", "", "");
loadLib("", "c_misc/fonts.lib", true);
loadLib("sound/", "c_misc/sound.lib", true);
+ _nextLevel = "<start>";
}
void WetEngine::showCredits() {
@@ -238,7 +238,7 @@ void WetEngine::showCredits() {
void WetEngine::runCode(Code *code) {
changeScreenMode("320x200");
- if (code->name == "wetlands/main_menu.mis")
+ if (code->name == "<main_menu>")
runMainMenu(code);
else
error("invalid hardcoded level: %s", code->name.c_str());
@@ -289,4 +289,21 @@ void WetEngine::runMainMenu(Code *code) {
}
}
+Common::String WetEngine::findNextLevel(const Transition *trans) {
+ if (trans->nextLevel.empty())
+ error("Invalid transition!");
+ return trans->nextLevel;
+}
+
+Common::String WetEngine::findNextLevel(const Common::String &level) {
+ Common::String nextLevel;
+ if (Common::matchString(level.c_str(), "c#") || Common::matchString(level.c_str(), "c##"))
+ nextLevel = level + _difficulty + ".mi_";
+ else {
+ nextLevel = level;
+ }
+
+ return nextLevel;
+}
+
} // End of namespace Hypno
Commit: 44474e8693ce9779faf71ba8e73713296ce0fe89
https://github.com/scummvm/scummvm/commit/44474e8693ce9779faf71ba8e73713296ce0fe89
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-11-15T19:41:27+01:00
Commit Message:
HYPNO: fixed uninitialized values in ox and oy
Changed paths:
engines/hypno/spider/arcade.cpp
diff --git a/engines/hypno/spider/arcade.cpp b/engines/hypno/spider/arcade.cpp
index 39111c6a22..d33c0f8c73 100644
--- a/engines/hypno/spider/arcade.cpp
+++ b/engines/hypno/spider/arcade.cpp
@@ -35,8 +35,8 @@ static const int shootOriginIndex[9][2] = {
void SpiderEngine::drawShoot(const Common::Point &target) {
uint32 c = _pixelFormat.RGBToColor(255, 255, 255);
- uint32 ox;
- uint32 oy;
+ uint32 ox = 0;
+ uint32 oy = 0;
if (_arcadeMode == "YC") {
return; // Nothing to shoot
@@ -47,7 +47,9 @@ void SpiderEngine::drawShoot(const Common::Point &target) {
uint32 idx = MIN(2, target.x / (_screenW / 3)) + 3 * MIN(2, target.y / (_screenH / 3));
ox = 60 + shootOriginIndex[idx][0];
oy = 129 + shootOriginIndex[idx][1];
- }
+ } else
+ error("Invalid arcade mode %s", _arcadeMode.c_str());
+
_compositeSurface->drawLine(ox, oy, target.x + 2, target.y, c);
_compositeSurface->drawLine(ox, oy, target.x, target.y, c);
_compositeSurface->drawLine(ox, oy, target.x - 2, target.y, c);
@@ -81,7 +83,9 @@ void SpiderEngine::drawPlayer() {
if (_playerFrameIdx >= (int)_playerFrames.size())
_playerFrameIdx = 0;
}
- }
+ } else
+ error("Invalid arcade mode %s", _arcadeMode.c_str());
+
drawImage(*_playerFrames[_playerFrameIdx], ox, oy, true);
}
More information about the Scummvm-git-logs
mailing list