[Scummvm-git-logs] scummvm master -> 0c75730dad4b20999cee6161825d7d487979ffa4
mduggan
noreply at scummvm.org
Mon Feb 6 08:02:01 UTC 2023
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c124c554e3 TETRAEDGE: Add some initial features needed for Syberia 2
3e342beae9 TETRAEDGE: Fix small coverity-identified issues.
0c75730dad TETRAEDGE: Pre-scale color values for TinyGL
Commit: c124c554e3bb9335717a697b0a40bb7df933ad12
https://github.com/scummvm/scummvm/commit/c124c554e3bb9335717a697b0a40bb7df933ad12
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-02-06T16:55:30+09:00
Commit Message:
TETRAEDGE: Add some initial features needed for Syberia 2
Changed paths:
engines/tetraedge/game/character.cpp
engines/tetraedge/game/character.h
engines/tetraedge/game/game.cpp
engines/tetraedge/game/game.h
engines/tetraedge/game/lua_binds.cpp
engines/tetraedge/game/object3d.cpp
engines/tetraedge/game/object3d.h
engines/tetraedge/te/te_core.cpp
diff --git a/engines/tetraedge/game/character.cpp b/engines/tetraedge/game/character.cpp
index 467e48e42a6..09a7d1181d4 100644
--- a/engines/tetraedge/game/character.cpp
+++ b/engines/tetraedge/game/character.cpp
@@ -52,6 +52,7 @@ void Character::CharacterSettings::clear() {
_defaultEyes.clear();
_defaultMouth.clear();
_defaultBody.clear();
+ _invertNormals = false;
}
void Character::WalkSettings::clear() {
diff --git a/engines/tetraedge/game/character.h b/engines/tetraedge/game/character.h
index 7d7014045c0..a5065199677 100644
--- a/engines/tetraedge/game/character.h
+++ b/engines/tetraedge/game/character.h
@@ -70,6 +70,8 @@ public:
Common::String _defaultMouth; // Note: Engine supports more, but in practice only one ever used.
Common::String _defaultBody; // Note: Engine supports more, but in practice only one ever used.
+ bool _invertNormals;
+
void clear();
};
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index dce51c5f036..ff85979c44f 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -1293,7 +1293,7 @@ void Game::pauseMovie() {
sprite->pause();
}
-void Game::playMovie(const Common::String &vidPath, const Common::String &musicPath) {
+bool Game::playMovie(const Common::String &vidPath, const Common::String &musicPath) {
Application *app = g_engine->getApplication();
app->captureFade();
TeButtonLayout *videoBackgroundButton = _inGameGui.buttonLayoutChecked("videoBackgroundButton");
@@ -1312,6 +1312,7 @@ void Game::playMovie(const Common::String &vidPath, const Common::String &musicP
_running = false;
TeSpriteLayout *videoSpriteLayout = _inGameGui.spriteLayoutChecked("video");
+ // TODO: check return value here.
videoSpriteLayout->load(vidPath);
videoSpriteLayout->setVisible(true);
music.play();
@@ -1324,6 +1325,7 @@ void Game::playMovie(const Common::String &vidPath, const Common::String &musicP
}
app->fade();
+ return true;
}
void Game::playRandomSound(const Common::String &name) {
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 97546d61949..b035c4f0930 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -145,7 +145,7 @@ public:
void pauseMovie();
void pauseSounds() {}; // does nothing?
- void playMovie(const Common::String &vidPath, const Common::String &musicPath);
+ bool playMovie(const Common::String &vidPath, const Common::String &musicPath);
void playRandomSound(const Common::String &name);
void playSound(const Common::String &name, int param_2, float volume);
void removeNoScale2Child(TeLayout *layout);
diff --git a/engines/tetraedge/game/lua_binds.cpp b/engines/tetraedge/game/lua_binds.cpp
index 0a1483145f0..e73ba461535 100644
--- a/engines/tetraedge/game/lua_binds.cpp
+++ b/engines/tetraedge/game/lua_binds.cpp
@@ -82,13 +82,32 @@ static void PlayMovie(const Common::String &vidpath, const Common::String &music
game->playMovie(vidpath, musicpath);
}
+static void PlayMovie(const Common::String &vidpath, const Common::String &musicpath, double f) {
+ Game *game = g_engine->getGame();
+ warning("TODO: handle float value in PlayMovie for Syberia 2");
+
+ if (!game->playMovie(vidpath, musicpath)) {
+ warning("[PlayMovie] Movie \"%s\" doesn\'t exist.", vidpath.c_str());
+ }
+ // TODO: call Game::addMoviePlayed
+}
+
+
static int tolua_ExportedFunctions_PlayMovie00(lua_State *L) {
tolua_Error err;
+ // Syberia 1 has 2 string args, Syberia 2 adds a double arg.
if (tolua_isstring(L, 1, 0, &err) && tolua_isstring(L, 2, 0, &err) && tolua_isnoobj(L, 3, &err)) {
Common::String s1(tolua_tostring(L, 1, nullptr));
Common::String s2(tolua_tostring(L, 2, nullptr));
PlayMovie(s1, s2);
return 0;
+ } else if (tolua_isstring(L, 1, 0, &err) && tolua_isstring(L, 2, 0, &err)
+ && tolua_isnumber(L, 3, 1, &err) && tolua_isnoobj(L, 4, &err)) {
+ Common::String s1(tolua_tostring(L, 1, nullptr));
+ Common::String s2(tolua_tostring(L, 2, nullptr));
+ double d1 = tolua_tonumber(L, 3, 1.0);
+ PlayMovie(s1, s2, d1);
+ return 0;
}
error("#ferror in function 'PlayMovie': %d %d %s", err.index, err.array, err.type);
}
@@ -2038,6 +2057,45 @@ static int tolua_ExportedFunctions_MoveCharacterPlayerTo00(lua_State *L) {
error("#ferror in function 'MoveCharacterPlayerTo': %d %d %s", err.index, err.array, err.type);
}
+static void EnableRunMode(bool val) {
+ warning("TODO: EnableRunMode %s", val ? "true" : "false");
+}
+
+static int tolua_ExportedFunctions_EnableRunMode00(lua_State *L) {
+ tolua_Error err;
+ if (tolua_isboolean(L, 1, 0, &err) && tolua_isnoobj(L, 2, &err)) {
+ bool b1 = tolua_toboolean(L, 1, 0);
+ EnableRunMode(b1);
+ }
+ error("#ferror in function 'EnableRunMode': %d %d %s", err.index, err.array, err.type);
+}
+
+static void SetModelPlayer(const Common::String &name) {
+ Game *game = g_engine->getGame();
+ Character *character = game->scene().character(name);
+
+ if (!character) {
+ warning("[SetModelPlayer] Character not found %s", name.c_str());
+ return;
+ }
+
+ if (character->_model->name() != name) {
+ game->unloadPlayerCharacter(character->_model->name());
+ if (!game->loadPlayerCharacter(name)) {
+ warning("[SetModelPlayer] Can't load player character");
+ }
+ character->_model->setVisible(true);
+ }
+}
+
+static int tolua_ExportedFunctions_SetModelPlayer00(lua_State *L) {
+ tolua_Error err;
+ if (tolua_isstring(L, 1, 0, &err) && tolua_isnoobj(L, 2, &err)) {
+ Common::String s1(tolua_tostring(L, 1, 0));
+ SetModelPlayer(s1);
+ }
+ error("#ferror in function 'SetModelPlayer': %d %d %s", err.index, err.array, err.type);
+}
// ////////////////////////////////////////////////////////////////////////
@@ -2189,6 +2247,10 @@ void LuaOpenBinds(lua_State *L) {
tolua_function(L, "AddUnrecalAnim", tolua_ExportedFunctions_AddUnrecalAnim00);
tolua_function(L, "UnlockArtwork", tolua_ExportedFunctions_UnlockArtwork00);
+ // Syberia 2 specific functions.
+ tolua_function(L, "EnableRunMode", tolua_ExportedFunctions_EnableRunMode00);
+ tolua_function(L, "SetModelPlayer", tolua_ExportedFunctions_SetModelPlayer00);
+
tolua_endmodule(L);
}
diff --git a/engines/tetraedge/game/object3d.cpp b/engines/tetraedge/game/object3d.cpp
index c4b3e51809a..95ba54dbf17 100644
--- a/engines/tetraedge/game/object3d.cpp
+++ b/engines/tetraedge/game/object3d.cpp
@@ -82,6 +82,8 @@ void Object3D::ObjectSettings::clear() {
_name.clear();
_modelFileName.clear();
_defaultScale = TeVector3f32();
+ _originOffset = TeVector3f32();
+ _invertNormals = false;
}
diff --git a/engines/tetraedge/game/object3d.h b/engines/tetraedge/game/object3d.h
index bae3d0e36cb..1cf9ef28343 100644
--- a/engines/tetraedge/game/object3d.h
+++ b/engines/tetraedge/game/object3d.h
@@ -37,6 +37,8 @@ public:
Common::String _name;
Common::String _modelFileName;
TeVector3f32 _defaultScale;
+ TeVector3f32 _originOffset;
+ bool _invertNormals;
void clear();
};
diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 94a480e5564..012b8d3fb62 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -148,6 +148,7 @@ Common::FSNode TeCore::findFile(const Common::Path &path) {
"PC-MacOSX",
"PC-PS3-Android-MacOSX",
"PC-MacOSX-Android-iPhone-iPad",
+ "PC-Android-MacOSX-iPhone-iPad",
"PC-MacOSX-Xbox360-PS3",
"PC-MacOSX-PS3-Xbox360",
"PC-MacOSX-Xbox360-PS3/PC-MacOSX",
Commit: 3e342beae9c2727a130970e82c8432783d5def1f
https://github.com/scummvm/scummvm/commit/3e342beae9c2727a130970e82c8432783d5def1f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-02-06T16:55:30+09:00
Commit Message:
TETRAEDGE: Fix small coverity-identified issues.
Changed paths:
engines/tetraedge/game/dialog2.cpp
engines/tetraedge/game/game.cpp
engines/tetraedge/te/te_curve_anim2.h
engines/tetraedge/te/te_free_move_zone.cpp
diff --git a/engines/tetraedge/game/dialog2.cpp b/engines/tetraedge/game/dialog2.cpp
index dd0e0f9a0d3..2d762d73091 100644
--- a/engines/tetraedge/game/dialog2.cpp
+++ b/engines/tetraedge/game/dialog2.cpp
@@ -137,8 +137,8 @@ bool Dialog2::onAnimationDownFinished() {
bool Dialog2::onAnimationUpFinished() {
// Seems like this just prints a debug value??
- TeButtonLayout *dialogButton = _gui.buttonLayout("dialog");
- dialogButton->anchor();
+ //TeButtonLayout *dialogButton = _gui.buttonLayout("dialog");
+ //dialogButton->anchor();
return false;
}
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index ff85979c44f..905c540563d 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -840,6 +840,7 @@ bool Game::loadCharacter(const Common::String &name) {
result = _scene.loadCharacter(name);
if (result) {
character = _scene.character(name);
+ assert(character);
character->_onCharacterAnimFinishedSignal.remove(this, &Game::onCharacterAnimationFinished);
character->_onCharacterAnimFinishedSignal.add(this, &Game::onCharacterAnimationFinished);
character->onFinished().add(this, &Game::onDisplacementFinished);
@@ -1083,10 +1084,10 @@ bool Game::onMouseClick(const Common::Point &pt) {
_lastCharMoveMousePos = TeVector2s32();
}
- if (app->isLockCursor() || _movePlayerCharacterDisabled)
+ Character *character = _scene._character;
+ if (app->isLockCursor() || _movePlayerCharacterDisabled || !character)
return false;
- Character *character = _scene._character;
const Common::String &charAnim = character->curAnimName();
if (charAnim == character->characterSettings()._idleAnimFileName
diff --git a/engines/tetraedge/te/te_curve_anim2.h b/engines/tetraedge/te/te_curve_anim2.h
index c0ef1f1e512..062e17bc182 100644
--- a/engines/tetraedge/te/te_curve_anim2.h
+++ b/engines/tetraedge/te/te_curve_anim2.h
@@ -37,7 +37,7 @@ class TeCurveAnim2 : public TeAnimation {
public:
typedef void(T::*TMethod)(const S &);
- TeCurveAnim2() : _callbackObj(nullptr), _duration(0), _lastUpdateTime(0) {}
+ TeCurveAnim2() : _callbackObj(nullptr), _callbackMethod(nullptr), _duration(0), _lastUpdateTime(0) {}
virtual ~TeCurveAnim2() {}
void setCurve(const Common::Array<float> &curve) {
diff --git a/engines/tetraedge/te/te_free_move_zone.cpp b/engines/tetraedge/te/te_free_move_zone.cpp
index 3c0e2f9acf1..bfa55b8d9a6 100644
--- a/engines/tetraedge/te/te_free_move_zone.cpp
+++ b/engines/tetraedge/te/te_free_move_zone.cpp
@@ -34,7 +34,7 @@ namespace Tetraedge {
class TeFreeMoveZoneGraph : micropather::Graph {
friend class TeFreeMoveZone;
- TeFreeMoveZoneGraph() : _owner(nullptr) {}
+ TeFreeMoveZoneGraph() : _owner(nullptr), _bordersDistance(2048.0f) {}
TeVector2s32 _size;
Common::Array<char> _flags;
Commit: 0c75730dad4b20999cee6161825d7d487979ffa4
https://github.com/scummvm/scummvm/commit/0c75730dad4b20999cee6161825d7d487979ffa4
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-02-06T17:01:19+09:00
Commit Message:
TETRAEDGE: Pre-scale color values for TinyGL
Changed paths:
engines/tetraedge/te/te_renderer_tinygl.cpp
diff --git a/engines/tetraedge/te/te_renderer_tinygl.cpp b/engines/tetraedge/te/te_renderer_tinygl.cpp
index a82b25a1055..055316911d9 100644
--- a/engines/tetraedge/te/te_renderer_tinygl.cpp
+++ b/engines/tetraedge/te/te_renderer_tinygl.cpp
@@ -160,7 +160,13 @@ void TeRendererTinyGL::renderTransparentMeshes() {
tglVertexPointer(3, TGL_FLOAT, sizeof(TeVector3f32), _transparentMeshVertexes.data());
tglNormalPointer(TGL_FLOAT, sizeof(TeVector3f32), _transparentMeshNormals.data());
tglTexCoordPointer(2, TGL_FLOAT, sizeof(TeVector2f32), _transparentMeshCoords.data());
- tglColorPointer(4, TGL_UNSIGNED_BYTE, sizeof(TeColor), _transparentMeshColors.data());
+ // TinyGL doesn't correctly scale BYTE color data, so provide it pre-scaled.
+ Common::Array<float> colorVals(_transparentMeshColors.size() * 4);
+ const byte *coldata = reinterpret_cast<const byte *>(_transparentMeshColors.data());
+ for (unsigned int i = 0; i < colorVals.size(); i++) {
+ colorVals[i] = (float)coldata[i] / 255.0f;
+ }
+ tglColorPointer(4, TGL_FLOAT, sizeof(float) * 4, colorVals.data());
TeMaterial lastMaterial;
TeMatrix4x4 lastMatrix;
More information about the Scummvm-git-logs
mailing list