[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