[Scummvm-git-logs] scummvm master -> ea55621c35618046677b717053f8126d92b885a8

neuromancer noreply at scummvm.org
Tue Dec 28 12:51:53 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:
9ade6fdb11 HYPNO: added more scenes and fixes for arcade sequences in spider
ea55621c35 HYPNO: added cheat option


Commit: 9ade6fdb1126473484f5c31e1c6d94b01c5ec65a
    https://github.com/scummvm/scummvm/commit/9ade6fdb1126473484f5c31e1c6d94b01c5ec65a
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-12-28T13:50:31+01:00

Commit Message:
HYPNO: added more scenes and fixes for arcade sequences in spider

Changed paths:
    engines/hypno/arcade.cpp
    engines/hypno/hypno.h
    engines/hypno/spider/hard.cpp
    engines/hypno/spider/spider.cpp


diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 3adcb0e8cc8..9d7ff11d44d 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -96,7 +96,8 @@ void HypnoEngine::loadArcadeLevel(const Common::String &arclevel, const Common::
 	parseArcadeShooting("", arclevel, arc);
 	ArcadeShooting *arcade = (ArcadeShooting *) _levels[arclevel]; 
 	arcade->shootSequence = parseShootList(arclevel, list);
-	arcade->prefix = prefix.c_str();
+	arcade->prefix = prefix;
+	arcade->levelIfWin = next;
 }
 
 void HypnoEngine::drawPlayer() { error("Function \"%s\" not implemented", __FUNCTION__); }
@@ -137,6 +138,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 	// Only used in spider
 	_currentPlayerPosition = PlayerLeft;
 	_lastPlayerPosition = PlayerLeft;
+	_skipLevel = false;
 
 	for (Frames::iterator it =_playerFrames.begin(); it != _playerFrames.end(); ++it) {
 		if ((*it)->getPixel(0, 0) == _pixelFormat.RGBToColor(0, 255, 255))
@@ -245,7 +247,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 			skipVideo(background);
 		}
 
-		if (!background.decoder || background.decoder->endOfVideo()) {
+		if (!background.decoder || background.decoder->endOfVideo() || _skipLevel) {
 			skipVideo(background);
 			if (!arc->nextLevelVideo.empty()) {
 				MVideo video(arc->nextLevelVideo, Common::Point(0, 0), false, false, false);
@@ -253,6 +255,8 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 			}
 			assert(!arc->levelIfWin.empty());
 			_nextLevel = arc->levelIfWin;
+			_arcadeMode = "";
+			_skipLevel = false;
 			debugC(1, kHypnoDebugArcade, "Wining level and jumping to %s", _nextLevel.c_str());
 			break;
 		}
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 26100047f8e..8bd7e6d4cd3 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -213,7 +213,8 @@ public:
 	virtual void drawShoot(const Common::Point &mousePos);
 	virtual void shoot(const Common::Point &mousePos);
 	virtual void hitPlayer();
-	Common::String _difficulty; 
+	Common::String _difficulty;
+	bool _skipLevel;
 
 	virtual void drawCursorArcade(const Common::Point &mousePos);
 	virtual void drawPlayer();
diff --git a/engines/hypno/spider/hard.cpp b/engines/hypno/spider/hard.cpp
index 25027bc480a..2c9ed2f13b6 100644
--- a/engines/hypno/spider/hard.cpp
+++ b/engines/hypno/spider/hard.cpp
@@ -791,6 +791,11 @@ void SpiderEngine::runFuseBox(Code *code) {
 }
 
 void SpiderEngine::showCredits() {
+	if (!_arcadeMode.empty()) {
+		_skipLevel = true;
+		return;
+	}
+
 	changeScreenMode("640x480");
 	MVideo video("cine/credits.smk", Common::Point(0, 0), false, false, false);
 	runIntro(video);
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 4483df4eeba..e26e1c22fdd 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -118,7 +118,7 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["<puz_matr>"] = matrix;
 
 	// Transitions
-	Transition *trans_apt_1 = new Transition("busintro.mi_");
+	Transition *trans_apt_1 = new Transition("busint.mi_");
 	trans_apt_1->frameImage = "spider/cine/blcs00.smk";
 	trans_apt_1->frameNumber = 0;
 	trans_apt_1->intros.push_back("spider/cine/ross004s.smk");
@@ -140,15 +140,27 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["<bus_selector>"] = bus_selector;
 
 	loadSceneLevel("bushard1.mi_", "bushard1.mi_", prefix);
-	loadSceneLevel("bushard2.mi_", "decide3.mi_", prefix);
+	loadSceneLevel("bushard2.mi_", "<after_bus_selector>", prefix);
+
+	loadSceneLevel("buspuz.mi_", "<after_bus_selector>", prefix);
+
+	Transition *after_bus_selector = new Transition("<after_bus_easy>", "<after_bus_hard>");
+	_levels["<after_bus_selector>"] = after_bus_selector;
+
+	Transition *after_bus_easy = new Transition("decide3.mi_");
+	after_bus_easy->intros.push_back("spider/cine/blcs003s.smk");
+	_levels["<after_bus_easy>"] = after_bus_easy;
+
+	Transition *after_bus_hard = new Transition("decide3.mi_");
+	after_bus_hard->intros.push_back("spider/cine/blcs004s.smk");
+	_levels["<after_bus_hard>"] = after_bus_hard;
 
-	loadSceneLevel("buspuz.mi_", "decide3.mi_", prefix);
 	loadSceneLevel("decide3.mi_", "", prefix);
 
 	sc = (Scene *) _levels["decide3.mi_"];
 	cl = new ChangeLevel("alofintr.mi_");
 	sc->hots[2].actions.push_back(cl);
-	cl = new ChangeLevel("c4"); // depens on the difficulty
+	cl = new ChangeLevel("c4");
 	sc->hots[4].actions.push_back(cl);
 
 	loadSceneLevel("int_roof.mi_", "", prefix);
@@ -269,9 +281,20 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["<back_roof_2>"]->intros.push_back("spider/cine/recpout.smk");
 
 	loadArcadeLevel("c4.mi_", "c2", prefix);
-	loadArcadeLevel("c2.mi_", "decide4.mi_", prefix);
+	_levels["c4.mi_"]->intros.push_back("cine/dals001s.smk");
+
+	loadArcadeLevel("c2.mi_", "<after_c2>", prefix);
+	_levels["c2.mi_"]->intros.push_back("cine/dals002s.smk");
+
 	loadArcadeLevel("c4h.mi_", "c2", prefix);
-	loadArcadeLevel("c2h.mi_", "decide4.mi_", prefix);
+	_levels["c4h.mi_"]->intros.push_back("cine/dals001s.smk");
+
+	loadArcadeLevel("c2h.mi_", "<after_c2>", prefix);
+	_levels["c2h.mi_"]->intros.push_back("cine/dals002s.smk");
+
+	Transition *after_c2 = new Transition("decide4.mi_");
+	after_c2->intros.push_back("spider/cine/dals003s.smk");
+	_levels["<after_c2>"] = after_c2;
 
 	loadSceneLevel("decide4.mi_", "", prefix);
 	sc = (Scene *) _levels["decide4.mi_"];
@@ -309,8 +332,6 @@ void SpiderEngine::loadAssetsFullGame() {
 	loadArcadeLevel("c3h.mi_", "c6", prefix);
 	_levels["c3h.mi_"]->intros.push_back("cine/vrfs001s.smk");
 
-	// Easy arcade levels
-
 	loadArcadeLevel("c6.mi_", "<lock>", "spider");
 	_levels["c6.mi_"]->intros.push_back("cine/vrfs002s.smk");
 	_levels["c6.mi_"]->intros.push_back("cine/dia007s.smk");
@@ -400,9 +421,9 @@ void SpiderEngine::loadAssetsFullGame() {
 	after_c9->intros.push_back("spider/cine/utns006s.smk");
 	_levels["<after_c9>"] = after_c9;
 
-	loadArcadeLevel("c10.mi_", "", prefix);
+	loadArcadeLevel("c10.mi_", "<after_c10>", prefix);
 	_levels["c10.mi_"]->intros.push_back("cine/utns003s.smk");
-	loadArcadeLevel("c10h.mi_", "", prefix);
+	loadArcadeLevel("c10h.mi_", "<after_c10>", prefix);
 	_levels["c10h.mi_"]->intros.push_back("cine/utns003s.smk");
 
 	Transition *after_c10 = new Transition("docoffic.mi_");
@@ -411,6 +432,7 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	loadSceneLevel("docoffic.mi_", "decide9.mi_", prefix);
 	//_levels["docoffic.mi_"]->intros.push_back("cine/????.smk");
+	_levels["decide9_0.mi_"] = _levels["decide9"];
 
 	loadSceneLevel("decide9.mi_", "", prefix);
 
@@ -424,24 +446,21 @@ void SpiderEngine::loadAssetsFullGame() {
 	cl = new ChangeLevel("<dont_believe_mason>");
 	sc->hots[4].actions.push_back(cl);
 
-	loadSceneLevel("docoffi1.mi_", "c12", prefix);
+	loadSceneLevel("docoffi1.mi_", "decide9.mi_", prefix);
 	_levels["docoffi1.mi_"]->intros.push_back("cine/doocin2s.smk");
+	_levels["decide9_1.mi_"] = _levels["decide9"];
 
 	loadArcadeLevel("c12.mi_", "", prefix);
 	loadArcadeLevel("c12h.mi_", "", prefix);
 
-	// No c7 level?
+	// No c7/c7h level?
 	loadArcadeLevel("c11.mi_", "", prefix);
-
-	// // Hard arcade levels
+	loadArcadeLevel("c11h.mi_", "", prefix);
 
 	loadArcadeLevel("c6h.mi_", "<lock>", prefix);
 	_levels["c6h.mi_"]->intros.push_back("cine/vrfs002s.smk");
 	_levels["c6h.mi_"]->intros.push_back("cine/dia007s.smk");
 
-	// No c7h level?
-	loadArcadeLevel("c11h.mi_", "", prefix);
-
 	loadSceneLevel("decide11.mi_", "", prefix);
 
 	// start level
@@ -527,10 +546,19 @@ void SpiderEngine::loadAssetsFullGame() {
 	over_apt_5->intros.push_back("spider/cine/apts05as.smk");
 	_levels["<over_apt_5>"] = over_apt_5;
 
+	Transition *over_bus = new Transition("tryagain.mi_");
+	over_bus->intros.push_back("spider/cine/blcs002s.smk");
+	over_bus->intros.push_back("spider/cine/apt04as.smk");
+	_levels["<over_bus>"] = over_bus;
+
 	Transition *dont_believe_mason = new Transition("<credits>");
 	dont_believe_mason->intros.push_back("spider/cine/doos004s.smk");
 	_levels["<dont_believe_mason>"] = dont_believe_mason;
-	
+
+	Transition *over_apt_7 = new Transition("<credits>");
+	over_apt_7->intros.push_back("spider/cine/apts007s.smk");
+	_levels["<over_apt_7>"] = over_apt_7;
+
 	_nextLevel = "<start>";
 }
 


Commit: ea55621c35618046677b717053f8126d92b885a8
    https://github.com/scummvm/scummvm/commit/ea55621c35618046677b717053f8126d92b885a8
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-12-28T13:50:31+01:00

Commit Message:
HYPNO: added cheat option

Changed paths:
    engines/hypno/detection.cpp
    engines/hypno/hypno.cpp
    engines/hypno/hypno.h
    engines/hypno/spider/hard.cpp


diff --git a/engines/hypno/detection.cpp b/engines/hypno/detection.cpp
index 6be622bfa4c..05bf97832f1 100644
--- a/engines/hypno/detection.cpp
+++ b/engines/hypno/detection.cpp
@@ -165,9 +165,17 @@ static const char *const directoryGlobs[] = {
 	nullptr
 };
 
+static const ExtraGuiOption hypnoExtraGuiOption = {
+	_s("Enable cheats"),
+	_s("Allow cheats using the C key."),
+	"cheats",
+	false
+};
+
 class HypnoMetaEngineDetection : public AdvancedMetaEngineDetection {
 public:
 	HypnoMetaEngineDetection() : AdvancedMetaEngineDetection(Hypno::gameDescriptions, sizeof(ADGameDescription), Hypno::hypnoGames) {
+		_guiOptions = GUIO1(GUIO_NOMIDI);
 		_maxScanDepth = 3;
 		_directoryGlobs = directoryGlobs;
 	}
@@ -188,7 +196,15 @@ public:
 	const DebugChannelDef *getDebugChannels() const override {
 		return debugFlagList;
 	}
+
+	const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const override;
 };
 
+const ExtraGuiOptions HypnoMetaEngineDetection::getExtraGuiOptions(const Common::String &target) const {
+	ExtraGuiOptions options;
+	options.push_back(hypnoExtraGuiOption);
+	return options;
+}
+
 REGISTER_PLUGIN_STATIC(HYPNO_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, HypnoMetaEngineDetection);
 
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index aa146b55be7..7e992a0337b 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -118,6 +118,8 @@ void HypnoEngine::loadAssets() { error("Function \"%s\" not implemented", __FUNC
 Common::Error HypnoEngine::run() {
 	_language = Common::parseLanguage(ConfMan.get("language"));
 	_platform = Common::parsePlatform(ConfMan.get("platform"));
+	if (!Common::parseBool(ConfMan.get("cheats"), _cheatsEnabled))
+		error("Failed to parse bool from cheats options");
 
 	Graphics::ModeList modes;
 	modes.push_back(Graphics::Mode(640, 480));
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 8bd7e6d4cd3..fb08beb0b69 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -81,6 +81,7 @@ public:
 	Common::Language _language;
 	Common::Platform _platform;
 	Common::String _variant;
+	bool _cheatsEnabled;
 
 	Audio::SoundHandle _soundHandle;
 	Common::InstallShieldV3 _installerArchive;
diff --git a/engines/hypno/spider/hard.cpp b/engines/hypno/spider/hard.cpp
index 2c9ed2f13b6..3300dbebb20 100644
--- a/engines/hypno/spider/hard.cpp
+++ b/engines/hypno/spider/hard.cpp
@@ -791,7 +791,7 @@ void SpiderEngine::runFuseBox(Code *code) {
 }
 
 void SpiderEngine::showCredits() {
-	if (!_arcadeMode.empty()) {
+	if (_cheatsEnabled && !_arcadeMode.empty()) {
 		_skipLevel = true;
 		return;
 	}




More information about the Scummvm-git-logs mailing list