[Scummvm-git-logs] scummvm master -> 1cf46c4ee0232dd3b2aee5b5d4728697e7282fb3

mgerhardy martin.gerhardy at gmail.com
Sun Oct 25 08:27:36 UTC 2020


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:
aacb488f25 TWINE: converted to boolean and general cleanup
33b641b1ed TWINE: replaced magic numbers
55cbd7c8a1 TWINE: also pause scummvm if the game is in pause mode
7672fa7860 TWINE: marked the engine as highres
b159872166 TWINE: only disable our own keymaps in Input::enabledKeyMap
1cf46c4ee0 TWINE: added german and french to the detection entry


Commit: aacb488f25c68ed135c188605e1a9e3bd508a65d
    https://github.com/scummvm/scummvm/commit/aacb488f25c68ed135c188605e1a9e3bd508a65d
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:21:44+01:00

Commit Message:
TWINE: converted to boolean and general cleanup

Changed paths:
    engines/twine/actor.cpp
    engines/twine/actor.h
    engines/twine/animations.cpp
    engines/twine/gamestate.cpp
    engines/twine/menu.cpp
    engines/twine/menuoptions.cpp
    engines/twine/menuoptions.h
    engines/twine/movements.cpp
    engines/twine/movements.h
    engines/twine/scene.cpp
    engines/twine/scene.h
    engines/twine/script_life.cpp
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/actor.cpp b/engines/twine/actor.cpp
index 79be9d94cf..6b9e2e47b7 100644
--- a/engines/twine/actor.cpp
+++ b/engines/twine/actor.cpp
@@ -441,7 +441,7 @@ void Actor::hitActor(int32 actorIdx, int32 actorIdxAttacked, int32 strengthOfHit
 		_engine->_extra->addExtraSpecial(actor->x, actor->y + 1000, actor->z, kHitStars);
 
 		if (!actorIdxAttacked) {
-			_engine->_movements->heroMoved = 1;
+			_engine->_movements->heroMoved = true;
 		}
 
 		actor->life -= strengthOfHit;
diff --git a/engines/twine/actor.h b/engines/twine/actor.h
index 7e5eafa8e7..40fb392453 100644
--- a/engines/twine/actor.h
+++ b/engines/twine/actor.h
@@ -240,7 +240,7 @@ public:
 
 	HeroBehaviourType heroBehaviour = kNormal;
 	/** Hero auto agressive mode */
-	int16 autoAgressive = 1;
+	bool autoAgressive = true;
 	/** Previous Hero behaviour */
 	HeroBehaviourType previousHeroBehaviour = kNormal;
 	/** Previous Hero angle */
diff --git a/engines/twine/animations.cpp b/engines/twine/animations.cpp
index 3a01066e89..8fbc5d20fa 100644
--- a/engines/twine/animations.cpp
+++ b/engines/twine/animations.cpp
@@ -1112,7 +1112,7 @@ void Animations::processActorAnimations(int32 actorIdx) { // DoAnim
 					initAnim(kBigHit, 2, 0, currentlyProcessedActorIdx);
 
 					if (currentlyProcessedActorIdx == 0) {
-						_engine->_movements->heroMoved = 1;
+						_engine->_movements->heroMoved = true;
 					}
 
 					actor->life--;
@@ -1134,7 +1134,7 @@ void Animations::processActorAnimations(int32 actorIdx) { // DoAnim
 						initAnim(kBigHit, 2, 0, currentlyProcessedActorIdx);
 
 						if (!actorIdx) {
-							_engine->_movements->heroMoved = 1;
+							_engine->_movements->heroMoved = true;
 						}
 
 						actor->life--;
diff --git a/engines/twine/gamestate.cpp b/engines/twine/gamestate.cpp
index fd1fef97e6..662e3bcc35 100644
--- a/engines/twine/gamestate.cpp
+++ b/engines/twine/gamestate.cpp
@@ -67,23 +67,21 @@ void GameState::initEngineProjections() {
 }
 
 void GameState::initSceneVars() {
-	int32 i;
-
 	_engine->_extra->resetExtras();
 
-	for (i = 0; i < OVERLAY_MAX_ENTRIES; i++) {
+	for (int32 i = 0; i < OVERLAY_MAX_ENTRIES; i++) {
 		_engine->_redraw->overlayList[i].info0 = -1;
 	}
 
-	for (i = 0; i < NUM_SCENES_FLAGS; i++) {
+	for (int32 i = 0; i < ARRAYSIZE(_engine->_scene->sceneFlags); i++) {
 		_engine->_scene->sceneFlags[i] = 0;
 	}
 
-	for (i = 0; i < NUM_GAME_FLAGS; i++) {
+	for (int32 i = 0; i < ARRAYSIZE(gameFlags); i++) {
 		gameFlags[i] = 0;
 	}
 
-	for (i = 0; i < NUM_INVENTORY_ITEMS; i++) {
+	for (int32 i = 0; i < ARRAYSIZE(inventoryFlags); i++) {
 		inventoryFlags[i] = 0;
 	}
 
@@ -102,7 +100,7 @@ void GameState::initSceneVars() {
 	_engine->_scene->sampleRound[2] = 0;
 	_engine->_scene->sampleRound[3] = 0;
 
-	for (i = 0; i < ARRAYSIZE(holomapFlags); i++) {
+	for (int32 i = 0; i < ARRAYSIZE(holomapFlags); i++) {
 		holomapFlags[i] = 0;
 	}
 
@@ -148,7 +146,7 @@ void GameState::initEngineVars() {
 	_engine->_scene->needChangeScene = 0;
 	_engine->quitGame = -1;
 	_engine->_scene->mecaPinguinIdx = -1;
-	_engine->_menuOptions->canShowCredits = 0;
+	_engine->_menuOptions->canShowCredits = false;
 
 	inventoryNumLeafs = 0;
 	inventoryNumLeafsBox = 2;
@@ -238,7 +236,7 @@ bool GameState::loadGame() {
 	usingSabre = file.readByte();
 
 	_engine->_scene->currentSceneIdx = -1;
-	_engine->_scene->heroPositionType = kReborn;
+	_engine->_scene->heroPositionType = ScenePositionType::kReborn;
 	return true;
 }
 
diff --git a/engines/twine/menu.cpp b/engines/twine/menu.cpp
index e981e373fb..2b9ecac731 100644
--- a/engines/twine/menu.cpp
+++ b/engines/twine/menu.cpp
@@ -479,8 +479,7 @@ int32 Menu::processMenu(int16 *menuSettings) {
 			switch (id) {
 			case kAgressiveMode:
 				if (_engine->_input->toggleActionIfActive(TwinEActionType::UILeft) || _engine->_input->toggleActionIfActive(TwinEActionType::UIRight)) {
-					_engine->cfgfile.AutoAgressive = !_engine->cfgfile.AutoAgressive;
-					_engine->_actor->autoAgressive = _engine->cfgfile.AutoAgressive;
+					_engine->_actor->autoAgressive = !_engine->_actor->autoAgressive;
 				}
 				break;
 			case kPolygonDetails:
@@ -846,7 +845,7 @@ void Menu::drawBehaviour(HeroBehaviourType behaviour, int32 angle, int16 cantDra
 		_engine->_text->setFontColor(15);
 
 		char dialText[256];
-		if (_engine->_actor->heroBehaviour == kAggressive && _engine->_actor->autoAgressive == 1) {
+		if (_engine->_actor->heroBehaviour == kAggressive && _engine->_actor->autoAgressive) {
 			_engine->_text->getMenuText(4, dialText, sizeof(dialText));
 		} else {
 			_engine->_text->getMenuText(_engine->_actor->heroBehaviour, dialText, sizeof(dialText));
diff --git a/engines/twine/menuoptions.cpp b/engines/twine/menuoptions.cpp
index b05514c6ee..fed6aca658 100644
--- a/engines/twine/menuoptions.cpp
+++ b/engines/twine/menuoptions.cpp
@@ -93,7 +93,7 @@ void MenuOptions::newGame() {
 }
 
 void MenuOptions::showCredits() {
-	canShowCredits = 1;
+	canShowCredits = true;
 	int32 tmpShadowMode = _engine->cfgfile.ShadowMode;
 	_engine->cfgfile.ShadowMode = 0;
 	_engine->_gameState->initEngineVars();
@@ -102,7 +102,7 @@ void MenuOptions::showCredits() {
 
 	_engine->gameEngineLoop();
 
-	canShowCredits = 0;
+	canShowCredits = false;
 	_engine->cfgfile.ShadowMode = tmpShadowMode;
 
 	_engine->_screens->clearScreen();
@@ -237,7 +237,7 @@ void MenuOptions::continueGameMenu() {
 		_engine->_gameState->initEngineVars();
 		_engine->_gameState->loadGame();
 		if (_engine->_scene->newHeroX == -1) {
-			_engine->_scene->heroPositionType = kNoPosition;
+			_engine->_scene->heroPositionType = ScenePositionType::kNoPosition;
 		}
 		if (_engine->_gameState->gameChapter == 0 && _engine->_scene->currentSceneIdx == 0) {
 			newGame();
diff --git a/engines/twine/menuoptions.h b/engines/twine/menuoptions.h
index 8ca57ef180..f819b55afd 100644
--- a/engines/twine/menuoptions.h
+++ b/engines/twine/menuoptions.h
@@ -42,7 +42,7 @@ private:
 public:
 	MenuOptions(TwinEEngine *engine) : _engine(engine) {}
 
-	int32 canShowCredits = 0;
+	bool canShowCredits = false;
 
 	char playerName[32] {'\0'};
 
diff --git a/engines/twine/movements.cpp b/engines/twine/movements.cpp
index 67289f87d4..bb7413bade 100644
--- a/engines/twine/movements.cpp
+++ b/engines/twine/movements.cpp
@@ -314,8 +314,9 @@ void Movements::processActorMovements(int32 actorIdx) {
 				case kAggressive:
 					if (_engine->_input->isActionActive(TwinEActionType::ExecuteBehaviourAction)) {
 						if (_engine->_actor->autoAgressive) {
-							heroMoved = 1;
+							heroMoved = true;
 							actor->angle = getRealAngle(&actor->move);
+							// TODO: previousLoopPressedKey must be handled properly
 							if (!(_engine->previousLoopPressedKey & 1) || !actor->anim) {
 								int32 aggresiveMode = _engine->getRandomNumber(3);
 
@@ -363,20 +364,18 @@ void Movements::processActorMovements(int32 actorIdx) {
 							_engine->_animations->initAnim(kThrowBall, 1, 0, actorIdx);
 						}
 
-						heroMoved = 1;
+						heroMoved = true;
 						actor->angle = getRealAngle(&actor->move);
 					}
-				} else {
-					if (_engine->_gameState->gameFlags[InventoryItems::kiUseSabre]) {
-						if (actor->body != InventoryItems::kiUseSabre) {
-							_engine->_actor->initModelActor(InventoryItems::kiUseSabre, actorIdx);
-						}
+				} else if (_engine->_gameState->gameFlags[InventoryItems::kiUseSabre]) {
+					if (actor->body != InventoryItems::kiUseSabre) {
+						_engine->_actor->initModelActor(InventoryItems::kiUseSabre, actorIdx);
+					}
 
-						_engine->_animations->initAnim(kSabreAttack, 1, 0, actorIdx);
+					_engine->_animations->initAnim(kSabreAttack, 1, 0, actorIdx);
 
-						heroMoved = 1;
-						actor->angle = getRealAngle(&actor->move);
-					}
+					heroMoved = true;
+					actor->angle = getRealAngle(&actor->move);
 				}
 			}
 
@@ -384,7 +383,7 @@ void Movements::processActorMovements(int32 actorIdx) {
 			if (!_engine->loopPressedKey || heroAction) {
 				// if continue walking
 				if (_engine->_input->isActionActive(TwinEActionType::MoveForward) || _engine->_input->isActionActive(TwinEActionType::MoveBackward)) {
-					heroMoved = 0; // don't break animation
+					heroMoved = false; // don't break animation
 				}
 
 				if (_engine->_input->key != heroPressedKey || _engine->loopPressedKey != heroPressedKey2) {
@@ -393,20 +392,20 @@ void Movements::processActorMovements(int32 actorIdx) {
 					}
 				}
 
-				heroMoved = 0;
+				heroMoved = false;
 
 				if (_engine->_input->isActionActive(TwinEActionType::MoveForward)) { // walk forward
 					if (!_engine->_scene->currentActorInZone) {
 						_engine->_animations->initAnim(kForward, 0, 255, actorIdx);
 					}
-					heroMoved = 1;
+					heroMoved = true;
 				} else if (_engine->_input->isActionActive(TwinEActionType::MoveBackward)) { // walk backward
 					_engine->_animations->initAnim(kBackward, 0, 255, actorIdx);
-					heroMoved = 1;
+					heroMoved = true;
 				}
 
 				if (_engine->_input->isActionActive(TwinEActionType::TurnLeft)) {
-					heroMoved = 1;
+					heroMoved = true;
 					if (actor->anim == 0) {
 						_engine->_animations->initAnim(kTurnLeft, 0, 255, actorIdx);
 					} else {
@@ -415,7 +414,7 @@ void Movements::processActorMovements(int32 actorIdx) {
 						}
 					}
 				} else if (_engine->_input->isActionActive(TwinEActionType::TurnRight)) {
-					heroMoved = 1;
+					heroMoved = true;
 					if (actor->anim == 0) {
 						_engine->_animations->initAnim(kTurnRight, 0, 255, actorIdx);
 					} else {
@@ -484,6 +483,6 @@ void Movements::processActorMovements(int32 actorIdx) {
 			break;
 		}
 	}
-}
+} // namespace TwinE
 
 } // namespace TwinE
diff --git a/engines/twine/movements.h b/engines/twine/movements.h
index 1ea548709b..154ffc9ae3 100644
--- a/engines/twine/movements.h
+++ b/engines/twine/movements.h
@@ -52,7 +52,7 @@ private:
 public:
 	Movements(TwinEEngine *engine);
 	/** Hero moved */
-	int16 heroMoved = 0; // twinsenMove
+	bool heroMoved = false; // twinsenMove
 	/** Hero Action */
 	int16 heroAction = 0; // action
 
diff --git a/engines/twine/scene.cpp b/engines/twine/scene.cpp
index 077069a969..3cbda28ee3 100644
--- a/engines/twine/scene.cpp
+++ b/engines/twine/scene.cpp
@@ -20,6 +20,7 @@
  *
  */
 
+#include "common/util.h"
 #include "twine/actor.h"
 #include "twine/animations.h"
 #include "twine/extra.h"
@@ -290,7 +291,7 @@ void Scene::resetScene() {
 
 	_engine->_extra->resetExtras();
 
-	for (i = 0; i < NUM_SCENES_FLAGS; i++) {
+	for (i = 0; i < ARRAYSIZE(sceneFlags); i++) {
 		sceneFlags[i] = 0;
 	}
 
@@ -335,13 +336,13 @@ void Scene::changeScene() {
 	_engine->_text->initTextBank(_engine->_text->currentTextBank + 3);
 	_engine->_grid->initGrid(needChangeScene);
 
-	if (heroPositionType == kZone) {
+	if (heroPositionType == ScenePositionType::kZone) {
 		newHeroX = zoneHeroX;
 		newHeroY = zoneHeroY;
 		newHeroZ = zoneHeroZ;
 	}
 
-	if (heroPositionType == kScene || heroPositionType == kNoPosition) {
+	if (heroPositionType == ScenePositionType::kScene || heroPositionType == ScenePositionType::kNoPosition) {
 		newHeroX = sceneHeroX;
 		newHeroY = sceneHeroY;
 		newHeroZ = sceneHeroZ;
@@ -367,7 +368,7 @@ void Scene::changeScene() {
 
 	_engine->_gameState->inventoryNumKeys = 0;
 	_engine->disableScreenRecenter = 0;
-	heroPositionType = kNoPosition;
+	heroPositionType = ScenePositionType::kNoPosition;
 	sampleAmbienceTime = 0;
 
 	_engine->_grid->newCameraX = sceneActors[currentlyFollowedActor].x >> 9;
@@ -375,7 +376,7 @@ void Scene::changeScene() {
 	_engine->_grid->newCameraZ = sceneActors[currentlyFollowedActor].z >> 9;
 
 	_engine->_gameState->magicBallIdx = -1;
-	_engine->_movements->heroMoved = 1;
+	_engine->_movements->heroMoved = true;
 	_engine->_grid->useCellingGrid = -1;
 	_engine->_grid->cellingGridIdx = -1;
 	_engine->_redraw->reqBgRedraw = true;
@@ -491,7 +492,7 @@ void Scene::processActorZones(int32 actorIdx) {
 					zoneHeroX = actor->x - zone->bottomLeft.x + zone->infoData.ChangeScene.x;
 					zoneHeroY = actor->y - zone->bottomLeft.y + zone->infoData.ChangeScene.y;
 					zoneHeroZ = actor->z - zone->bottomLeft.z + zone->infoData.ChangeScene.z;
-					heroPositionType = kZone;
+					heroPositionType = ScenePositionType::kZone;
 				}
 				break;
 			case kCamera:
diff --git a/engines/twine/scene.h b/engines/twine/scene.h
index f285b96f2f..abda61b194 100644
--- a/engines/twine/scene.h
+++ b/engines/twine/scene.h
@@ -37,7 +37,7 @@ namespace TwinE {
 #define NUM_MAX_ZONES 100
 #define NUM_MAX_TRACKS 200
 
-enum ScenePositionType {
+enum class ScenePositionType {
 	kNoPosition = 0,
 	kZone = 1,
 	kScene = 2,
@@ -158,7 +158,7 @@ public:
 	int16 heroYBeforeFall = 0;
 
 	/** Hero type of position in scene */
-	int16 heroPositionType = 0; // twinsenPositionModeInNewCube
+	ScenePositionType heroPositionType = ScenePositionType::kNoPosition; // twinsenPositionModeInNewCube
 
 	// ACTORS
 	int32 sceneNumActors = 0;
diff --git a/engines/twine/script_life.cpp b/engines/twine/script_life.cpp
index 39d8dd5589..81d74dbf46 100644
--- a/engines/twine/script_life.cpp
+++ b/engines/twine/script_life.cpp
@@ -888,7 +888,7 @@ static int32 lGIVE_BONUS(TwinEEngine *engine, int32 actorIdx, ActorStruct *actor
 static int32 lCHANGE_CUBE(TwinEEngine *engine, int32 actorIdx, ActorStruct *actor) {
 	int32 sceneIdx = *(scriptPtr++);
 	engine->_scene->needChangeScene = sceneIdx;
-	engine->_scene->heroPositionType = kScene;
+	engine->_scene->heroPositionType = ScenePositionType::kScene;
 	return 0;
 }
 
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index e8cdbdee43..1e2c8afd36 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -236,7 +236,7 @@ void TwinEEngine::initConfigurations() {
 	cfgfile.Fps = ConfGetIntOrDefault("Fps", DEFAULT_FRAMES_PER_SECOND);
 	cfgfile.Debug = ConfGetIntOrDefault("Debug", 0) == 1;
 	cfgfile.UseAutoSaving = ConfGetIntOrDefault("UseAutoSaving", 0);
-	cfgfile.AutoAgressive = ConfGetIntOrDefault("CombatAuto", 0);
+	_actor->autoAgressive = ConfGetIntOrDefault("CombatAuto", 1) == 1;
 	cfgfile.ShadowMode = ConfGetIntOrDefault("Shadow", 0);
 	cfgfile.SceZoom = ConfGetIntOrDefault("SceZoom", 0) == 0;
 	cfgfile.WallCollision = ConfGetIntOrDefault("WallCollision", 0);
@@ -346,7 +346,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 
 	_debug->processDebug();
 
-	if (_menuOptions->canShowCredits != 0) {
+	if (_menuOptions->canShowCredits) {
 		// TODO: if current music playing != 8, than play_track(8);
 		if (_input->toggleAbortAction()) {
 			return 0;
@@ -677,7 +677,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 							_grid->newCameraY = (_scene->sceneHero->y >> 8);
 							_grid->newCameraZ = (_scene->sceneHero->z >> 9);
 
-							_scene->heroPositionType = kReborn;
+							_scene->heroPositionType = ScenePositionType::kReborn;
 
 							_scene->sceneHero->life = 50;
 							_redraw->reqBgRedraw = true;
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index c7a07b85e7..041e96d49b 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -117,8 +117,6 @@ struct ConfigFile {
 	int32 UseAutoSaving = 0;
 	/** Shadow mode type, value: all, character only, none */
 	int32 ShadowMode = 0;
-	/** AutoAgressive mode type */
-	int32 AutoAgressive = 0;
 	/** SceZoom mode type */
 	bool SceZoom = false;
 	/** Flag to toggle Wall Collision */


Commit: 33b641b1ed81c103c136fab6512270d30224ad5a
    https://github.com/scummvm/scummvm/commit/33b641b1ed81c103c136fab6512270d30224ad5a
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:21:44+01:00

Commit Message:
TWINE: replaced magic numbers

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


diff --git a/engines/twine/grid.cpp b/engines/twine/grid.cpp
index d09e2b739b..28c081676e 100644
--- a/engines/twine/grid.cpp
+++ b/engines/twine/grid.cpp
@@ -34,13 +34,6 @@
 
 namespace TwinE {
 
-/** Grip X size */
-#define GRID_SIZE_X 64
-/** Grip Y size */
-#define GRID_SIZE_Y 25
-/** Grip Z size */
-#define GRID_SIZE_Z GRID_SIZE_X
-
 Grid::Grid(TwinEEngine *engine) : _engine(engine) {}
 
 void Grid::copyGridMask(int32 index, int32 x, int32 y, uint8 *buffer) {
@@ -237,8 +230,9 @@ void Grid::createGridMask() {
 		if (!brickUsageTable[b]) {
 			continue;
 		}
-		if (brickMaskTable[b])
+		if (brickMaskTable[b]) {
 			free(brickMaskTable[b]);
+		}
 		brickMaskTable[b] = (uint8 *)malloc(brickSizeTable[b]);
 		processGridMask(brickTable[b], brickMaskTable[b]);
 	}
@@ -612,7 +606,7 @@ int32 Grid::getBrickShape(int32 x, int32 y, int32 z) {
 	_engine->_collision->collisionY = y >> 8;
 	_engine->_collision->collisionZ = (z + 0x100) >> 9;
 
-	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= 64) {
+	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= GRID_SIZE_X) {
 		return 0;
 	}
 
@@ -620,13 +614,13 @@ int32 Grid::getBrickShape(int32 x, int32 y, int32 z) {
 		return 1;
 	}
 
-	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY > 24 || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= 64) {
+	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY >= GRID_SIZE_Y || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= GRID_SIZE_Z) {
 		return 0;
 	}
 
 	blockBufferPtr += _engine->_collision->collisionX * 50;
 	blockBufferPtr += _engine->_collision->collisionY * 2;
-	blockBufferPtr += (_engine->_collision->collisionZ << 7) * 25;
+	blockBufferPtr += (_engine->_collision->collisionZ << 7) * GRID_SIZE_Y;
 
 	uint8 blockIdx = *blockBufferPtr;
 
@@ -654,7 +648,7 @@ int32 Grid::getBrickShapeFull(int32 x, int32 y, int32 z, int32 y2) {
 	_engine->_collision->collisionY = y >> 8;
 	_engine->_collision->collisionZ = (z + 0x100) >> 9;
 
-	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= 64) {
+	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= GRID_SIZE_X) {
 		return 0;
 	}
 
@@ -662,13 +656,13 @@ int32 Grid::getBrickShapeFull(int32 x, int32 y, int32 z, int32 y2) {
 		return 1;
 	}
 
-	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY > 24 || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= 64) {
+	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY >= GRID_SIZE_Y || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= GRID_SIZE_Z) {
 		return 0;
 	}
 
 	blockBufferPtr += _engine->_collision->collisionX * 50;
 	blockBufferPtr += _engine->_collision->collisionY * 2;
-	blockBufferPtr += (_engine->_collision->collisionZ << 7) * 25;
+	blockBufferPtr += (_engine->_collision->collisionZ << 7) * GRID_SIZE_Y;
 
 	uint8 blockIdx = *blockBufferPtr;
 
@@ -687,7 +681,7 @@ int32 Grid::getBrickShapeFull(int32 x, int32 y, int32 z, int32 y2) {
 		int32 currY = _engine->_collision->collisionY;
 
 		for (int32 i = 0; i < newY; i++) {
-			if (currY > 24) {
+			if (currY >= GRID_SIZE_Y) {
 				return brickShape;
 			}
 
@@ -707,7 +701,7 @@ int32 Grid::getBrickShapeFull(int32 x, int32 y, int32 z, int32 y2) {
 	int32 currY = _engine->_collision->collisionY;
 
 	for (int32 i = 0; i < newY; i++) {
-		if (currY > 24) {
+		if (currY >= GRID_SIZE_Y) {
 			return brickShape;
 		}
 
@@ -729,7 +723,7 @@ int32 Grid::getBrickSoundType(int32 x, int32 y, int32 z) { // getPos2
 	_engine->_collision->collisionY = y >> 8;
 	_engine->_collision->collisionZ = (z + 0x100) >> 9;
 
-	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= 64) {
+	if (_engine->_collision->collisionX < 0 || _engine->_collision->collisionX >= GRID_SIZE_X) {
 		return 0;
 	}
 
@@ -737,13 +731,13 @@ int32 Grid::getBrickSoundType(int32 x, int32 y, int32 z) { // getPos2
 		return 1;
 	}
 
-	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY > 24 || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= 64) {
+	if (_engine->_collision->collisionY < 0 || _engine->_collision->collisionY >= GRID_SIZE_Y || _engine->_collision->collisionZ < 0 || _engine->_collision->collisionZ >= GRID_SIZE_Z) {
 		return 0;
 	}
 
 	blockBufferPtr += _engine->_collision->collisionX * 50;
 	blockBufferPtr += _engine->_collision->collisionY * 2;
-	blockBufferPtr += (_engine->_collision->collisionZ << 7) * 25;
+	blockBufferPtr += (_engine->_collision->collisionZ << 7) * GRID_SIZE_Y;
 
 	uint8 blockIdx = *blockBufferPtr;
 
diff --git a/engines/twine/grid.h b/engines/twine/grid.h
index e6ac3565e3..4abfc58b59 100644
--- a/engines/twine/grid.h
+++ b/engines/twine/grid.h
@@ -80,6 +80,13 @@ struct BrickEntry {
 /** Total number of bricks allowed in the game */
 #define CELLING_GRIDS_START_INDEX 120
 
+/** Grip X size */
+#define GRID_SIZE_X 64
+/** Grip Y size */
+#define GRID_SIZE_Y 25
+/** Grip Z size */
+#define GRID_SIZE_Z GRID_SIZE_X
+
 class TwinEEngine;
 
 class Grid {
@@ -162,7 +169,7 @@ public:
 	int32 numberOfBll = 0;
 
 	/** Grid block entry types */
-	typedef struct BlockEntry blockMap[64][64][25];
+	typedef struct BlockEntry blockMap[GRID_SIZE_X][GRID_SIZE_Z][GRID_SIZE_Y];
 
 	/** Brick data buffer */
 	BrickEntry bricksDataBuffer[28][150];
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 1e2c8afd36..91f1a5dddf 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -289,7 +289,7 @@ void TwinEEngine::initSVGA() {
 }
 
 void TwinEEngine::initAll() {
-	_grid->blockBuffer = (uint8 *)malloc(64 * 64 * 25 * 2 * sizeof(uint8));
+	_grid->blockBuffer = (uint8 *)malloc(GRID_SIZE_X * GRID_SIZE_Z * GRID_SIZE_Y * 2 * sizeof(uint8));
 	_animations->animBuffer1 = _animations->animBuffer2 = (uint8 *)malloc(5000 * sizeof(uint8));
 	memset(_menu->itemAngle, 256, sizeof(_menu->itemAngle)); // reset inventory items angles
 


Commit: 55cbd7c8a152fc8e50a8eaaf9f375cda04986816
    https://github.com/scummvm/scummvm/commit/55cbd7c8a152fc8e50a8eaaf9f375cda04986816
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:21:44+01:00

Commit Message:
TWINE: also pause scummvm if the game is in pause mode

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


diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 91f1a5dddf..5a5d2c6710 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -314,6 +314,7 @@ int TwinEEngine::getRandomNumber(uint max) {
 void TwinEEngine::freezeTime() {
 	if (!isTimeFreezed) {
 		saveFreezedTime = lbaTime;
+		_pauseToken = pauseEngine();
 	}
 	isTimeFreezed++;
 }
@@ -322,6 +323,7 @@ void TwinEEngine::unfreezeTime() {
 	--isTimeFreezed;
 	if (isTimeFreezed == 0) {
 		lbaTime = saveFreezedTime;
+		_pauseToken.clear();
 	}
 }
 
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 041e96d49b..5f41bafc5a 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -156,6 +156,7 @@ private:
 	int32 isTimeFreezed = 0;
 	int32 saveFreezedTime = 0;
 	ActorMoveStruct loopMovePtr; // mainLoopVar1
+	PauseToken _pauseToken;
 
 public:
 	TwinEEngine(OSystem *system, Common::Language language, uint32 flags);


Commit: 7672fa7860c068278d5e3aef4d34bb9064f29534
    https://github.com/scummvm/scummvm/commit/7672fa7860c068278d5e3aef4d34bb9064f29534
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:21:44+01:00

Commit Message:
TWINE: marked the engine as highres

Changed paths:
    engines/twine/configure.engine


diff --git a/engines/twine/configure.engine b/engines/twine/configure.engine
index 1895015425..4d301185a2 100644
--- a/engines/twine/configure.engine
+++ b/engines/twine/configure.engine
@@ -1,3 +1,3 @@
 # This file is included from the main "configure" script
 # add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
-add_engine twine "Little Big Adventure" no "" "" "cxx11"
+add_engine twine "Little Big Adventure" no "" "" "cxx11 highres"


Commit: b159872166c17acddb92ff83840d88b820c0a8aa
    https://github.com/scummvm/scummvm/commit/b159872166c17acddb92ff83840d88b820c0a8aa
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:21:44+01:00

Commit Message:
TWINE: only disable our own keymaps in Input::enabledKeyMap

Changed paths:
    engines/twine/input.cpp


diff --git a/engines/twine/input.cpp b/engines/twine/input.cpp
index 5a8bf9db71..333b0210b3 100644
--- a/engines/twine/input.cpp
+++ b/engines/twine/input.cpp
@@ -133,7 +133,10 @@ void Input::enabledKeyMap(const char *id) {
 	Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
 	const Common::KeymapArray &keymaps = keymapper->getKeymaps();
 	for (Common::Keymap *keymap : keymaps) {
-		keymap->setEnabled(keymap->getId() == id);
+		const Common::String& keymapId = keymap->getId();
+		if (keymapId == mainKeyMapId || keymapId == uiKeyMapId || keymapId == cutsceneKeyMapId) {
+			keymap->setEnabled(keymapId == id);
+		}
 	}
 	_currentKeyMap = id;
 	debug("enable keymap %s", id);


Commit: 1cf46c4ee0232dd3b2aee5b5d4728697e7282fb3
    https://github.com/scummvm/scummvm/commit/1cf46c4ee0232dd3b2aee5b5d4728697e7282fb3
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-10-25T09:22:58+01:00

Commit Message:
TWINE: added german and french to the detection entry

see https://github.com/scummvm/scummvm/pull/2557

Changed paths:
    engines/twine/detection.cpp


diff --git a/engines/twine/detection.cpp b/engines/twine/detection.cpp
index 1a06f48372..d609640bf6 100644
--- a/engines/twine/detection.cpp
+++ b/engines/twine/detection.cpp
@@ -68,6 +68,24 @@ static const ADGameDescription twineGameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO1(GUIO_NONE)
 	},
+	{
+		"twine",
+		"",
+		AD_ENTRY1s("text.hqr", "31d880f658cc6cc6d6cf70df732aec4f", 248829),
+		Common::FR_FRA,
+		Common::kPlatformDOS,
+		ADGF_UNSTABLE,
+		GUIO1(GUIO_NONE)
+	},
+	{
+		"twine",
+		"",
+		AD_ENTRY1s("text.hqr", "31d880f658cc6cc6d6cf70df732aec4f", 248829),
+		Common::DE_DEU,
+		Common::kPlatformDOS,
+		ADGF_UNSTABLE,
+		GUIO1(GUIO_NONE)
+	},
 	AD_TABLE_END_MARKER
 };
 




More information about the Scummvm-git-logs mailing list