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

mgerhardy martin.gerhardy at gmail.com
Fri Jan 1 14:28:37 UTC 2021


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

Summary:
745afe2bf0 TWINE: fixed calculation of holomap char height
6634e921f6 TWINE: removed unused define
a97ef349ce TWINE: extracted to constants
ed7364101d TWINE: fixed interupted spoken text


Commit: 745afe2bf004f6c3c1344d9274093a2c0a7004f8
    https://github.com/scummvm/scummvm/commit/745afe2bf004f6c3c1344d9274093a2c0a7004f8
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-01T15:28:26+01:00

Commit Message:
TWINE: fixed calculation of holomap char height

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


diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index 8ae117972b..7280d6f7b9 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -165,7 +165,7 @@ void Holomap::drawHolomapLocation() {
 	_engine->_menu->drawBox(rect);
 	rect.grow(-1);
 	_engine->_interface->drawTransparentBox(rect, 3);
-	const int32 height = _engine->_text->getCharWidth(title[0]);
+	const int32 height = _engine->_text->getCharHeight(title[0]);
 	drawHolomapText(rect.left + (rect.right - rect.left) / 2, rect.top + (rect.bottom - rect.top) / 2 - height / 2, title);
 }
 
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 9a91594ca7..e2ff72de9a 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -54,7 +54,7 @@ namespace TwinE {
 GameState::GameState(TwinEEngine *engine) : _engine(engine) {
 	Common::fill(&gameFlags[0], &gameFlags[256], 0);
 	Common::fill(&inventoryFlags[0], &inventoryFlags[NUM_INVENTORY_ITEMS], 0);
-	Common::fill(&holomapFlags[0], &holomapFlags[150], 0);
+	Common::fill(&holomapFlags[0], &holomapFlags[NUM_LOCATIONS], 0);
 	playerName[0] = '\0';
 	Common::fill(&gameChoices[0], &gameChoices[10], 0);
 }


Commit: 6634e921f6d307274b0f3221e2e6fe039858ecb9
    https://github.com/scummvm/scummvm/commit/6634e921f6d307274b0f3221e2e6fe039858ecb9
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-01T15:28:26+01:00

Commit Message:
TWINE: removed unused define

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


diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index e2ff72de9a..f42f24c890 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -49,8 +49,6 @@
 
 namespace TwinE {
 
-#define SAVE_DIR "save/"
-
 GameState::GameState(TwinEEngine *engine) : _engine(engine) {
 	Common::fill(&gameFlags[0], &gameFlags[256], 0);
 	Common::fill(&inventoryFlags[0], &inventoryFlags[NUM_INVENTORY_ITEMS], 0);


Commit: a97ef349ce71db1f872d3d3f07052e305e8b116d
    https://github.com/scummvm/scummvm/commit/a97ef349ce71db1f872d3d3f07052e305e8b116d
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-01T15:28:26+01:00

Commit Message:
TWINE: extracted to constants

Changed paths:
    engines/twine/menu/menu.cpp
    engines/twine/renderer/renderer.cpp
    engines/twine/scene/actor.cpp
    engines/twine/scene/animations.cpp
    engines/twine/scene/extra.cpp
    engines/twine/script/script_move_v1.cpp
    engines/twine/shared.h
    engines/twine/twine.cpp


diff --git a/engines/twine/menu/menu.cpp b/engines/twine/menu/menu.cpp
index 5e93a652a1..ea70f1c276 100644
--- a/engines/twine/menu/menu.cpp
+++ b/engines/twine/menu/menu.cpp
@@ -973,7 +973,7 @@ void Menu::processBehaviourMenu() {
 	_engine->_actor->heroAnimIdx[(byte)HeroBehaviourType::kAggressive] = _engine->_actor->heroAnimIdxAGGRESSIVE;
 	_engine->_actor->heroAnimIdx[(byte)HeroBehaviourType::kDiscrete] = _engine->_actor->heroAnimIdxDISCRETE;
 
-	_engine->_movements->setActorAngleSafe(_engine->_scene->sceneHero->angle, _engine->_scene->sceneHero->angle - ANGLE_90, 50, &moveMenu);
+	_engine->_movements->setActorAngleSafe(_engine->_scene->sceneHero->angle, _engine->_scene->sceneHero->angle - ANGLE_90, ANGLE_17, &moveMenu);
 
 	_engine->_screens->copyScreen(_engine->frontVideoBuffer, _engine->workVideoBuffer);
 
@@ -1029,7 +1029,7 @@ void Menu::processBehaviourMenu() {
 		if (tmpHeroBehaviour != _engine->_actor->heroBehaviour) {
 			drawBehaviour(tmpHeroBehaviour, _engine->_scene->sceneHero->angle, true, dirtyRect);
 			tmpHeroBehaviour = _engine->_actor->heroBehaviour;
-			_engine->_movements->setActorAngleSafe(_engine->_scene->sceneHero->angle, _engine->_scene->sceneHero->angle - ANGLE_90, 50, &moveMenu);
+			_engine->_movements->setActorAngleSafe(_engine->_scene->sceneHero->angle, _engine->_scene->sceneHero->angle - ANGLE_90, ANGLE_17, &moveMenu);
 			_engine->_animations->setAnimAtKeyframe(behaviourAnimState[(byte)_engine->_actor->heroBehaviour], _engine->_resources->animTable[_engine->_actor->heroAnimIdx[(byte)_engine->_actor->heroBehaviour]], behaviourEntity, &behaviourAnimData[(byte)_engine->_actor->heroBehaviour]);
 		}
 
diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index 25dd7b2269..176100f6b2 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -1466,7 +1466,7 @@ void Renderer::renderBehaviourModel(int32 boxLeft, int32 boxTop, int32 boxRight,
 		ActorMoveStruct &move = _engine->_menu->moveMenu;
 		const int16 newAngle = move.getRealAngle(_engine->lbaTime);
 		if (move.numOfStep == 0) {
-			_engine->_movements->setActorAngleSafe(newAngle, newAngle - ANGLE_90, 50, &move);
+			_engine->_movements->setActorAngleSafe(newAngle, newAngle - ANGLE_90, ANGLE_17, &move);
 		}
 		renderIsoModel(0, y, 0, 0, newAngle, 0, bodyPtr);
 	} else {
diff --git a/engines/twine/scene/actor.cpp b/engines/twine/scene/actor.cpp
index fa11baa808..d4d3e1afde 100644
--- a/engines/twine/scene/actor.cpp
+++ b/engines/twine/scene/actor.cpp
@@ -75,7 +75,7 @@ void Actor::restartHeroScene() {
 	sceneHero->zone = -1;
 	sceneHero->angle = previousHeroAngle;
 
-	_engine->_movements->setActorAngleSafe(sceneHero->angle, sceneHero->angle, 0, &sceneHero->move);
+	_engine->_movements->setActorAngleSafe(sceneHero->angle, sceneHero->angle, ANGLE_0, &sceneHero->move);
 	setBehaviour(previousHeroBehaviour);
 
 	cropBottomScreen = 0;
@@ -319,7 +319,7 @@ void Actor::initActor(int16 actorIdx) {
 
 		initSpriteActor(actorIdx);
 
-		_engine->_movements->setActorAngleSafe(ANGLE_0, ANGLE_0, 0, &actor->move);
+		_engine->_movements->setActorAngleSafe(ANGLE_0, ANGLE_0, ANGLE_0, &actor->move);
 
 		if (actor->staticFlags.bUsesClipping) {
 			actor->lastX = actor->x;
@@ -339,7 +339,7 @@ void Actor::initActor(int16 actorIdx) {
 			_engine->_animations->initAnim(actor->anim, 0, AnimationTypes::kAnimInvalid, actorIdx);
 		}
 
-		_engine->_movements->setActorAngleSafe(actor->angle, actor->angle, 0, &actor->move);
+		_engine->_movements->setActorAngleSafe(actor->angle, actor->angle, ANGLE_0, &actor->move);
 	}
 
 	actor->positionInMoveScript = -1;
@@ -394,7 +394,7 @@ void Actor::resetActor(int16 actorIdx) {
 	actor->animType = 0;
 	actor->animPosition = 0;
 
-	_engine->_movements->setActorAngleSafe(ANGLE_0, ANGLE_0, 0, &actor->move);
+	_engine->_movements->setActorAngleSafe(ANGLE_0, ANGLE_0, ANGLE_0, &actor->move);
 
 	actor->positionInMoveScript = -1;
 	actor->positionInLifeScript = 0;
@@ -418,7 +418,7 @@ void Actor::hitActor(int32 actorIdx, int32 actorIdxAttacked, int32 strengthOfHit
 			actor->animPosition = tmpAnimPos;
 		} else {
 			if (angle != -1) {
-				_engine->_movements->setActorAngleSafe(angle, angle, 0, &actor->move);
+				_engine->_movements->setActorAngleSafe(angle, angle, ANGLE_0, &actor->move);
 			}
 
 			if (_engine->getRandomNumber() & 1) {
diff --git a/engines/twine/scene/animations.cpp b/engines/twine/scene/animations.cpp
index f50cc8ccd4..6056308a75 100644
--- a/engines/twine/scene/animations.cpp
+++ b/engines/twine/scene/animations.cpp
@@ -542,7 +542,7 @@ void Animations::processActorAnimations(int32 actorIdx) { // DoAnim
 				_engine->_movements->processActorX = actor->x + _engine->_renderer->destX;
 				_engine->_movements->processActorZ = actor->z + _engine->_renderer->destZ;
 
-				_engine->_movements->setActorAngle(ANGLE_0, actor->speed, 50, &actor->move);
+				_engine->_movements->setActorAngle(ANGLE_0, actor->speed, ANGLE_17, &actor->move);
 
 				if (actor->dynamicFlags.bIsSpriteMoving) {
 					if (actor->doorStatus) { // open door
diff --git a/engines/twine/scene/extra.cpp b/engines/twine/scene/extra.cpp
index 8fe1cf7483..976898930c 100644
--- a/engines/twine/scene/extra.cpp
+++ b/engines/twine/scene/extra.cpp
@@ -122,7 +122,7 @@ int32 Extra::addExtra(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx
 		extra->destZ = maxSpeed;
 		extra->strengthOfHit = strengthOfHit;
 
-		_engine->_movements->setActorAngle(ANGLE_0, maxSpeed, 50, &extra->trackActorMove);
+		_engine->_movements->setActorAngle(ANGLE_0, maxSpeed, ANGLE_17, &extra->trackActorMove);
 		const ActorStruct *actor = _engine->_scene->getActor(targetActor);
 		extra->angle = _engine->_movements->getAngleAndSetTargetActorDistance(x, z, actor->x, actor->z);
 		return i;
@@ -323,7 +323,7 @@ int32 Extra::addExtraAiming(int32 actorIdx, int32 x, int32 y, int32 z, int32 spr
 		extra->spawnTime = targetActorIdx;
 		extra->destZ = finalAngle;
 		extra->strengthOfHit = strengthOfHit;
-		_engine->_movements->setActorAngle(ANGLE_0, finalAngle, 50, &extra->trackActorMove);
+		_engine->_movements->setActorAngle(ANGLE_0, finalAngle, ANGLE_17, &extra->trackActorMove);
 		const ActorStruct *actor = _engine->_scene->getActor(targetActorIdx);
 		extra->angle = _engine->_movements->getAngleAndSetTargetActorDistance(x, z, actor->x, actor->z);
 
@@ -361,7 +361,7 @@ int32 Extra::addExtraAimingAtKey(int32 actorIdx, int32 x, int32 y, int32 z, int3
 		extra->payload.extraIdx = extraIdx;
 		extra->destZ = 4000;
 		extra->strengthOfHit = 0;
-		_engine->_movements->setActorAngle(ANGLE_0, 4000, 50, &extra->trackActorMove);
+		_engine->_movements->setActorAngle(ANGLE_0, 4000, ANGLE_17, &extra->trackActorMove);
 		extra->angle = _engine->_movements->getAngleAndSetTargetActorDistance(x, z, extraList[extraIdx].x, extraList[extraIdx].z);
 
 		return i;
@@ -645,7 +645,7 @@ void Extra::processExtras() {
 			int32 tmpAngle = _engine->_movements->getAngleAndSetTargetActorDistance(extra->x, extra->z, currentExtraX, currentExtraZ);
 			int32 angle = ClampAngle(tmpAngle - extra->angle);
 
-			if (angle > 400 && angle < 600) {
+			if (angle > ANGLE_140 && angle < ANGLE_210) {
 				if (extra->strengthOfHit) {
 					_engine->_actor->hitActor(actorIdx, actorIdxAttacked, extra->strengthOfHit, -1);
 				}
@@ -671,7 +671,7 @@ void Extra::processExtras() {
 			extra->x += _engine->_renderer->destX;
 			extra->z += _engine->_renderer->destZ;
 
-			_engine->_movements->setActorAngle(ANGLE_0, extra->destZ, 50, &extra->trackActorMove);
+			_engine->_movements->setActorAngle(ANGLE_0, extra->destZ, ANGLE_17, &extra->trackActorMove);
 
 			if (actorIdxAttacked == _engine->_collision->checkExtraCollisionWithActors(extra, actorIdx)) {
 				if (i == _engine->_gameState->magicBallIdx) {
@@ -722,7 +722,7 @@ void Extra::processExtras() {
 			extra->x += _engine->_renderer->destX;
 			extra->z += _engine->_renderer->destZ;
 
-			_engine->_movements->setActorAngle(0, extra->destZ, 50, &extra->trackActorMove);
+			_engine->_movements->setActorAngle(ANGLE_0, extra->destZ, ANGLE_17, &extra->trackActorMove);
 
 			if (extraIdx == _engine->_collision->checkExtraCollisionWithExtra(extra, _engine->_gameState->magicBallIdx)) {
 				_engine->_sound->playSample(Samples::ItemFound, 1, _engine->_scene->sceneHero->x, _engine->_scene->sceneHero->y, _engine->_scene->sceneHero->z, 0);
diff --git a/engines/twine/script/script_move_v1.cpp b/engines/twine/script/script_move_v1.cpp
index ceff4ae9ac..af64ddd7c8 100644
--- a/engines/twine/script/script_move_v1.cpp
+++ b/engines/twine/script/script_move_v1.cpp
@@ -343,7 +343,7 @@ static int32 mSPEED(TwinEEngine *engine, MoveScriptContext &ctx) {
 	ctx.actor->speed = ctx.stream.readSint16LE();
 
 	if (ctx.actor->staticFlags.bIsSpriteActor) {
-		engine->_movements->setActorAngle(0, ctx.actor->speed, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, ctx.actor->speed, ANGLE_17, &ctx.actor->move);
 	}
 
 	return 0;
@@ -434,7 +434,7 @@ static int32 mOPEN_LEFT(TwinEEngine *engine, MoveScriptContext &ctx) {
 		ctx.actor->doorStatus = doorStatus;
 		ctx.actor->dynamicFlags.bIsSpriteMoving = 1;
 		ctx.actor->speed = 1000;
-		engine->_movements->setActorAngle(ANGLE_0, 1000, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, ANGLE_351, ANGLE_17, &ctx.actor->move);
 	}
 	return 0;
 }
@@ -450,7 +450,7 @@ static int32 mOPEN_RIGHT(TwinEEngine *engine, MoveScriptContext &ctx) {
 		ctx.actor->doorStatus = doorStatus;
 		ctx.actor->dynamicFlags.bIsSpriteMoving = 1;
 		ctx.actor->speed = 1000;
-		engine->_movements->setActorAngle(ANGLE_0, 1000, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, ANGLE_351, ANGLE_17, &ctx.actor->move);
 	}
 	return 0;
 }
@@ -466,7 +466,7 @@ static int32 mOPEN_UP(TwinEEngine *engine, MoveScriptContext &ctx) {
 		ctx.actor->doorStatus = doorStatus;
 		ctx.actor->dynamicFlags.bIsSpriteMoving = 1;
 		ctx.actor->speed = 1000;
-		engine->_movements->setActorAngle(ANGLE_0, 1000, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, ANGLE_351, ANGLE_17, &ctx.actor->move);
 	}
 	return 0;
 }
@@ -482,7 +482,7 @@ static int32 mOPEN_DOWN(TwinEEngine *engine, MoveScriptContext &ctx) {
 		ctx.actor->doorStatus = doorStatus;
 		ctx.actor->dynamicFlags.bIsSpriteMoving = 1;
 		ctx.actor->speed = 1000;
-		engine->_movements->setActorAngle(ANGLE_0, 1000, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, ANGLE_351, ANGLE_17, &ctx.actor->move);
 	}
 	return 0;
 }
@@ -496,7 +496,7 @@ static int32 mCLOSE(TwinEEngine *engine, MoveScriptContext &ctx) {
 		ctx.actor->doorStatus = 0;
 		ctx.actor->dynamicFlags.bIsSpriteMoving = 1;
 		ctx.actor->speed = -1000;
-		engine->_movements->setActorAngle(ANGLE_0, -1000, 50, &ctx.actor->move);
+		engine->_movements->setActorAngle(ANGLE_0, -ANGLE_351, ANGLE_17, &ctx.actor->move);
 	}
 	return 0;
 }
diff --git a/engines/twine/shared.h b/engines/twine/shared.h
index a0f5c67e86..f70dd67969 100644
--- a/engines/twine/shared.h
+++ b/engines/twine/shared.h
@@ -171,15 +171,20 @@ enum class ExtraSpecialType {
 };
 
 #define ANGLE_360 1024
+#define ANGLE_351 1000
 #define ANGLE_315 896
 #define ANGLE_270 768
 #define ANGLE_225 640
+#define ANGLE_210 600
 #define ANGLE_180 512
+#define ANGLE_140 400
 #define ANGLE_135 384
 #define ANGLE_90 256
 #define ANGLE_70 200
 #define ANGLE_63 180
 #define ANGLE_45 128
+#define ANGLE_17 50
+#define ANGLE_1 5 // 1.75
 #define ANGLE_0 0
 
 inline int32 NormalizeAngle(int32 angle) {
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index bd3540348c..4944c89f44 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -788,7 +788,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 		loopActorStep = 1;
 	}
 
-	_movements->setActorAngle(ANGLE_0, -ANGLE_90, 5, &loopMovePtr);
+	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &loopMovePtr);
 	disableScreenRecenter = false;
 
 	_scene->processEnvironmentSound();
@@ -959,7 +959,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 bool TwinEEngine::gameEngineLoop() {
 	_redraw->reqBgRedraw = true;
 	_screens->lockPalette = true;
-	_movements->setActorAngle(ANGLE_0, -ANGLE_90, 5, &loopMovePtr);
+	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &loopMovePtr);
 
 	while (quitGame == -1) {
 		uint32 start = g_system->getMillis();


Commit: ed7364101d763f11fbf73f2c8921697c816d3e7c
    https://github.com/scummvm/scummvm/commit/ed7364101d763f11fbf73f2c8921697c816d3e7c
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-01T15:28:26+01:00

Commit Message:
TWINE: fixed interupted spoken text

https://bugs.scummvm.org/ticket/11982

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


diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index f42f24c890..f509a82cc9 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -384,6 +384,8 @@ void GameState::processFoundItem(int32 item) {
 			}
 		}
 
+		_engine->_text->playVoxSimple(_engine->_text->currDialTextEntry);
+
 		_engine->lbaTime++;
 	}
 
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index 3fbe375b62..8f3f0467d6 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -620,9 +620,11 @@ bool Text::displayText(int32 index, bool showText, bool playVox) {
 				aborted = true;
 				break;
 			}
+
+			_engine->_text->playVoxSimple(_engine->_text->currDialTextEntry);
 		}
 	}
-	while (_engine->_sound->isSamplePlaying(currDialTextEntry)) {
+	while (_engine->_text->playVoxSimple(_engine->_text->currDialTextEntry)) {
 		ScopedFPS scopedFps;
 		_engine->readKeys();
 		if (_engine->shouldQuit() || _engine->_input->toggleAbortAction()) {




More information about the Scummvm-git-logs mailing list