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

mgerhardy noreply at scummvm.org
Tue Feb 15 06:49:58 UTC 2022


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

Summary:
97bddcf506 TWINE: fixed invalid processActor z coordinate handling
d276f63f54 TWINE: replaced magic numbers
7046e8a170 TWINE: renamed variable
c5943bfb40 TWINE: cleanup return value of scene loop
39ca392a45 TWINE: replaced magic numbers with enum constants
f9527a5d03 TWINE: reduced cyclic complexity to improve readability in processEnvironmentSound()


Commit: 97bddcf506fa3076d706ac365229290c5f1a9962
    https://github.com/scummvm/scummvm/commit/97bddcf506fa3076d706ac365229290c5f1a9962
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:43:29+01:00

Commit Message:
TWINE: fixed invalid processActor z coordinate handling

found in original source code OBJECT.C lines 1677-1680

Changed paths:
    engines/twine/scene/animations.cpp


diff --git a/engines/twine/scene/animations.cpp b/engines/twine/scene/animations.cpp
index 2c9951477f8..bfa2fa4eaff 100644
--- a/engines/twine/scene/animations.cpp
+++ b/engines/twine/scene/animations.cpp
@@ -731,6 +731,7 @@ void Animations::processActorAnimations(int32 actorIdx) {
 						} else {
 							processActor.x = previousActor.x;
 						}
+					} else {
 						processActor.z = previousActor.z;
 					}
 				}


Commit: d276f63f54c326c55c2f0d80bf122751eecbe6f1
    https://github.com/scummvm/scummvm/commit/d276f63f54c326c55c2f0d80bf122751eecbe6f1
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:43:45+01:00

Commit Message:
TWINE: replaced magic numbers

Changed paths:
    engines/twine/renderer/redraw.h
    engines/twine/script/script_life_v1.cpp


diff --git a/engines/twine/renderer/redraw.h b/engines/twine/renderer/redraw.h
index fe16d7a22a9..1a7753f44e2 100644
--- a/engines/twine/renderer/redraw.h
+++ b/engines/twine/renderer/redraw.h
@@ -149,6 +149,7 @@ public:
 
 	OverlayListStruct overlayList[OVERLAY_MAX_ENTRIES];
 
+	// InitIncrustDisp
 	void addOverlay(OverlayType type, int16 info0, int16 x, int16 y, int16 info1, OverlayPosType posType, int16 lifeTime);
 
 	/**
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index eca445a9caa..cfa90aba557 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -89,8 +89,8 @@ struct ScriptLifeFunction {
 /** Script condition operators */
 enum LifeScriptOperators {
 	/*==*/kEqualTo = 0,
-	/*> */ kGreaterThan = 1,
-	/*< */ kLessThan = 2,
+	/*> */kGreaterThan = 1,
+	/*< */kLessThan = 2,
 	/*>=*/kGreaterThanOrEqualTo = 3,
 	/*<=*/kLessThanOrEqualTo = 4,
 	/*!=*/kNotEqualTo = 5
@@ -121,8 +121,8 @@ enum LifeScriptConditions {
 	/*0x14*/ kcBEHAVIOUR = 20,       /*<! Hero behaviour. (Parameter = Behaviour Index) */
 	/*0x15*/ kcCHAPTER = 21,         /*<! Story Chapters. (Parameter = Chapter Index) */
 	/*0x16*/ kcDISTANCE_3D = 22,     /*<! Distance between the actor passed as parameter and the current actor. (Parameter = Actor Index, Parameter = Distance) */
-	                                 /*0x17 - 23 unused */
-	                                 /*0x18 - 24 unused */
+	/*0x17*/ kcMAGIC_LEVEL = 23,
+	/*0x18*/ kcMAGIC_POINTS = 24,
 	/*0x19*/ kcUSE_INVENTORY = 25,   /*<! Use inventory object. (Parameter = Object Index in the inventory, Paramenter = 0 (Not in Inventory), = 1 (In the Inventory)) */
 	/*0x1A*/ kcCHOICE = 26,          /*<! Menu choice. (Parameter = Text Index in the current Text Bank) */
 	/*0x1B*/ kcFUEL = 27,            /*<! Amount of fuel gas the Hero have in his inventory. (Parameter = Gas amount) */
@@ -320,10 +320,10 @@ static int32 processLifeConditions(TwinEEngine *engine, LifeScriptContext &ctx)
 		}
 		break;
 	}
-	case 23:
+	case kcMAGIC_LEVEL:
 		engine->_scene->_currentScriptValue = engine->_gameState->_magicLevelIdx;
 		break;
-	case 24:
+	case kcMAGIC_POINTS:
 		engine->_scene->_currentScriptValue = engine->_gameState->_inventoryMagicPoints;
 		break;
 	case kcUSE_INVENTORY: {


Commit: 7046e8a170079d8a372d0c1c165c6284fb3ac730
    https://github.com/scummvm/scummvm/commit/7046e8a170079d8a372d0c1c165c6284fb3ac730
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:45:49+01:00

Commit Message:
TWINE: renamed variable

Changed paths:
    engines/twine/scene/gamestate.cpp
    engines/twine/script/script_life_v1.cpp
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 1203f9eab2c..42cdc2813e3 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -116,7 +116,7 @@ void GameState::initEngineVars() {
 
 	_engine->_scene->_currentSceneIdx = SCENE_CEILING_GRID_FADE_1;
 	_engine->_scene->_needChangeScene = LBA1SceneId::Citadel_Island_Prison;
-	_engine->_quitGame = -1;
+	_engine->_quitSceneLoop = -1;
 	_engine->_scene->_mecaPenguinIdx = -1;
 	_engine->_menuOptions->canShowCredits = false;
 
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index cfa90aba557..2c202649b33 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1631,7 +1631,7 @@ static int32 lGAME_OVER(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x62
  */
 static int32 lTHE_END(TwinEEngine *engine, LifeScriptContext &ctx) {
-	engine->_quitGame = 1;
+	engine->_quitSceneLoop = 1;
 	engine->_gameState->setLeafs(0);
 	engine->_scene->_sceneHero->setLife(kActorMaxLife);
 	engine->_gameState->setMagicPoints(80);
@@ -1739,7 +1739,7 @@ static int32 lCLEAR_TEXT(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x69
  */
 static int32 lBRUTAL_EXIT(TwinEEngine *engine, LifeScriptContext &ctx) {
-	engine->_quitGame = 0;
+	engine->_quitSceneLoop = 0;
 	return 1; // break
 }
 
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index a948d774e33..516df9f3313 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -771,7 +771,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 			}
 			if (giveUp == 1) {
 				_redraw->redrawEngineActions(true);
-				_quitGame = 0;
+				_quitSceneLoop = 0;
 				return 0;
 			}
 			_redraw->redrawEngineActions(true);
@@ -932,8 +932,8 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 
 		processActorSamplePosition(a);
 
-		if (_quitGame != -1) {
-			return _quitGame;
+		if (_quitSceneLoop != -1) {
+			return _quitSceneLoop;
 		}
 
 		if (actor->_staticFlags.bCanDrown) {
@@ -1001,7 +1001,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 
 						autoSave();
 						_gameState->processGameoverAnimation();
-						_quitGame = 0;
+						_quitSceneLoop = 0;
 						return 0;
 					}
 				}
@@ -1040,7 +1040,7 @@ bool TwinEEngine::gameEngineLoop() {
 	_screens->_fadePalette = true;
 	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &_loopMovePtr);
 
-	while (_quitGame == -1) {
+	while (_quitSceneLoop == -1) {
 		if (runGameEngine()) {
 			return true;
 		}
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 47e28f1021c..197d1fd7225 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -281,7 +281,7 @@ public:
 	ConfigFile _cfgfile;
 
 	int32 _frameCounter = 0;
-	int32 _quitGame = 0;
+	int32 _quitSceneLoop = 0;
 	int32 _lbaTime = 0;
 
 	int32 _loopInventoryItem = 0;


Commit: c5943bfb4054b94e373fcb5ff679ed16b41245af
    https://github.com/scummvm/scummvm/commit/c5943bfb4054b94e373fcb5ff679ed16b41245af
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:46:07+01:00

Commit Message:
TWINE: cleanup return value of scene loop

Changed paths:
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 516df9f3313..0820b22a8d7 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -724,7 +724,7 @@ void TwinEEngine::processOptionsMenu() {
 	_redraw->redrawEngineActions(true);
 }
 
-int32 TwinEEngine::runGameEngine() { // mainLoopInteration
+bool TwinEEngine::runGameEngine() { // mainLoopInteration
 	g_system->delayMillis(2);
 
 	FrameMarker frame(this, 60);
@@ -744,8 +744,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 			 && _scene->_needChangeScene != LBA1SceneId::Citadel_Island_outside_the_citadel
 			 && _scene->_needChangeScene != LBA1SceneId::Citadel_Island_near_the_tavern) {
 				// TODO: PlayMidiFile(6);
-				// TODO: Credits();
-				return 1;
+				return true;
 			}
 		}
 		_scene->changeScene();
@@ -758,7 +757,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 	if (_menuOptions->canShowCredits) {
 		// TODO: if current music playing != 8, than play_track(8);
 		if (_input->toggleAbortAction()) {
-			return 1;
+			return true;
 		}
 	} else {
 		// Process give up menu - Press ESC
@@ -767,12 +766,12 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 			exitSceneryView();
 			const int giveUp = _menu->giveupMenu();
 			if (giveUp == kQuitEngine) {
-				return 0;
+				return false;
 			}
 			if (giveUp == 1) {
 				_redraw->redrawEngineActions(true);
 				_quitSceneLoop = 0;
-				return 0;
+				return false;
 			}
 			_redraw->redrawEngineActions(true);
 		}
@@ -933,7 +932,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 		processActorSamplePosition(a);
 
 		if (_quitSceneLoop != -1) {
-			return _quitSceneLoop;
+			return _quitSceneLoop == 1;
 		}
 
 		if (actor->_staticFlags.bCanDrown) {
@@ -1002,7 +1001,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 						autoSave();
 						_gameState->processGameoverAnimation();
 						_quitSceneLoop = 0;
-						return 0;
+						return false;
 					}
 				}
 			} else {
@@ -1014,7 +1013,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 		}
 
 		if (_scene->_needChangeScene != -1) {
-			return 0;
+			return false;
 		}
 	}
 
@@ -1032,7 +1031,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 	_scene->_needChangeScene = SCENE_CEILING_GRID_FADE_1;
 	_redraw->_reqBgRedraw = false;
 
-	return 0;
+	return false;
 }
 
 bool TwinEEngine::gameEngineLoop() {
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 197d1fd7225..dcc87e53fc8 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -219,7 +219,7 @@ private:
 	 * Game engine main loop
 	 * @return true if we want to show credit sequence
 	 */
-	int32 runGameEngine();
+	bool runGameEngine();
 public:
 	TwinEEngine(OSystem *system, Common::Language language, uint32 flagsTwineGameType, TwineGameType gameType);
 	~TwinEEngine() override;


Commit: 39ca392a45c9c450d50c0391c1094a1cfa5a2e12
    https://github.com/scummvm/scummvm/commit/39ca392a45c9c450d50c0391c1094a1cfa5a2e12
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:46:50+01:00

Commit Message:
TWINE: replaced magic numbers with enum constants

Changed paths:
    engines/twine/scene/gamestate.cpp
    engines/twine/script/script_life_v1.cpp
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 42cdc2813e3..5716ad47359 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -116,7 +116,7 @@ void GameState::initEngineVars() {
 
 	_engine->_scene->_currentSceneIdx = SCENE_CEILING_GRID_FADE_1;
 	_engine->_scene->_needChangeScene = LBA1SceneId::Citadel_Island_Prison;
-	_engine->_quitSceneLoop = -1;
+	_engine->_sceneLoopState = SceneLoopState::Continue;
 	_engine->_scene->_mecaPenguinIdx = -1;
 	_engine->_menuOptions->canShowCredits = false;
 
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index 2c202649b33..1697ecda8e1 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1631,7 +1631,7 @@ static int32 lGAME_OVER(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x62
  */
 static int32 lTHE_END(TwinEEngine *engine, LifeScriptContext &ctx) {
-	engine->_quitSceneLoop = 1;
+	engine->_sceneLoopState = SceneLoopState::Finished;
 	engine->_gameState->setLeafs(0);
 	engine->_scene->_sceneHero->setLife(kActorMaxLife);
 	engine->_gameState->setMagicPoints(80);
@@ -1739,7 +1739,7 @@ static int32 lCLEAR_TEXT(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x69
  */
 static int32 lBRUTAL_EXIT(TwinEEngine *engine, LifeScriptContext &ctx) {
-	engine->_quitSceneLoop = 0;
+	engine->_sceneLoopState = SceneLoopState::ReturnToMenu;
 	return 1; // break
 }
 
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 0820b22a8d7..1f9356b586b 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -770,7 +770,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
 			}
 			if (giveUp == 1) {
 				_redraw->redrawEngineActions(true);
-				_quitSceneLoop = 0;
+				_sceneLoopState = SceneLoopState::ReturnToMenu;
 				return false;
 			}
 			_redraw->redrawEngineActions(true);
@@ -931,8 +931,8 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
 
 		processActorSamplePosition(a);
 
-		if (_quitSceneLoop != -1) {
-			return _quitSceneLoop == 1;
+		if (_sceneLoopState != SceneLoopState::Continue) {
+			return _sceneLoopState == SceneLoopState::Finished;
 		}
 
 		if (actor->_staticFlags.bCanDrown) {
@@ -1000,7 +1000,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
 
 						autoSave();
 						_gameState->processGameoverAnimation();
-						_quitSceneLoop = 0;
+						_sceneLoopState = SceneLoopState::ReturnToMenu;
 						return false;
 					}
 				}
@@ -1039,7 +1039,7 @@ bool TwinEEngine::gameEngineLoop() {
 	_screens->_fadePalette = true;
 	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &_loopMovePtr);
 
-	while (_quitSceneLoop == -1) {
+	while (_sceneLoopState == SceneLoopState::Continue) {
 		if (runGameEngine()) {
 			return true;
 		}
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index dcc87e53fc8..e81dc473dba 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -151,6 +151,12 @@ enum class EngineState {
 	QuitGame
 };
 
+enum class SceneLoopState {
+	Continue = -1,
+	ReturnToMenu = 0,
+	Finished = 1
+};
+
 struct ScopedEngineFreeze {
 	TwinEEngine *_engine;
 	ScopedEngineFreeze(TwinEEngine *engine);
@@ -281,7 +287,7 @@ public:
 	ConfigFile _cfgfile;
 
 	int32 _frameCounter = 0;
-	int32 _quitSceneLoop = 0;
+	SceneLoopState _sceneLoopState = SceneLoopState::ReturnToMenu;
 	int32 _lbaTime = 0;
 
 	int32 _loopInventoryItem = 0;


Commit: f9527a5d03ab9c946ee192e72a3ab4feb820be0b
    https://github.com/scummvm/scummvm/commit/f9527a5d03ab9c946ee192e72a3ab4feb820be0b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-02-15T07:47:12+01:00

Commit Message:
TWINE: reduced cyclic complexity to improve readability in processEnvironmentSound()

Changed paths:
    engines/twine/scene/scene.cpp


diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 7e55b2392e2..0cf36ed1675 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -640,34 +640,35 @@ void Scene::playSceneMusic() {
 }
 
 void Scene::processEnvironmentSound() {
-	if (_engine->_lbaTime >= _sampleAmbienceTime) {
-		int16 currentAmb = _engine->getRandomNumber(4); // random ambiance
+	if (_engine->_lbaTime < _sampleAmbienceTime) {
+		return;
+	}
+	int16 currentAmb = _engine->getRandomNumber(4); // random ambiance
 
-		for (int32 s = 0; s < 4; s++) {
-			if (!(_samplePlayed & (1 << currentAmb))) { // if not already played
-				_samplePlayed |= (1 << currentAmb);     // make sample played
+	for (int32 s = 0; s < 4; s++) {
+		if (!(_samplePlayed & (1 << currentAmb))) { // if not already played
+			_samplePlayed |= (1 << currentAmb);     // make sample played
 
-				if (_samplePlayed == 15) { // reset if all samples played
-					_samplePlayed = 0;
-				}
+			if (_samplePlayed == 15) { // reset if all samples played
+				_samplePlayed = 0;
+			}
 
-				const int16 sampleIdx = _sampleAmbiance[currentAmb];
-				if (sampleIdx != -1) {
-					/*int16 decal = _sampleRound[currentAmb];*/
-					int16 repeat = _sampleRepeat[currentAmb];
+			const int16 sampleIdx = _sampleAmbiance[currentAmb];
+			if (sampleIdx != -1) {
+				/*int16 decal = _sampleRound[currentAmb];*/
+				int16 repeat = _sampleRepeat[currentAmb];
 
-					_engine->_sound->playSample(sampleIdx, repeat, 110, -1, 110);
-					break;
-				}
+				_engine->_sound->playSample(sampleIdx, repeat, 110, -1, 110);
+				break;
 			}
-
-			currentAmb++;    // try next ambiance
-			currentAmb &= 3; // loop in all 4 ambiances
 		}
 
-		// compute next ambiance timer
-		_sampleAmbienceTime = _engine->_lbaTime + (_engine->getRandomNumber(_sampleMinDelayRnd) + _sampleMinDelay) * 50;
+		currentAmb++;    // try next ambiance
+		currentAmb &= 3; // loop in all 4 ambiances
 	}
+
+	// compute next ambiance timer
+	_sampleAmbienceTime = _engine->_lbaTime + (_engine->getRandomNumber(_sampleMinDelayRnd) + _sampleMinDelay) * 50;
 }
 
 void Scene::processZoneExtraBonus(ZoneStruct *zone) {
@@ -680,7 +681,7 @@ void Scene::processZoneExtraBonus(ZoneStruct *zone) {
 		return;
 	}
 
-	const int16 amount = zone->infoData.Bonus.amount;
+	const int32 amount = zone->infoData.Bonus.amount;
 	const int32 angle = _engine->_movements->getAngleAndSetTargetActorDistance(ABS(zone->maxs.x + zone->mins.x) / 2, ABS(zone->maxs.z + zone->mins.z) / 2, _sceneHero->_pos.x, _sceneHero->_pos.z);
 	const int32 index = _engine->_extra->addExtraBonus(ABS(zone->maxs.x + zone->mins.x) / 2, zone->maxs.y, ABS(zone->maxs.z + zone->mins.z) / 2, ANGLE_63, angle, bonusSprite, amount);
 




More information about the Scummvm-git-logs mailing list