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

neuromancer neuromancer at users.noreply.github.com
Mon Nov 8 22:02:58 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c9d56e60f5 HYPNO: fixed player position and shots in spider-man game + loading of more levels


Commit: c9d56e60f504abe660178b96a437ffb8e81e0748
    https://github.com/scummvm/scummvm/commit/c9d56e60f504abe660178b96a437ffb8e81e0748
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2021-11-08T23:02:46+01:00

Commit Message:
HYPNO: fixed player position and shots in spider-man game + loading of more levels

Changed paths:
    engines/hypno/arcade.cpp
    engines/hypno/scene.cpp
    engines/hypno/spider/arcade.cpp
    engines/hypno/spider/spider.cpp


diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 300a1f253d..bcacf44367 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -217,6 +217,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 				MVideo video(arc->defeatVideos.front(), Common::Point(0, 0), false, false, false);
 				runIntro(video);
 			}
+			assert(!arc->levelIfLose.empty());
 			_nextLevel = arc->levelIfLose;
 			debugC(1, kHypnoDebugArcade, "Losing level and jumping to %s", _nextLevel.c_str());
 			break;
@@ -236,6 +237,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 				MVideo video(arc->winVideos.front(), Common::Point(0, 0), false, false, false);
 				runIntro(video);
 			}
+			assert(!arc->levelIfWin.empty());
 			_nextLevel = arc->levelIfWin;
 			debugC(1, kHypnoDebugArcade, "Wining level and jumping to %s", _nextLevel.c_str());
 			break;
diff --git a/engines/hypno/scene.cpp b/engines/hypno/scene.cpp
index 75b6e66c77..afa248e1c6 100644
--- a/engines/hypno/scene.cpp
+++ b/engines/hypno/scene.cpp
@@ -386,7 +386,10 @@ void HypnoEngine::runScene(Scene *scene) {
 				_nextSequentialVideoToPlay.empty() && 
 				_nextParallelVideoToPlay.empty()) {
 				debugC(1, kHypnoDebugScene, "Wining level and jumping to %s", scene->levelIfWin.c_str());
-				_nextLevel = scene->levelIfWin;
+				if (_nextLevel.empty()) {
+					assert(!scene->levelIfWin.empty());
+					_nextLevel = scene->levelIfWin;
+				}
 				continue;
 			}
 		}
diff --git a/engines/hypno/spider/arcade.cpp b/engines/hypno/spider/arcade.cpp
index b5d5cf8351..39111c6a22 100644
--- a/engines/hypno/spider/arcade.cpp
+++ b/engines/hypno/spider/arcade.cpp
@@ -28,47 +28,61 @@
 
 namespace Hypno {
 
-static const int orientationIndex[9] = {0, 1, 2, 7, 8, 3, 6, 5, 4};
+static const int oIndexYB[9] = {0, 1, 2, 7, 8, 3, 6, 5, 4};
+static const int oIndexYE[9] = {4, 3, 2, 1, 0};
 static const int shootOriginIndex[9][2] = {
 	{41, 3}, {51, 3}, {65, 6}, {68, 9}, {71, 22}, {57, 20}, {37, 14}, {37, 11}, {57, 20}};
 
 void SpiderEngine::drawShoot(const Common::Point &target) {
 	uint32 c = _pixelFormat.RGBToColor(255, 255, 255);
-	uint32 idx = MIN(2, target.x / (_screenW / 3)) + 3 * MIN(2, target.y / (_screenH / 3));
-	uint32 ox = 60  + shootOriginIndex[idx][0];
-	uint32 oy = 129 + shootOriginIndex[idx][1];
+	uint32 ox;
+	uint32 oy;
+
+	if (_arcadeMode == "YC") {
+		return; // Nothing to shoot
+	} else if (_arcadeMode == "YE") { 
+		ox = _screenW/2;
+		oy = _screenH - _playerFrames[0]->h/2;
+	} else if (_arcadeMode == "YB") {
+		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];
+	}
 	_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);
+
 	playSound(_soundPath + _shootSound, 1);
 }
 
 void SpiderEngine::drawPlayer() {
+	uint32 ox;
+	uint32 oy;
 
 	if (_arcadeMode == "YC") {
-		drawImage(*_playerFrames[_playerPosition], 0, 0, true);
-		return;
-	}
-
-	// if (_playerFrameSep == -1) {
-	// 	Common::Point mousePos = g_system->getEventManager()->getMousePos();
-	// 	drawImage(*_playerFrames[0], MIN(MAX(10, int(mousePos.x)), _screenH-10), 129, true);
-	// 	return;
-	// }
-
-
-	if (_playerFrameIdx < _playerFrameSep) {
+		ox = 0;
+		oy = 0;
+		_playerFrameIdx = _playerPosition;
+	} else if (_arcadeMode == "YE") {
 		Common::Point mousePos = g_system->getEventManager()->getMousePos();
-		//uint32 idx = MIN(2, mousePos.x / (_screenW / 3)) + 3 * MIN(2, mousePos.y / (_screenH / 3));
-		_playerFrameIdx = 4 - mousePos.x / (_screenW / 4);
-		//debug("selecting index %d", _playerFrameIdx);
-		//_playerFrameIdx = orientationIndex[idx];
-	} else {
-		_playerFrameIdx++;
-		if (_playerFrameIdx >= (int)_playerFrames.size())
-			_playerFrameIdx = 0;
+		uint32 idx = mousePos.x / (_screenW / 5);
+		_playerFrameIdx = oIndexYE[idx];
+		ox = _screenW / 2 - _playerFrames[0]->w / 2;
+		oy = _screenH - _playerFrames[0]->h;
+	} else if (_arcadeMode == "YB") {
+		ox = 60;
+		oy = 129;
+		if (_playerFrameIdx < _playerFrameSep) {
+			Common::Point mousePos = g_system->getEventManager()->getMousePos();
+			uint32 idx = MIN(2, mousePos.x / (_screenW / 3)) + 3 * MIN(2, mousePos.y / (_screenH / 3));
+			_playerFrameIdx = oIndexYB[idx];
+		} else {
+			_playerFrameIdx++;
+			if (_playerFrameIdx >= (int)_playerFrames.size())
+				_playerFrameIdx = 0;
+		}
 	}
-	drawImage(*_playerFrames[_playerFrameIdx], _screenW/2 - 15, _screenH-50, true);
+	drawImage(*_playerFrames[_playerFrameIdx], ox, oy, true);
 }
 
 void SpiderEngine::drawHealth() {
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 1d58d7afe1..2dbdbff5c3 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -54,6 +54,9 @@ void SpiderEngine::loadAssetsFullGame() {
 	if (missions == nullptr || missions->listMembers(files) == 0)
 		error("Failed to load any file from missions.lib");
 
+	Scene *sc;
+	ChangeLevel *cl;
+
 	loadSceneLevel("mainmenu.mi_", "", prefix);
 	loadSceneLevel("tryagain.mi_", "", prefix);
 	loadSceneLevel("options.mi_", "", prefix);
@@ -65,6 +68,14 @@ void SpiderEngine::loadAssetsFullGame() {
 
 	loadSceneLevel("roof.mi_", "decide1.mi_", prefix);
 	loadSceneLevel("decide1.mi_", "", prefix);
+	sc = (Scene *) _levels["decide1.mi_"];
+	cl = new ChangeLevel("bank.mi_");
+	sc->hots[1].actions.push_back(cl);
+	cl = new ChangeLevel("c1.mi_");
+	sc->hots[4].actions.push_back(cl);
+
+	loadSceneLevel("bank.mi_", "", prefix);
+	//loadSceneLevel("busintro.mi_", "", prefix);
 
 	loadArcadeLevel("c1", "", "spider");
 	loadArcadeLevel("c2", "", "spider");
@@ -72,8 +83,13 @@ void SpiderEngine::loadAssetsFullGame() {
 	loadArcadeLevel("c4", "", "spider");
 	loadArcadeLevel("c5", "", "spider");
 	//loadArcadeLevel("c6", "", "spider");
+	// No c7 level?
 	loadArcadeLevel("c8", "", "spider");
 	loadArcadeLevel("c9", "", "spider");
+	loadArcadeLevel("c10", "", "spider");
+	loadArcadeLevel("c11", "", "spider");
+	loadArcadeLevel("c12", "", "spider");
+	loadArcadeLevel("c13", "", "spider");
 
 	// start level
 	Transition *start = new Transition();
@@ -82,8 +98,8 @@ void SpiderEngine::loadAssetsFullGame() {
 	start->intros.push_back("spider/cine/dcine2.smk");
 	_levels["<start>"] = start;
 
-	Scene *sc = (Scene *) _levels["mainmenu.mi_"];
-	ChangeLevel *cl = new ChangeLevel("levels.mi_");
+	sc = (Scene *) _levels["mainmenu.mi_"];
+	cl = new ChangeLevel("levels.mi_");
 	sc->hots[1].actions.push_back(cl);
 	
 	cl = new ChangeLevel("options.mi_");




More information about the Scummvm-git-logs mailing list