[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