[Scummvm-git-logs] scummvm master -> e10bf501d5f3b06888d3c19eae8cdf536dbfd91f
mduggan
noreply at scummvm.org
Mon May 8 10:22:42 UTC 2023
This automated email contains information about 14 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8e3e77cd70 TETRAEDGE: Fix copy-paste error. PVS-Studio V656
b0d33ce707 TETRAEDGE: Fix computer puzzle display
cdd6805f00 TETRAEDGE: Add more search paths used by Amerzone
f2f2e68786 TETRAEDGE: Clean up and add more checks in TeWarp loading
d047b3aa25 TETRAEDGE: Fix typo in error message. PVS-Studio V524
5d3f19a06e TETRAEDGE: Add load/save support to documents browser
0fd0e0199e TETRAEDGE: Correctly render blank characters
c620fc7542 TETRAEDGE: Don't lose callbacks on failed srpite load
c8ed379a09 TETRAEDGE: Fix small coverity-identified bugs
49a1f045bd TETRAEDGE: Add search paths from iPhone Amerzone
421b735fd7 TETRAEDGE: Ensure video anim is stopped on unload
a3ac8f99aa TETRAEDGE: Fix amerzone puzzle coordinates
89fb1c802a TETRAEDGE: Add video path workarounds for Amerzone
e10bf501d5 TETRAEDGE: Allow closing game dialogs with escape
Commit: 8e3e77cd7042806134b60c8b04e0e2946256c625
https://github.com/scummvm/scummvm/commit/8e3e77cd7042806134b60c8b04e0e2946256c625
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Fix copy-paste error. PVS-Studio V656
Changed paths:
engines/tetraedge/game/lua_binds.cpp
diff --git a/engines/tetraedge/game/lua_binds.cpp b/engines/tetraedge/game/lua_binds.cpp
index eb3a7d4cb74..9fbacffcb9a 100644
--- a/engines/tetraedge/game/lua_binds.cpp
+++ b/engines/tetraedge/game/lua_binds.cpp
@@ -120,7 +120,7 @@ static int tolua_ExportedFunctions_PlayMovie00(lua_State *L) {
// iOS version.. sometimes has "video" as 3rd param?
Common::String s1(tolua_tostring(L, 1, nullptr));
Common::String s2(tolua_tostring(L, 2, nullptr));
- Common::String s3(tolua_tostring(L, 2, nullptr));
+ Common::String s3(tolua_tostring(L, 3, nullptr));
PlayMovie(s1, s2);
return 0;
}
Commit: b0d33ce707a296b0220a7e7319f3c6ab2bdee142
https://github.com/scummvm/scummvm/commit/b0d33ce707a296b0220a7e7319f3c6ab2bdee142
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Fix computer puzzle display
Changed paths:
engines/tetraedge/game/puzzle_computer_hydra.cpp
diff --git a/engines/tetraedge/game/puzzle_computer_hydra.cpp b/engines/tetraedge/game/puzzle_computer_hydra.cpp
index 6d8623c7eea..777fd9356c5 100644
--- a/engines/tetraedge/game/puzzle_computer_hydra.cpp
+++ b/engines/tetraedge/game/puzzle_computer_hydra.cpp
@@ -130,7 +130,7 @@ bool PuzzleComputerHydra::exitChecklistScreen() {
bool PuzzleComputerHydra::exitCoordinatesScreen() {
_transitionTimer.alarmSignal().remove(this, &PuzzleComputerHydra::enterChecklistScreen);
_gui.spriteLayoutChecked("title")->setVisible(true);
- _gui.spriteLayoutChecked("infos")->setVisible(false);
+ _gui.spriteLayoutChecked("coordinates")->setVisible(false);
_gui.buttonLayoutChecked("button0")->setEnable(false);
_gui.buttonLayoutChecked("button1")->setEnable(false);
_gui.buttonLayoutChecked("button2")->setEnable(false);
Commit: cdd6805f00d7e717f6193f0c8eb741dcd70c26c6
https://github.com/scummvm/scummvm/commit/cdd6805f00d7e717f6193f0c8eb741dcd70c26c6
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Add more search paths used by Amerzone
Changed paths:
engines/tetraedge/te/te_core.cpp
diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 971aa0589cf..9583576e26d 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -199,8 +199,12 @@ Common::FSNode TeCore::findFile(const Common::Path &path) const {
"iPhone-iPad/DefaultDistributor", // iOS Syb 1 paid
"Android-iPhone-iPad/iPhone-iPad", // iOS Syb 2
"PC-MacOSX-Android-iPhone-iPad", // iOS Syb 2
+ "Part2-Full", // Amerzone
+ "Part3-Full", // Amerzone
"Full/HD", // Amerzone
"Part1-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+ "Part2-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+ "Part3-Full/PC-MacOSX/DefaultDistributor", // Amerzone
"Part1-Part2-Part3-Full/HD", // Amerzone
"Part1-Part2-Part3-Full", // Amerzone
"Part1-Full/HD", // Amerzone
Commit: f2f2e68786bcb218515b7c46f93095d8faf1b2b4
https://github.com/scummvm/scummvm/commit/f2f2e68786bcb218515b7c46f93095d8faf1b2b4
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Clean up and add more checks in TeWarp loading
Changed paths:
engines/tetraedge/te/te_warp.cpp
engines/tetraedge/te/te_warp.h
diff --git a/engines/tetraedge/te/te_warp.cpp b/engines/tetraedge/te/te_warp.cpp
index 0717676a583..9c6b66e6595 100644
--- a/engines/tetraedge/te/te_warp.cpp
+++ b/engines/tetraedge/te/te_warp.cpp
@@ -272,13 +272,16 @@ void TeWarp::load(const Common::String &path, bool flag) {
_warpBlocs.resize(_xCount * _yCount * 6);
for (uint i = 0; i < _xCount * _yCount * 6; i++) {
TeWarpBloc::CubeFace face = static_cast<TeWarpBloc::CubeFace>(_file.readByte());
+ // TODO: This is strange, surely we only need to set the offset and create the bloc
+ // once but the code seems to do it xCount * yCount times..
for (uint j = 0; j < _xCount * _yCount; j++) {
- unsigned short offx = _file.readUint16LE();
- unsigned short offy = _file.readUint16LE();
- unsigned int blocTexOffset = _file.readUint32LE();
+ uint xoff = _file.readUint16LE();
+ uint yoff = _file.readUint16LE();
+ if (xoff > 1000 || yoff > 1000)
+ error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
+ uint32 blocTexOffset = _file.readUint32LE();
_warpBlocs[i].setTextureFileOffset(globalTexDataOffset + blocTexOffset);
- TeVector2s32 offset(offx, offy);
- _warpBlocs[i].create(face, _xCount, _yCount, offset);
+ _warpBlocs[i].create(face, _xCount, _yCount, TeVector2s32(xoff, yoff));
}
}
_loadedAnimData.resize(numAnims);
@@ -289,21 +292,26 @@ void TeWarp::load(const Common::String &path, bool flag) {
aname[4] = '\0';
_loadedAnimData[i]._name = aname;
uint numFrames = _file.readUint32LE();
+ if (numFrames > 1000)
+ error("TeWarp::load: Improbable frame count %d", numFrames);
byte numSomething = _file.readByte();
_loadedAnimData[i]._frameDatas.resize(numFrames);
for (uint j = 0; j < numFrames; j++) {
FrameData &frameData = _loadedAnimData[i]._frameDatas[j];
frameData._loadedTexCount = 0;
- frameData._numWarpBlocs = 0;
Common::Array<TeWarpBloc> warpBlocs;
for (uint k = 0; k < numSomething; k++) {
uint blocCount = _file.readUint32LE();
+ if (blocCount > 1000)
+ error("TeWarp::load: Improbable bloc count %d", blocCount);
if (blocCount) {
TeWarpBloc::CubeFace face = static_cast<TeWarpBloc::CubeFace>(_file.readByte());
- warpBlocs.resize(frameData._numWarpBlocs + blocCount);
+ warpBlocs.resize(blocCount);
for (auto &warpBloc : warpBlocs) {
uint xoff = _file.readUint16LE();
uint yoff = _file.readUint16LE();
+ if (xoff > 10000 || yoff > 10000)
+ error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
uint32 texDataOff = _file.readUint32LE();
warpBloc.setTextureFileOffset(globalTexDataOffset + texDataOff);
warpBloc.create(face, _someXVal, _someYVal, TeVector2s32(xoff, yoff));
@@ -311,12 +319,16 @@ void TeWarp::load(const Common::String &path, bool flag) {
warpBloc.color(TeColor(255, 0, 0, 255));
}
uint meshSize = _file.readUint32LE();
+ if (meshSize > 1000)
+ error("TeWarp::load: Improbable meshSize %d", meshSize);
TePickMesh tmpMesh;
tmpMesh.setName(aname);
tmpMesh.nbTriangles(meshSize * 2);
for (uint m = 0; m < meshSize; m++) {
uint xoff = _file.readUint16LE();
uint yoff = _file.readUint16LE();
+ if (xoff > 10000 || yoff > 10000)
+ error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
addQuadToPickMesh(tmpMesh, m * 2, face, TeVector2s32(xoff, yoff), _someMeshX, _someMeshY);
}
tmpMesh.setEnabled(true);
diff --git a/engines/tetraedge/te/te_warp.h b/engines/tetraedge/te/te_warp.h
index 83bac58d5ce..4dd55f77b53 100644
--- a/engines/tetraedge/te/te_warp.h
+++ b/engines/tetraedge/te/te_warp.h
@@ -38,7 +38,6 @@ namespace Tetraedge {
class TeWarp : public Te3DObject2 {
public:
struct FrameData {
- int _numWarpBlocs;
Common::Array<TeWarpBloc> _warpBlocs;
TePickMesh _pickMesh;
int _loadedTexCount;
Commit: d047b3aa25e724497ff817d7afd552fdce6475ce
https://github.com/scummvm/scummvm/commit/d047b3aa25e724497ff817d7afd552fdce6475ce
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Fix typo in error message. PVS-Studio V524
Changed paths:
engines/tetraedge/te/te_scummvm_codec.cpp
diff --git a/engines/tetraedge/te/te_scummvm_codec.cpp b/engines/tetraedge/te/te_scummvm_codec.cpp
index d3b72822e22..bf08fcce79b 100644
--- a/engines/tetraedge/te/te_scummvm_codec.cpp
+++ b/engines/tetraedge/te/te_scummvm_codec.cpp
@@ -89,7 +89,7 @@ void TeScummvmCodec::setLeftBorderSize(uint val) {
}
void TeScummvmCodec::setRightBorderSize(uint val) {
- error("left border not supported.");
+ error("right border not supported.");
}
void TeScummvmCodec::setBottomBorderSize(uint val) {
Commit: 5d3f19a06eea38692d52744bac13fd65b362d91b
https://github.com/scummvm/scummvm/commit/5d3f19a06eea38692d52744bac13fd65b362d91b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Add load/save support to documents browser
Changed paths:
engines/tetraedge/game/documents_browser.cpp
engines/tetraedge/game/documents_browser.h
diff --git a/engines/tetraedge/game/documents_browser.cpp b/engines/tetraedge/game/documents_browser.cpp
index cc58fb6eab3..d33218a01e3 100644
--- a/engines/tetraedge/game/documents_browser.cpp
+++ b/engines/tetraedge/game/documents_browser.cpp
@@ -410,4 +410,23 @@ void DocumentsBrowser::unload() {
_gui.unload();
}
+Common::Error DocumentsBrowser::syncState(Common::Serializer &s) {
+ uint32 count = _documentData.size();
+ s.syncAsUint32LE(count);
+ if (s.isLoading()) {
+ for (unsigned int i = 0; i < count; i++) {
+ Common::String name;
+ s.syncString(name);
+ addDocument(name);
+ }
+ } else {
+ for (auto &doc : _documentData) {
+ Common::String key = doc._key;
+ s.syncString(key);
+ }
+ }
+ return Common::kNoError;
+}
+
+
} // end namespace Tetraedge
diff --git a/engines/tetraedge/game/documents_browser.h b/engines/tetraedge/game/documents_browser.h
index 6e53d38bc51..1d0594e78e1 100644
--- a/engines/tetraedge/game/documents_browser.h
+++ b/engines/tetraedge/game/documents_browser.h
@@ -60,10 +60,13 @@ public:
void showDocument(const Common::String &str, int startPage);
void unload();
+ Common::Error syncState(Common::Serializer &s);
+
TeLayout &zoomedLayout() { return _zoomedLayout; }
TeLuaGUI &gui() { return _gui; }
+
private:
void loadXMLFile(const Common::String &path);
Commit: 0fd0e0199e81654640f688a8883ca58cf8503a2c
https://github.com/scummvm/scummvm/commit/0fd0e0199e81654640f688a8883ca58cf8503a2c
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Correctly render blank characters
Changed paths:
engines/tetraedge/te/te_font2.cpp
diff --git a/engines/tetraedge/te/te_font2.cpp b/engines/tetraedge/te/te_font2.cpp
index 6650fed25e0..c48fecf0c04 100644
--- a/engines/tetraedge/te/te_font2.cpp
+++ b/engines/tetraedge/te/te_font2.cpp
@@ -154,6 +154,9 @@ void TeFont2::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32
error("Call to TeFont2::drawChar but no texture loaded");
const GlyphData2 g = _glyphs[chr];
+ if (!g._xSz || !g._ySz)
+ return;
+
Common::Rect srcRect;
srcRect.left = (int)g._vec.x();
srcRect.top = _texture.h - (int)g._vec.y() - g._ySz;
Commit: c620fc7542a09b1f8f23052cce4a7cf7d51b254e
https://github.com/scummvm/scummvm/commit/c620fc7542a09b1f8f23052cce4a7cf7d51b254e
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Don't lose callbacks on failed srpite load
Changed paths:
engines/tetraedge/te/te_sprite_layout.cpp
diff --git a/engines/tetraedge/te/te_sprite_layout.cpp b/engines/tetraedge/te/te_sprite_layout.cpp
index e794a4a6fbf..54cc455453d 100644
--- a/engines/tetraedge/te/te_sprite_layout.cpp
+++ b/engines/tetraedge/te/te_sprite_layout.cpp
@@ -75,7 +75,7 @@ bool TeSpriteLayout::onParentWorldColorChanged() {
bool TeSpriteLayout::load(const Common::String &path) {
if (path.empty()) {
- _tiledSurfacePtr = new TeTiledSurface();
+ _tiledSurfacePtr->unload();
return true;
}
@@ -88,7 +88,7 @@ bool TeSpriteLayout::load(const Common::String &path) {
bool TeSpriteLayout::load(const Common::FSNode &node, const Common::String *forcePath) {
if (!node.exists()) {
- _tiledSurfacePtr = new TeTiledSurface();
+ _tiledSurfacePtr->unload();
return false;
}
Commit: c8ed379a095fc067326174c19eabeeba49e88bcc
https://github.com/scummvm/scummvm/commit/c8ed379a095fc067326174c19eabeeba49e88bcc
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Fix small coverity-identified bugs
Changed paths:
engines/tetraedge/game/splash_screens.cpp
engines/tetraedge/te/te_button_layout.cpp
engines/tetraedge/te/te_scene_warp.cpp
diff --git a/engines/tetraedge/game/splash_screens.cpp b/engines/tetraedge/game/splash_screens.cpp
index 270acf3e626..d7512307231 100644
--- a/engines/tetraedge/game/splash_screens.cpp
+++ b/engines/tetraedge/game/splash_screens.cpp
@@ -47,6 +47,7 @@ void SplashScreens::enter() {
TeLayout *splash = layoutChecked("splash");
TeLayout *splashImg = dynamic_cast<TeLayout *>(splash->child(0));
+ assert(splashImg);
splashImg->setRatioMode(TeILayout::RATIO_MODE_NONE);
splashImg->updateSize();
@@ -81,6 +82,7 @@ bool SplashScreens::onAlarm() {
splash->onMouseClickValidated().add(this, &SplashScreens::onQuitSplash);
TeLayout *splashImg = dynamic_cast<TeLayout *>(splash->child(0));
+ assert(splashImg);
splashImg->setRatioMode(TeILayout::RATIO_MODE_NONE);
splashImg->updateSize();
diff --git a/engines/tetraedge/te/te_button_layout.cpp b/engines/tetraedge/te/te_button_layout.cpp
index a12e7c1f02a..c1f422e83a9 100644
--- a/engines/tetraedge/te/te_button_layout.cpp
+++ b/engines/tetraedge/te/te_button_layout.cpp
@@ -119,7 +119,7 @@ void TeButtonLayout::load(const Common::String &upImg, const Common::String &dow
TeSpriteLayout *downSprite = nullptr;
if (downImg.size()) {
downSprite = new TeSpriteLayout();
- if (!downSprite->load(upImg))
+ if (!downSprite->load(downImg))
warning("Failed to load button down img %s", downImg.c_str());
}
setDownLayout(downSprite);
diff --git a/engines/tetraedge/te/te_scene_warp.cpp b/engines/tetraedge/te/te_scene_warp.cpp
index 04c5890e1fd..d949117fb97 100644
--- a/engines/tetraedge/te/te_scene_warp.cpp
+++ b/engines/tetraedge/te/te_scene_warp.cpp
@@ -78,8 +78,10 @@ bool TeSceneWarp::load(const Common::String &name, TeWarp *warp, bool flag) {
TeSceneWarpXmlParser parser(this, flag);
TeCore *core = g_engine->getCore();
Common::FSNode node = core->findFile(name);
- parser.loadFile(node);
- parser.parse();
+ if (!parser.loadFile(node))
+ error("TeSceneWarp::load: failed to load data from %s", name.c_str());
+ if (!parser.parse())
+ error("TeSceneWarp::load: failed to parse data from %s", name.c_str());
if (flag) {
// Line 357 ~ 426, plus other fixups
Commit: 49a1f045bdb1c7179ac821120481f94df9bf07cf
https://github.com/scummvm/scummvm/commit/49a1f045bdb1c7179ac821120481f94df9bf07cf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Add search paths from iPhone Amerzone
Changed paths:
engines/tetraedge/te/te_core.cpp
diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 9583576e26d..12229816519 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -205,6 +205,9 @@ Common::FSNode TeCore::findFile(const Common::Path &path) const {
"Part1-Full/PC-MacOSX/DefaultDistributor", // Amerzone
"Part2-Full/PC-MacOSX/DefaultDistributor", // Amerzone
"Part3-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+ "Part1-Full/iPhone-iPad-Android", // Amerzone
+ "Part2-Full/iPhone-iPad-Android", // Amerzone
+ "Part3-Full/iPhone-iPad-Android", // Amerzone
"Part1-Part2-Part3-Full/HD", // Amerzone
"Part1-Part2-Part3-Full", // Amerzone
"Part1-Full/HD", // Amerzone
Commit: 421b735fd79dfb0a248a568ed518a471c0c11361
https://github.com/scummvm/scummvm/commit/421b735fd79dfb0a248a568ed518a471c0c11361
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Ensure video anim is stopped on unload
Changed paths:
engines/tetraedge/te/te_tiled_surface.cpp
diff --git a/engines/tetraedge/te/te_tiled_surface.cpp b/engines/tetraedge/te/te_tiled_surface.cpp
index 414a5e169f1..de8dbd8f701 100644
--- a/engines/tetraedge/te/te_tiled_surface.cpp
+++ b/engines/tetraedge/te/te_tiled_surface.cpp
@@ -227,6 +227,9 @@ void TeTiledSurface::stop() {
}
void TeTiledSurface::unload() {
+ // Force stop
+ _frameAnim.reset();
+
if (_codec) {
delete _codec;
_codec = nullptr;
Commit: a3ac8f99aa34c7775b8f1c174b42ce5ee591d8e5
https://github.com/scummvm/scummvm/commit/a3ac8f99aa34c7775b8f1c174b42ce5ee591d8e5
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Fix amerzone puzzle coordinates
Changed paths:
engines/tetraedge/game/amerzone_game.cpp
diff --git a/engines/tetraedge/game/amerzone_game.cpp b/engines/tetraedge/game/amerzone_game.cpp
index aa83bc4c29b..5af4b0cdeae 100644
--- a/engines/tetraedge/game/amerzone_game.cpp
+++ b/engines/tetraedge/game/amerzone_game.cpp
@@ -374,7 +374,7 @@ bool AmerzoneGame::onPuzzleEnterAnimLoadTime() {
case 2:
_puzzleComputerHydra.setScale(TeVector3f32(1, 1, 0.0001f));
_puzzleComputerHydra.setPosition(TeVector3f32(0, 0, zoff));
- _puzzleComputerHydra.setTargetCoordinates(2, 7, 2);
+ _puzzleComputerHydra.setTargetCoordinates(2, 2, 7);
_puzzleComputerHydra.enter();
break;
case 3:
@@ -557,6 +557,7 @@ void AmerzoneGame::update() {
_warpY->setMouseLeftUpForMakers();
}
+ // Note: _orientation*Y* is rotation around *X* axis, and vice-versa.
const TeQuaternion rot = TeQuaternion::fromEulerDegrees(TeVector3f32(_orientationY, _orientationX, 0));
if (_warpX)
@@ -580,6 +581,8 @@ bool AmerzoneGame::onVideoFinished() {
TeSpriteLayout *video = _inGameGui.spriteLayoutChecked("video");
Common::String vidPath = video->_tiledSurfacePtr->loadedPath();
video->setVisible(false);
+ video->_tiledSurfacePtr->unload();
+ video->_tiledSurfacePtr->setLoadedPath("");
Application *app = g_engine->getApplication();
_videoMusic.stop();
if (app->musicOn())
Commit: 89fb1c802a9a28759e24362f199552a04043a2bf
https://github.com/scummvm/scummvm/commit/89fb1c802a9a28759e24362f199552a04043a2bf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00
Commit Message:
TETRAEDGE: Add video path workarounds for Amerzone
Changed paths:
engines/tetraedge/game/lua_binds.cpp
diff --git a/engines/tetraedge/game/lua_binds.cpp b/engines/tetraedge/game/lua_binds.cpp
index 9fbacffcb9a..31664f8286d 100644
--- a/engines/tetraedge/game/lua_binds.cpp
+++ b/engines/tetraedge/game/lua_binds.cpp
@@ -79,10 +79,20 @@ static int tolua_ExportedFunctions_LoadObjectMaterials01(lua_State *L) {
return tolua_ExportedFunctions_LoadObjectMaterials00(L);
}
-static void PlayMovie(const Common::String &vidpath, const Common::String &musicpath) {
+static void PlayMovie(Common::String vidpath, Common::String musicpath) {
Application *app = g_engine->getApplication();
app->mouseCursorLayout().load(app->defaultCursor());
Game *game = g_engine->getGame();
+
+ // WORKAROUND: Fix some broken paths in Amerzone
+ if (musicpath == "Videos/sc19.ogg")
+ musicpath = "Videos/019.ogg";
+ if (vidpath == "Videos/sc18.ogv") {
+ // Need the correct path for callback, call this first.
+ game->playMovie(vidpath, musicpath);
+ vidpath = "Videos/I_018_P2_001.ogv";
+ }
+
game->playMovie(vidpath, musicpath);
}
Commit: e10bf501d5f3b06888d3c19eae8cdf536dbfd91f
https://github.com/scummvm/scummvm/commit/e10bf501d5f3b06888d3c19eae8cdf536dbfd91f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:27+09:00
Commit Message:
TETRAEDGE: Allow closing game dialogs with escape
This is not ideal behavior but can help work around game bugs.
Changed paths:
engines/tetraedge/game/game.cpp
engines/tetraedge/game/game.h
engines/tetraedge/tetraedge.cpp
engines/tetraedge/tetraedge.h
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index 32c7aab85df..fbf633d052f 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -81,6 +81,12 @@ void Game::addNoScale2Child(TeLayout *layout) {
}
}
+void Game::closeDialogs() {
+ _documentsBrowser.hideDocument();
+ _documentsBrowser.leave();
+ _inventory.leave();
+}
+
/*static*/
TeI3DObject2 *Game::findLayoutByName(TeLayout *parent, const Common::String &name) {
// Seems like this is never used?
@@ -169,7 +175,6 @@ bool Game::onAnswered(const Common::String &val) {
return false;
}
-
bool Game::onInventoryButtonValidated() {
_inventoryMenu.enter();
return false;
@@ -335,6 +340,9 @@ bool Game::playMovie(const Common::String &vidPath, const Common::String &musicP
return true;
} else {
warning("Failed to load movie %s", vidPath.c_str());
+ // Ensure the correct finished event gets called anyway.
+ videoSpriteLayout->_tiledSurfacePtr->setLoadedPath(vidPath);
+ onVideoFinished();
return false;
}
}
@@ -472,7 +480,12 @@ Common::Error Game::syncGame(Common::Serializer &s) {
// the inventory item count. We use a large version number which would never
// be the inventory count.
//
- if (!s.syncVersion(1000))
+ // Version history:
+ // 1000 - original sybeira 1/2 data
+ // 1001 - added document browser information for Amerzone, currently unused
+ // in syberia but synced anyway for simplicity.
+ //
+ if (!s.syncVersion(1001))
error("Save game version too new: %d", s.getVersion());
if (s.getVersion() < 1000) {
@@ -482,6 +495,9 @@ Common::Error Game::syncGame(Common::Serializer &s) {
inventory().syncState(s);
}
+ if (s.getVersion() > 1000)
+ documentsBrowser().syncState(s);
+
if (!g_engine->gameIsAmerzone())
inventory().cellphone()->syncState(s);
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 24c94cad39b..4aff95024f0 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -61,6 +61,8 @@ public:
virtual bool changeWarp(const Common::String &zone, const Common::String &scene, bool fadeFlag) = 0;
+ void closeDialogs();
+
virtual void draw() = 0;
virtual void enter() = 0; // will load game if _loadName is set.
// Note: game uses ILayouts here..
diff --git a/engines/tetraedge/tetraedge.cpp b/engines/tetraedge/tetraedge.cpp
index 5762e13c6c3..f2942a55d41 100644
--- a/engines/tetraedge/tetraedge.cpp
+++ b/engines/tetraedge/tetraedge.cpp
@@ -200,6 +200,12 @@ Common::Error TetraedgeEngine::loadGameStream(Common::SeekableReadStream *stream
return retval;
}
+void TetraedgeEngine::closeGameDialogs() {
+ if (!_game)
+ return;
+ _game->closeDialogs();
+}
+
void TetraedgeEngine::configureSearchPaths() {
const Common::FSNode gameDataDir(ConfMan.get("path"));
if (_gameDescription->platform != Common::kPlatformIOS)
@@ -215,11 +221,19 @@ int TetraedgeEngine::getDefaultScreenHeight() const {
}
bool TetraedgeEngine::onKeyUp(const Common::KeyState &state) {
- if (state.keycode == Common::KEYCODE_l) {
+ switch (state.keycode) {
+ case Common::KEYCODE_l:
if (loadGameDialog())
_game->initLoadedBackupData();
- } else if (state.keycode == Common::KEYCODE_s) {
+ break;
+ case Common::KEYCODE_s:
saveGameDialog();
+ break;
+ case Common::KEYCODE_ESCAPE:
+ closeGameDialogs();
+ break;
+ default:
+ break;
}
return false;
diff --git a/engines/tetraedge/tetraedge.h b/engines/tetraedge/tetraedge.h
index fa85516957f..012982d9497 100644
--- a/engines/tetraedge/tetraedge.h
+++ b/engines/tetraedge/tetraedge.h
@@ -81,6 +81,8 @@ public:
uint32 getFeatures() const;
+ void closeGameDialogs();
+
/**
* Returns the game Id
*/
More information about the Scummvm-git-logs
mailing list