[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