[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