[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