[Scummvm-git-logs] scummvm master -> c515216cd367a1de219d119986bb202177afe36f
neuromancer
noreply at scummvm.org
Sat Dec 11 11:50:33 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:
67e8a784ca HYPNO: fixed some scene transitions and better handling of variable reset in spider
c515216cd3 PRIVATE: fixed endianness issues when a palette is copied
Commit: 67e8a784caac43ef2afec106b8e431a3a1d11747
https://github.com/scummvm/scummvm/commit/67e8a784caac43ef2afec106b8e431a3a1d11747
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-12-11T12:48:50+01:00
Commit Message:
HYPNO: fixed some scene transitions and better handling of variable reset in spider
Changed paths:
engines/hypno/hypno.cpp
engines/hypno/scene.cpp
engines/hypno/spider/spider.cpp
engines/hypno/spider/talk.cpp
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index cb5399092c..b64e07e40d 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -136,6 +136,8 @@ Common::Error HypnoEngine::run() {
// Main event loop
loadAssets();
+ //resetSceneState();
+
assert(!_nextLevel.empty());
while (!shouldQuit()) {
debug("nextLevel: %s", _nextLevel.c_str());
@@ -180,7 +182,6 @@ void HypnoEngine::runLevel(Common::String &name) {
runCode((Code *) _levels[name]);
} else if (_levels[name]->type == SceneLevel) {
debugC(1, kHypnoDebugScene, "Executing scene level %s with next level: %s", name.c_str(), _levels[name]->levelIfWin.c_str());
- resetSceneState();
changeScreenMode("640x480");
runScene((Scene *) _levels[name]);
} else {
diff --git a/engines/hypno/scene.cpp b/engines/hypno/scene.cpp
index a3e2a6fb8f..8b0eec7523 100644
--- a/engines/hypno/scene.cpp
+++ b/engines/hypno/scene.cpp
@@ -400,6 +400,12 @@ void HypnoEngine::runScene(Scene *scene) {
_videosPlaying.empty() &&
_nextSequentialVideoToPlay.empty() &&
_nextParallelVideoToPlay.empty()) {
+ if (checkLevelWon()) {
+ debugC(1, kHypnoDebugScene, "Resetting level variables");
+ resetSceneState();
+ }
+ _sceneState["GS_LEVELCOMPLETE"] = 0;
+
debugC(1, kHypnoDebugScene, "Wining level and jumping to %s", scene->levelIfWin.c_str());
if (_nextLevel.empty()) {
assert(!scene->levelIfWin.empty());
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 2854a9e687..f92e57ca8e 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -74,7 +74,7 @@ void SpiderEngine::loadAssetsFullGame() {
sc->hots[1].actions.push_back(cl);
loadSceneLevel("options.mi_", "", prefix);
- loadSceneLevel("levels.mi_", "", prefix);
+ loadSceneLevel("levels.mi_", "mv0t.mi_", prefix);
loadSceneLevel("combmenu.mi_", "", prefix);
loadSceneLevel("mv0t.mi_", "roof.mi_", prefix);
@@ -152,8 +152,9 @@ void SpiderEngine::loadAssetsFullGame() {
cl = new ChangeLevel("c4"); // depens on the difficulty
sc->hots[4].actions.push_back(cl);
- loadSceneLevel("int_roof.mi_", "", prefix);
+ loadSceneLevel("int_roof.mi_", "recept.mi_", prefix);
sc = (Scene *) _levels["int_roof.mi_"];
+ sc->intros.push_back("cine/leapup.smk");
Overlay *over = (Overlay*) sc->hots[0].actions[2];
over->path = "int_alof\\ROOFB1.SMK"; // seems to be a bug?
@@ -161,6 +162,7 @@ void SpiderEngine::loadAssetsFullGame() {
Transition *boil_selector = new Transition("boiler.mi_", "boilhard.mi_");
_levels["<boil_selector>"] = boil_selector;
+ _levels["<boil_selector>"]->intros.push_back("spider/cine/leapdown.smk");
loadSceneLevel("boiler.mi_", "", prefix);
sc = (Scene *) _levels["boiler.mi_"];
@@ -179,13 +181,15 @@ void SpiderEngine::loadAssetsFullGame() {
sc->hots[2].actions.push_back(cl);
loadSceneLevel("alverofh.mi_", "", prefix);
- loadSceneLevel("recept.mi_", "", prefix);
+ loadSceneLevel("alveroff.mi_", "", prefix);
+ Transition *alveroff_selector = new Transition("alveroff.mi_", "alverofh.mi_");
+ _levels["<alveroff_selector>"] = alveroff_selector;
+ loadSceneLevel("recept.mi_", "", prefix);
sc = (Scene *) _levels["recept.mi_"];
over = (Overlay*) sc->hots[0].actions[2];
over->path = "int_alof\\rec0B1.SMK"; // seems to be a bug?
- loadSceneLevel("alveroff.mi_", "", prefix);
loadArcadeLevel("c4.mi_", "c2", prefix);
loadArcadeLevel("c2.mi_", "decide4.mi_", prefix);
@@ -274,8 +278,8 @@ void SpiderEngine::loadAssetsFullGame() {
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);
+ Global *gl = new Global("GS_LEVELWON", "TURNON");
+ sc->hots[5].actions.push_back(gl);
cl = new ChangeLevel("mainmenu.mi_");
sc->hots[6].actions.push_back(cl);
diff --git a/engines/hypno/spider/talk.cpp b/engines/hypno/spider/talk.cpp
index c133d67af7..70ead8dc37 100644
--- a/engines/hypno/spider/talk.cpp
+++ b/engines/hypno/spider/talk.cpp
@@ -166,6 +166,13 @@ void SpiderEngine::leftClickedConversation(const Common::Point &mousePos) {
loadImage(a->background, a->backgroundPos.x, a->backgroundPos.y, false);
}
}
+
+ if (_sceneState["GS_LEVELCOMPLETE"]) {
+ debugC(1, kHypnoDebugScene, "Level is complete, cleaning variables");
+ resetSceneState();
+ _sceneState["GS_LEVELCOMPLETE"] = 1;
+ }
+
if (videos.size() > 0)
runIntros(videos);
}
Commit: c515216cd367a1de219d119986bb202177afe36f
https://github.com/scummvm/scummvm/commit/c515216cd367a1de219d119986bb202177afe36f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-12-11T12:48:50+01:00
Commit Message:
PRIVATE: fixed endianness issues when a palette is copied
Changed paths:
engines/private/private.cpp
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index 2aaf235367..18fe32076c 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -1384,12 +1384,19 @@ void PrivateEngine::drawScreen() {
g_system->copyRectToScreen(frame->getPixels(), frame->pitch, center.x, center.y, frame->w, frame->h);
} else {
const byte *cPalette = (const byte *) _compositeSurface->getPalette();
- for (int c = 0; c < 256; c++)
- g_system->getPaletteManager()->setPalette(cPalette + 4*c, c, 1);
- byte newPalette[3 * 256];
- g_system->getPaletteManager()->grabPalette((byte *) &newPalette, 0, 256);
-
+
+ byte newPalette[768];
+ for (int c = 0; c < 256; c++) { // This avoids any endianness issues
+ newPalette[c * 3 + 0] = cPalette[c * 4 + 0];
+ newPalette[c * 3 + 1] = cPalette[c * 4 + 1];
+ newPalette[c * 3 + 2] = cPalette[c * 4 + 2];
+ }
+
+ g_system->getPaletteManager()->setPalette(newPalette, 0, 256);
+
if (_mode == 1) {
+ // We can reuse newPalette
+ g_system->getPaletteManager()->grabPalette((byte *) &newPalette, 0, 256);
drawScreenFrame((byte *) &newPalette);
}
More information about the Scummvm-git-logs
mailing list