[Scummvm-git-logs] scummvm master -> 25303384802a189faf55c1960c95958dfe17ee72
mduggan
noreply at scummvm.org
Sat Jan 28 08:13:27 UTC 2023
This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0bfc989d5d TETRAEDGE: Store and restore unlocked artwork
ed10480dc6 TETRAEDGE: Remove outdated comment
8e1753a8df TETRAEDGE: Partly implement original bonus menu
cd1fc938ad TETRAEDGE: Improve types for visualfade.
4cd5989f93 TETRAEDGE: Rename shadow mode enum vals to be meaningful
9f87c6edc9 TETRAEDGE: Use true window size for fade sprite
6ff1723a21 TETRAEDGE: Fix potential crash from filling 3-byte image
2530338480 TETRAEDGE: Fix blending modes so fades keep right colors
Commit: 0bfc989d5d3aa7ecaefcb912f5eabb6456729b77
https://github.com/scummvm/scummvm/commit/0bfc989d5d3aa7ecaefcb912f5eabb6456729b77
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Store and restore unlocked artwork
Changed paths:
engines/tetraedge/game/application.cpp
engines/tetraedge/game/bonus_menu.cpp
engines/tetraedge/game/game.cpp
engines/tetraedge/game/game.h
diff --git a/engines/tetraedge/game/application.cpp b/engines/tetraedge/game/application.cpp
index da6f0aaf372..ccfb4c95a6b 100644
--- a/engines/tetraedge/game/application.cpp
+++ b/engines/tetraedge/game/application.cpp
@@ -286,6 +286,10 @@ void Application::create() {
_splashScreens.enter();
_drawShadows = (ConfMan.get("disable_shadows") != "true");
+
+ // Note: this is not in the original, but seems like a good place to do it..
+ g_engine->getGame()->loadUnlockedArtwork();
+
_created = true;
}
diff --git a/engines/tetraedge/game/bonus_menu.cpp b/engines/tetraedge/game/bonus_menu.cpp
index 4dc9bdfb12c..1788e6801c5 100644
--- a/engines/tetraedge/game/bonus_menu.cpp
+++ b/engines/tetraedge/game/bonus_menu.cpp
@@ -24,6 +24,7 @@
#include "common/textconsole.h"
#include "tetraedge/tetraedge.h"
#include "tetraedge/game/application.h"
+#include "tetraedge/te/te_core.h"
#include "tetraedge/te/te_input_mgr.h"
namespace Tetraedge {
@@ -49,7 +50,18 @@ void BonusMenu::enter(const Common::String &scriptName) {
SaveButton *saveBtn = new SaveButton(btn, btnNoStr);
_saveButtons.push_back(saveBtn);
- // TODO: Finish this.
+ TeVector3f32 mainWinSz = g_engine->getApplication()->getMainWindow().size();
+ if (g_engine->getCore()->fileFlagSystemFlag("definition") == "SD")
+ mainWinSz = mainWinSz / 3.0f;
+ else
+ mainWinSz = mainWinSz / 4.0f;
+ mainWinSz.z() = 1.0f;
+ saveBtn->setSize(mainWinSz);
+ for (Te3DObject2 *child : saveBtn->childList()) {
+ child->setSize(mainWinSz);
+ }
+
+ // TODO: Finish this (lines 170-186)
btnNo++;
}
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index 30d6273a6c9..e99ce276f77 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -105,6 +105,8 @@ bool Game::addAnimToSet(const Common::String &anim) {
void Game::addArtworkUnlocked(const Common::String &name, bool notify) {
if (_unlockedArtwork.contains(name))
return;
+ Common::String configName = Common::String::format("artwork_%s", name.c_str());
+ ConfMan.setBool(configName, true);
_unlockedArtwork[name] = true;
if (notify) {
_notifier.push("BONUS!", "Inventory/Objects/VPapierCrayon.png");
@@ -806,6 +808,15 @@ void Game::loadBackup(const Common::String &path) {
}
}
+void Game::loadUnlockedArtwork() {
+ Common::ConfigManager::Domain *domain = ConfMan.getActiveDomain();
+ for (auto &val : *domain) {
+ if (val._key.substr(0, 8) == "artwork_") {
+ _unlockedArtwork[val._key.substr(8)] = true;
+ }
+ }
+}
+
bool Game::loadCharacter(const Common::String &name) {
bool result = true;
Character *character = _scene.character(name);
@@ -1497,7 +1508,11 @@ void Game::stopSound(const Common::String &name) {
Common::Error Game::syncGame(Common::Serializer &s) {
Application *app = g_engine->getApplication();
- s.setVersion(1);
+
+ // TODO: should be an error before testing.
+ //if (!s.syncVersion(1))
+ // error("Save game version too new: %d", s.getVersion());
+
inventory().syncState(s);
inventory().cellphone()->syncState(s);
// dialog2().syncState(s); // game saves this here, but doesn't actually save anything
@@ -1521,6 +1536,7 @@ Common::Error Game::syncGame(Common::Serializer &s) {
s.syncString(_scene._character->walkModeStr());
s.syncAsByte(_firstInventory);
s.syncAsByte(app->tutoActivated());
+
app->showLoadingIcon(false);
return Common::kNoError;
}
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 9674923b5e5..8c4f8f353e4 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -123,6 +123,9 @@ public:
bool loadPlayerCharacter(const Common::String &name);
bool loadScene(const Common::String &name);
+ // Not in original. Load unlocked artwork from ScummVM config.
+ void loadUnlockedArtwork();
+
bool onAnswered(const Common::String &val);
bool onCallNumber(Common::String val);
bool onCharacterAnimationFinished(const Common::String &val);
Commit: ed10480dc6b1d343105e3f22289e9d47964f3e8b
https://github.com/scummvm/scummvm/commit/ed10480dc6b1d343105e3f22289e9d47964f3e8b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Remove outdated comment
Changed paths:
engines/tetraedge/te/te_theora.cpp
diff --git a/engines/tetraedge/te/te_theora.cpp b/engines/tetraedge/te/te_theora.cpp
index 2096d84f71e..0d456e8c0ec 100644
--- a/engines/tetraedge/te/te_theora.cpp
+++ b/engines/tetraedge/te/te_theora.cpp
@@ -104,7 +104,6 @@ bool TeTheora::update(unsigned long i, TeImage &imgout) {
load(_path);
}
- // TODO: Should this seek to frame i? Currently just continues.
const Graphics::Surface *frame = nullptr;
while (_decoder->getCurFrame() <= (int)i && !_decoder->endOfVideo())
frame = _decoder->decodeNextFrame();
Commit: 8e1753a8df52397a2ee4d28c44af33fc6e13e951
https://github.com/scummvm/scummvm/commit/8e1753a8df52397a2ee4d28c44af33fc6e13e951
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Partly implement original bonus menu
Changed paths:
engines/tetraedge/game/bonus_menu.cpp
engines/tetraedge/game/game.h
engines/tetraedge/te/te_variant.cpp
diff --git a/engines/tetraedge/game/bonus_menu.cpp b/engines/tetraedge/game/bonus_menu.cpp
index 1788e6801c5..a5b6ef92b1b 100644
--- a/engines/tetraedge/game/bonus_menu.cpp
+++ b/engines/tetraedge/game/bonus_menu.cpp
@@ -24,6 +24,7 @@
#include "common/textconsole.h"
#include "tetraedge/tetraedge.h"
#include "tetraedge/game/application.h"
+#include "tetraedge/game/game.h"
#include "tetraedge/te/te_core.h"
#include "tetraedge/te/te_input_mgr.h"
@@ -61,7 +62,10 @@ void BonusMenu::enter(const Common::String &scriptName) {
child->setSize(mainWinSz);
}
- // TODO: Finish this (lines 170-186)
+ if (btn->childCount() <= 4)
+ error("expected save button to have >4 children");
+ const Common::String &artName = btn->child(4)->name();
+ btn->setEnable(g_engine->getGame()->unlockedArtwork().getValOrDefault(artName, false));
btnNo++;
}
@@ -95,7 +99,7 @@ void BonusMenu::enter(const Common::String &scriptName) {
if (rightBtn)
rightBtn->onMouseClickValidated().add(this, &BonusMenu::onRightButton);
- // TODO: more stuff here with "text" values (also finish loop above)
+ // TODO: more stuff here with "text" values
warning("TODO: Finish BonusMenu::enter(%s)", scriptName.c_str());
TeButtonLayout *pictureBtn = buttonLayout("fullScreenPictureButton");
@@ -148,7 +152,17 @@ bool BonusMenu::onMouseMove(const Common::Point &pt) {
if (slideLayout->state() == TeButtonLayout::BUTTON_STATE_DOWN) {
TeCurveAnim2<TeLayout, TeVector3f32> *slideAnim = layoutPositionLinearAnimation("slideAnimation");
if (!slideAnim->_runTimer.running()) {
- warning("TODO: implement BonusMenu::onMouseMove");
+ const Common::Point mousePos = g_engine->getInputMgr()->lastMousePos();
+ const TeVector3f32 slotsSize = layoutChecked("slots")->size();
+
+ float slideAmount = (mousePos.x - _slideBtnStartMousePos._x) / slotsSize.x();
+ if (slideAmount <= -0.1) {
+ onRightButton();
+ buttonLayoutChecked("slideButton")->setClickPassThrough(false);
+ } else if (slideAmount > 0.1){
+ onLeftButton();
+ buttonLayoutChecked("slideButton")->setClickPassThrough(false);
+ }
}
}
@@ -213,7 +227,7 @@ bool BonusMenu::onSlideButtonDown() {
BonusMenu::SaveButton::SaveButton(TeButtonLayout *btn, const Common::String &name) {
setName(name);
btn->setEnable(true);
- // TODO: Add child something here?
+ addChild(btn);
btn->onMouseClickValidated().add(this, &BonusMenu::SaveButton::onLoadSave);
}
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 8c4f8f353e4..4eb7c76361e 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -202,6 +202,7 @@ public:
Common::RandomSource &randomSource() { return _randomSource; }
void setLoadName(const Common::String &loadName) { _loadName = loadName; }
bool hasLoadName() const { return !_loadName.empty(); }
+ const Common::HashMap<Common::String, bool> unlockedArtwork() const { return _unlockedArtwork; }
private:
bool _luaShowOwnerError;
diff --git a/engines/tetraedge/te/te_variant.cpp b/engines/tetraedge/te/te_variant.cpp
index f8367daa036..ba113f33652 100644
--- a/engines/tetraedge/te/te_variant.cpp
+++ b/engines/tetraedge/te/te_variant.cpp
@@ -29,7 +29,8 @@ TeVariant::TeVariant() : _type(TypeNone), _data(0) {
TeVariant::TeVariant(bool val) : _type(TypeBoolean), _data(val) {
}
-TeVariant::TeVariant(double val) : _type(TypeFloat64), _data((uint64)val) {
+TeVariant::TeVariant(double val) : _type(TypeFloat64) {
+ *(double *)(&_data) = val;
}
TeVariant::TeVariant(const Common::String &val) : _type(TypeString), _data(0), _strVal(val) {
@@ -57,7 +58,7 @@ float TeVariant::toFloat32(bool *success) const {
if (_type == TypeFloat32) {
if (success)
*success = true;
- return *(float *)_data;
+ return *(float *)(&_data);
} else {
if (success)
*success = false;
@@ -70,7 +71,7 @@ double TeVariant::toFloat64(bool *success) const {
if (_type == TypeFloat64) {
if (success)
*success = true;
- return *(double *)_data;
+ return *(double *)(&_data);
} else {
if (success)
*success = false;
@@ -83,7 +84,7 @@ int32 TeVariant::toSigned32(bool *success) const {
if (_type == TypeInt32) {
if (success)
*success = true;
- return *(int32 *)_data;
+ return *(int32 *)(&_data);
} else {
if (success)
*success = false;
@@ -96,7 +97,7 @@ int64 TeVariant::toSigned64(bool *success) const {
if (_type == TypeInt64) {
if (success)
*success = true;
- return *(int64 *)_data;
+ return *(int64 *)(&_data);
} else {
if (success)
*success = false;
@@ -122,7 +123,7 @@ int32 TeVariant::toUnsigned32(bool *success) const {
if (_type == TypeUInt32) {
if (success)
*success = true;
- return *(uint32 *)_data;
+ return *(uint32 *)(&_data);
} else {
if (success)
*success = false;
@@ -135,7 +136,7 @@ int64 TeVariant::toUnsigned64(bool *success) const {
if (_type == TypeUInt64) {
if (success)
*success = true;
- return *(uint64 *)_data;
+ return *(uint64 *)(&_data);
} else {
if (success)
*success = false;
Commit: cd1fc938adeb5172fe46d4cbd22a5e77bae9a709
https://github.com/scummvm/scummvm/commit/cd1fc938adeb5172fe46d4cbd22a5e77bae9a709
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Improve types for visualfade.
Changed paths:
engines/tetraedge/te/te_visual_fade.cpp
engines/tetraedge/te/te_visual_fade.h
diff --git a/engines/tetraedge/te/te_visual_fade.cpp b/engines/tetraedge/te/te_visual_fade.cpp
index 3eaf7f30dc2..7d355755640 100644
--- a/engines/tetraedge/te/te_visual_fade.cpp
+++ b/engines/tetraedge/te/te_visual_fade.cpp
@@ -43,7 +43,7 @@ void TeVisualFade::animateBlackFade() {
_fadeCurveAnim.setCurve(curve);
_fadeCurveAnim._duration = 2000.0;
_fadeCurveAnim._callbackObj = &_fadeCaptureSprite;
- _fadeCurveAnim._callbackMethod = &Te3DObject2::setColor;
+ _fadeCurveAnim._callbackMethod = &TeSpriteLayout::setColor;
_fadeCurveAnim.play();
_blackFadeSprite.setVisible(true);
@@ -53,7 +53,7 @@ void TeVisualFade::animateBlackFade() {
_blackFadeCurveAnim.setCurve(curve);
_blackFadeCurveAnim._duration = 2000.0;
_blackFadeCurveAnim._callbackObj = &_blackFadeSprite;
- _blackFadeCurveAnim._callbackMethod = &Te3DObject2::setColor;
+ _blackFadeCurveAnim._callbackMethod = &TeSpriteLayout::setColor;
_blackFadeCurveAnim.play();
}
@@ -69,7 +69,7 @@ void TeVisualFade::animateFade() {
_fadeCurveAnim.setCurve(curve);
_fadeCurveAnim._duration = 400.0;
_fadeCurveAnim._callbackObj = &_fadeCaptureSprite;
- _fadeCurveAnim._callbackMethod = &Te3DObject2::setColor;
+ _fadeCurveAnim._callbackMethod = &TeSpriteLayout::setColor;
_fadeCurveAnim.play();
}
diff --git a/engines/tetraedge/te/te_visual_fade.h b/engines/tetraedge/te/te_visual_fade.h
index 6a9f363b610..f99a6ded32c 100644
--- a/engines/tetraedge/te/te_visual_fade.h
+++ b/engines/tetraedge/te/te_visual_fade.h
@@ -48,15 +48,15 @@ public:
bool fading() const { return _fadeCurveAnim._runTimer.running(); }
bool blackFading() const { return _blackFadeCurveAnim._runTimer.running(); }
- TeCurveAnim2<Te3DObject2, TeColor> blackFadeCurveAnim() { return _blackFadeCurveAnim; }
+ TeCurveAnim2<TeSpriteLayout, TeColor> blackFadeCurveAnim() { return _blackFadeCurveAnim; }
TeIntrusivePtr<Te3DTexture> texture() { return _texturePtr; }
private:
TeIntrusivePtr<Te3DTexture> _texturePtr;
- TeCurveAnim2<Te3DObject2, TeColor> _fadeCurveAnim;
- TeCurveAnim2<Te3DObject2, TeColor> _blackFadeCurveAnim;
+ TeCurveAnim2<TeSpriteLayout, TeColor> _fadeCurveAnim;
+ TeCurveAnim2<TeSpriteLayout, TeColor> _blackFadeCurveAnim;
TeImage _image;
};
Commit: 4cd5989f93b43eedc879bc36c961ea78b6641231
https://github.com/scummvm/scummvm/commit/4cd5989f93b43eedc879bc36c961ea78b6641231
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Rename shadow mode enum vals to be meaningful
Changed paths:
engines/tetraedge/game/application.cpp
engines/tetraedge/te/te_mesh_opengl.cpp
engines/tetraedge/te/te_mesh_tinygl.cpp
engines/tetraedge/te/te_renderer.cpp
engines/tetraedge/te/te_renderer.h
engines/tetraedge/te/te_renderer_opengl.cpp
engines/tetraedge/te/te_renderer_tinygl.cpp
diff --git a/engines/tetraedge/game/application.cpp b/engines/tetraedge/game/application.cpp
index ccfb4c95a6b..9de4362532f 100644
--- a/engines/tetraedge/game/application.cpp
+++ b/engines/tetraedge/game/application.cpp
@@ -432,9 +432,9 @@ void Application::performRender() {
if (_drawShadows && game->running() && game->scene()._character
&& game->scene().shadowLightNo() != -1
&& game->scene().charactersShadow() != nullptr) {
- renderer->shadowMode(TeRenderer::ShadowMode1);
+ renderer->shadowMode(TeRenderer::ShadowModeCreating);
game->scene().charactersShadow()->createTexture(&game->scene());
- renderer->shadowMode(TeRenderer::ShadowMode0);
+ renderer->shadowMode(TeRenderer::ShadowModeNone);
}
drawBack();
@@ -448,9 +448,9 @@ void Application::performRender() {
TeIntrusivePtr<TeCamera> currentCamera = game->scene().currentCamera();
if (currentCamera) {
currentCamera->apply();
- renderer->shadowMode(TeRenderer::ShadowMode2);
+ renderer->shadowMode(TeRenderer::ShadowModeDrawing);
game->scene().charactersShadow()->draw(&game->scene());
- renderer->shadowMode(TeRenderer::ShadowMode0);
+ renderer->shadowMode(TeRenderer::ShadowModeNone);
}
}
game->draw();
diff --git a/engines/tetraedge/te/te_mesh_opengl.cpp b/engines/tetraedge/te/te_mesh_opengl.cpp
index 97925714e77..e1646a3e653 100644
--- a/engines/tetraedge/te/te_mesh_opengl.cpp
+++ b/engines/tetraedge/te/te_mesh_opengl.cpp
@@ -56,7 +56,7 @@ void TeMeshOpenGL::draw() {
debug(" worldRot %s", worldRotation().dump().c_str());
*/
- if (renderer->shadowMode() != TeRenderer::ShadowMode1) {
+ if (renderer->shadowMode() != TeRenderer::ShadowModeCreating) {
if (_faceCounts.empty()) {
if (hasAlpha(0) && _shouldDraw) {
renderer->addTransparentMesh(*this, 0, 0, 0);
@@ -90,15 +90,15 @@ void TeMeshOpenGL::draw() {
if (!_colors.empty())
glEnableClientState(GL_COLOR_ARRAY);
- glVertexPointer(3, GL_FLOAT, 12, verticies.data());
+ glVertexPointer(3, GL_FLOAT, sizeof(TeVector3f32), verticies.data());
if (!normals.empty())
- glNormalPointer(GL_FLOAT, 12, normals.data());
+ glNormalPointer(GL_FLOAT, sizeof(TeVector3f32), normals.data());
- if (!_uvs.empty() && renderer->shadowMode() != TeRenderer::ShadowMode2)
- glTexCoordPointer(2, GL_FLOAT, 8, _uvs.data());
+ if (!_uvs.empty() && renderer->shadowMode() != TeRenderer::ShadowModeDrawing)
+ glTexCoordPointer(2, GL_FLOAT, sizeof(TeVector2f32), _uvs.data());
if (!_colors.empty())
- glColorPointer(4, GL_UNSIGNED_BYTE, 4, _colors.data());
+ glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(TeColor), _colors.data());
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, _gltexEnvMode);
if (renderer->scissorEnabled()) {
@@ -125,7 +125,7 @@ void TeMeshOpenGL::draw() {
for (uint i = 0; i < _materials.size(); i++) {
if (!_faceCounts[i])
continue;
- if (!hasAlpha(i) || renderer->shadowMode() == TeRenderer::ShadowMode1 || !_shouldDraw) {
+ if (!hasAlpha(i) || renderer->shadowMode() == TeRenderer::ShadowModeCreating || !_shouldDraw) {
renderer->applyMaterial(_materials[i]);
glDrawElements(_glMeshMode, _faceCounts[i] * 3, GL_UNSIGNED_SHORT, _indexes.data() + totalFaceCount * 3);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
diff --git a/engines/tetraedge/te/te_mesh_tinygl.cpp b/engines/tetraedge/te/te_mesh_tinygl.cpp
index acedd32db39..3f9db8ea0ca 100644
--- a/engines/tetraedge/te/te_mesh_tinygl.cpp
+++ b/engines/tetraedge/te/te_mesh_tinygl.cpp
@@ -55,7 +55,7 @@ void TeMeshTinyGL::draw() {
debug(" worldRot %s", worldRotation().dump().c_str());
*/
- if (renderer->shadowMode() != TeRenderer::ShadowMode1) {
+ if (renderer->shadowMode() != TeRenderer::ShadowModeCreating) {
if (_faceCounts.empty()) {
if (hasAlpha(0) && _shouldDraw) {
renderer->addTransparentMesh(*this, 0, 0, 0);
@@ -89,15 +89,15 @@ void TeMeshTinyGL::draw() {
if (!_colors.empty())
tglEnableClientState(TGL_COLOR_ARRAY);
- tglVertexPointer(3, TGL_FLOAT, 12, verticies.data());
+ tglVertexPointer(3, TGL_FLOAT, sizeof(TeVector3f32), verticies.data());
if (!normals.empty())
- tglNormalPointer(TGL_FLOAT, 12, normals.data());
+ tglNormalPointer(TGL_FLOAT, sizeof(TeVector3f32), normals.data());
- if (!_uvs.empty() && renderer->shadowMode() != TeRenderer::ShadowMode2)
- tglTexCoordPointer(2, TGL_FLOAT, 8, _uvs.data());
+ if (!_uvs.empty() && renderer->shadowMode() != TeRenderer::ShadowModeDrawing)
+ tglTexCoordPointer(2, TGL_FLOAT, sizeof(TeVector2f32), _uvs.data());
if (!_colors.empty())
- tglColorPointer(4, TGL_UNSIGNED_BYTE, 4, _colors.data());
+ tglColorPointer(4, TGL_UNSIGNED_BYTE, sizeof(TeColor), _colors.data());
// TODO: not supported in TGL
//tglTexEnvi(TGL_TEXTURE_ENV, TGL_TEXTURE_ENV_MODE, _gltexEnvMode);
@@ -128,7 +128,7 @@ void TeMeshTinyGL::draw() {
for (uint i = 0; i < _materials.size(); i++) {
if (!_faceCounts[i])
continue;
- if (!hasAlpha(i) || renderer->shadowMode() == TeRenderer::ShadowMode1 || !_shouldDraw) {
+ if (!hasAlpha(i) || renderer->shadowMode() == TeRenderer::ShadowModeCreating || !_shouldDraw) {
renderer->applyMaterial(_materials[i]);
tglDrawElements(_glMeshMode, _faceCounts[i] * 3, TGL_UNSIGNED_SHORT, _indexes.data() + totalFaceCount * 3);
tglDisableClientState(TGL_TEXTURE_COORD_ARRAY);
diff --git a/engines/tetraedge/te/te_renderer.cpp b/engines/tetraedge/te/te_renderer.cpp
index 153bf7a650c..69f40ad8110 100644
--- a/engines/tetraedge/te/te_renderer.cpp
+++ b/engines/tetraedge/te/te_renderer.cpp
@@ -32,7 +32,7 @@
namespace Tetraedge {
-TeRenderer::TeRenderer() : _textureEnabled(false), _shadowMode(ShadowMode0), _matrixMode(MM_GL_PROJECTION),
+TeRenderer::TeRenderer() : _textureEnabled(false), _shadowMode(ShadowModeNone), _matrixMode(MM_GL_PROJECTION),
_numTransparentMeshes(0), _pendingTransparentMeshProperties(0) {
}
@@ -200,7 +200,7 @@ void TeRenderer::addTransparentMesh(const TeMesh &mesh, unsigned long i1, unsign
void TeRenderer::create() {
_textureEnabled = false;
_currentCamera = nullptr;
- _shadowMode = ShadowMode0;
+ _shadowMode = ShadowModeNone;
_numTransparentMeshes = 0;
_pendingTransparentMeshProperties = 0;
}
diff --git a/engines/tetraedge/te/te_renderer.h b/engines/tetraedge/te/te_renderer.h
index 3f7c964adee..87cf89fd27f 100644
--- a/engines/tetraedge/te/te_renderer.h
+++ b/engines/tetraedge/te/te_renderer.h
@@ -42,9 +42,9 @@ public:
};
enum ShadowMode {
- ShadowMode0 = 0,
- ShadowMode1 = 1,
- ShadowMode2 = 2
+ ShadowModeNone = 0,
+ ShadowModeCreating = 1,
+ ShadowModeDrawing = 2
};
class TransparentMeshProperties {
diff --git a/engines/tetraedge/te/te_renderer_opengl.cpp b/engines/tetraedge/te/te_renderer_opengl.cpp
index 4aeaf16632e..1e540d82f45 100644
--- a/engines/tetraedge/te/te_renderer_opengl.cpp
+++ b/engines/tetraedge/te/te_renderer_opengl.cpp
@@ -155,10 +155,10 @@ void TeRendererOpenGL::renderTransparentMeshes() {
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
- glVertexPointer(3, GL_FLOAT, 12, _transparentMeshVertexes.data());
- glNormalPointer(GL_FLOAT, 12, _transparentMeshNormals.data());
- glTexCoordPointer(2, GL_FLOAT, 8, _transparentMeshCoords.data());
- glColorPointer(4, GL_UNSIGNED_BYTE, 4, _transparentMeshColors.data());
+ glVertexPointer(3, GL_FLOAT, sizeof(TeVector3f32), _transparentMeshVertexes.data());
+ glNormalPointer(GL_FLOAT, sizeof(TeVector3f32), _transparentMeshNormals.data());
+ glTexCoordPointer(2, GL_FLOAT, sizeof(TeVector2f32), _transparentMeshCoords.data());
+ glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(TeColor), _transparentMeshColors.data());
TeMaterial lastMaterial;
TeMatrix4x4 lastMatrix;
@@ -276,16 +276,16 @@ void TeRendererOpenGL::setViewport(int x, int y, int w, int h) {
void TeRendererOpenGL::shadowMode(enum ShadowMode mode) {
_shadowMode = mode;
- if (mode == ShadowMode0) {
+ if (mode == ShadowModeNone) {
glDisable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
return;
}
- if (mode == ShadowMode1) {
+ if (mode == ShadowModeCreating) {
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
- } else { // ShadowMode2
+ } else { // ShadowModeDrawing
glDisable(GL_CULL_FACE);
}
glEnable(GL_BLEND);
@@ -297,7 +297,7 @@ void TeRendererOpenGL::shadowMode(enum ShadowMode mode) {
void TeRendererOpenGL::applyMaterial(const TeMaterial &m) {
//debug("TeMaterial::apply (%s)", dump().c_str());
static const float constColor[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
- if (_shadowMode == TeRenderer::ShadowMode0) {
+ if (_shadowMode == TeRenderer::ShadowModeNone) {
if (m._enableLights)
TeLightOpenGL::enableAll();
else
@@ -345,7 +345,7 @@ void TeRendererOpenGL::applyMaterial(const TeMaterial &m) {
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);
setCurrentColor(m._diffuseColor);
- } else if (_shadowMode == TeRenderer::ShadowMode1) {
+ } else if (_shadowMode == TeRenderer::ShadowModeCreating) {
// NOTE: Diverge from original here, it sets 255.0 but the
// colors should be scaled -1.0 .. 1.0.
static const float fullColor[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
diff --git a/engines/tetraedge/te/te_renderer_tinygl.cpp b/engines/tetraedge/te/te_renderer_tinygl.cpp
index 9654f530c3b..7ab22a9aba2 100644
--- a/engines/tetraedge/te/te_renderer_tinygl.cpp
+++ b/engines/tetraedge/te/te_renderer_tinygl.cpp
@@ -162,10 +162,10 @@ void TeRendererTinyGL::renderTransparentMeshes() {
tglEnableClientState(TGL_TEXTURE_COORD_ARRAY);
tglEnableClientState(TGL_COLOR_ARRAY);
- tglVertexPointer(3, TGL_FLOAT, 12, _transparentMeshVertexes.data());
- tglNormalPointer(TGL_FLOAT, 12, _transparentMeshNormals.data());
- tglTexCoordPointer(2, TGL_FLOAT, 8, _transparentMeshCoords.data());
- tglColorPointer(4, TGL_UNSIGNED_BYTE, 4, _transparentMeshColors.data());
+ 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());
TeMaterial lastMaterial;
TeMatrix4x4 lastMatrix;
@@ -287,16 +287,16 @@ void TeRendererTinyGL::setViewport(int x, int y, int w, int h) {
void TeRendererTinyGL::shadowMode(enum ShadowMode mode) {
_shadowMode = mode;
- if (mode == ShadowMode0) {
+ if (mode == ShadowModeNone) {
tglDisable(TGL_CULL_FACE);
tglShadeModel(TGL_SMOOTH);
return;
}
- if (mode == ShadowMode1) {
+ if (mode == ShadowModeCreating) {
tglEnable(TGL_CULL_FACE);
tglCullFace(TGL_BACK);
- } else { // ShadowMode2
+ } else { // ShadowModeDrawing
tglDisable(TGL_CULL_FACE);
}
tglEnable(TGL_BLEND);
@@ -308,7 +308,7 @@ void TeRendererTinyGL::shadowMode(enum ShadowMode mode) {
void TeRendererTinyGL::applyMaterial(const TeMaterial &m) {
//debug("TeMaterial::apply (%s)", dump().c_str());
//static const float constColor[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
- if (_shadowMode == TeRenderer::ShadowMode0) {
+ if (_shadowMode == TeRenderer::ShadowModeNone) {
if (m._enableLights)
TeLightTinyGL::enableAll();
else
@@ -360,7 +360,7 @@ void TeRendererTinyGL::applyMaterial(const TeMaterial &m) {
tglMaterialfv(TGL_FRONT_AND_BACK, TGL_DIFFUSE, diffuse);
setCurrentColor(m._diffuseColor);
- } else if (_shadowMode == TeRenderer::ShadowMode1) {
+ } else if (_shadowMode == TeRenderer::ShadowModeCreating) {
// NOTE: Diverge from original here, it sets 255.0 but the
// colors should be scaled -1.0 .. 1.0.
static const float fullColor[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
Commit: 9f87c6edc9ae8c0529e06155a81d9f35b7eb5a47
https://github.com/scummvm/scummvm/commit/9f87c6edc9ae8c0529e06155a81d9f35b7eb5a47
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:12+09:00
Commit Message:
TETRAEDGE: Use true window size for fade sprite
Changed paths:
engines/tetraedge/te/te_visual_fade.cpp
diff --git a/engines/tetraedge/te/te_visual_fade.cpp b/engines/tetraedge/te/te_visual_fade.cpp
index 7d355755640..2e9502fd9e0 100644
--- a/engines/tetraedge/te/te_visual_fade.cpp
+++ b/engines/tetraedge/te/te_visual_fade.cpp
@@ -21,6 +21,7 @@
#include "common/textconsole.h"
#include "tetraedge/tetraedge.h"
+#include "tetraedge/game/application.h"
#include "tetraedge/te/te_visual_fade.h"
#include "tetraedge/te/te_renderer.h"
@@ -107,9 +108,8 @@ void TeVisualFade::init() {
// create an image the size of the window, no palette, format 6.
Common::SharedPtr<TePalette> nullpal;
_image.destroy();
- // TODO: should this get actual window size instead of default?
- _image.createImg(g_engine->getDefaultScreenWidth(),
- g_engine->getDefaultScreenHeight(), nullpal, TeImage::RGBA8);
+ const TeVector3f32 winSize = g_engine->getApplication()->getMainWindow().size();
+ _image.createImg((int)winSize.x(), (int)winSize.y(), nullpal, TeImage::RGBA8);
_texturePtr->load(_image);
g_engine->getRenderer()->enableTexture();
_texturePtr->load(_image);
Commit: 6ff1723a2191c3e0bacddda8bc27e2ee746cd220
https://github.com/scummvm/scummvm/commit/6ff1723a2191c3e0bacddda8bc27e2ee746cd220
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:13+09:00
Commit Message:
TETRAEDGE: Fix potential crash from filling 3-byte image
Changed paths:
engines/tetraedge/te/te_image.cpp
diff --git a/engines/tetraedge/te/te_image.cpp b/engines/tetraedge/te/te_image.cpp
index 7cf40e0f8f4..4e864d983ff 100644
--- a/engines/tetraedge/te/te_image.cpp
+++ b/engines/tetraedge/te/te_image.cpp
@@ -56,7 +56,8 @@ void TeImage::createImg(uint xsize, uint ysize, Common::SharedPtr<TePalette> &pa
Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0) : Graphics::PixelFormat(4, 8, 8, 8, 8, 0, 8, 16, 24));
Graphics::ManagedSurface::create(xsize, ysize, pxformat);
- Graphics::ManagedSurface::fillRect(Common::Rect(0, 0, xsize, ysize), 0);
+ if (teformat == TeImage::RGBA8)
+ Graphics::ManagedSurface::fillRect(Common::Rect(0, 0, xsize, ysize), 0);
}
void TeImage::deserialize(Common::ReadStream &stream) {
Commit: 25303384802a189faf55c1960c95958dfe17ee72
https://github.com/scummvm/scummvm/commit/25303384802a189faf55c1960c95958dfe17ee72
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-28T17:13:13+09:00
Commit Message:
TETRAEDGE: Fix blending modes so fades keep right colors
Changed paths:
engines/tetraedge/te/te_renderer_opengl.cpp
diff --git a/engines/tetraedge/te/te_renderer_opengl.cpp b/engines/tetraedge/te/te_renderer_opengl.cpp
index 1e540d82f45..de72dfc3061 100644
--- a/engines/tetraedge/te/te_renderer_opengl.cpp
+++ b/engines/tetraedge/te/te_renderer_opengl.cpp
@@ -96,7 +96,8 @@ void TeRendererOpenGL::init(uint width, uint height) {
glDepthMask(GL_TRUE);
glShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ // Note: original doesn't separate but blends are nicer that way.
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_DONT_CARE);
glClearDepth(1.0);
@@ -289,7 +290,8 @@ void TeRendererOpenGL::shadowMode(enum ShadowMode mode) {
glDisable(GL_CULL_FACE);
}
glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ // Note: original doesn't separate but blends are nicer that way.
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glShadeModel(GL_FLAT);
TeLightOpenGL::disableAll();
}
More information about the Scummvm-git-logs
mailing list