[Scummvm-git-logs] scummvm master -> 78ef45ba0f11862b3a6fdfa3823e7c66c464aa32
bluegr
bluegr at gmail.com
Tue Jun 22 07:38:27 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
78ef45ba0f TRECISION: Group object graphics and mask buffers
Commit: 78ef45ba0f11862b3a6fdfa3823e7c66c464aa32
https://github.com/scummvm/scummvm/commit/78ef45ba0f11862b3a6fdfa3823e7c66c464aa32
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2021-06-22T10:37:36+03:00
Commit Message:
TRECISION: Group object graphics and mask buffers
Changed paths:
engines/trecision/graphics.cpp
engines/trecision/resource.cpp
engines/trecision/trecision.cpp
engines/trecision/trecision.h
engines/trecision/utils.cpp
diff --git a/engines/trecision/graphics.cpp b/engines/trecision/graphics.cpp
index 5a47948e0a..c3df9d2404 100644
--- a/engines/trecision/graphics.cpp
+++ b/engines/trecision/graphics.cpp
@@ -110,9 +110,9 @@ void GraphicsManager::drawObj(int index, bool mask, Common::Rect drawRect, Commo
// If we have a valid object, draw it, otherwise erase it
// by using the background buffer
- const uint16 *buf = index >= 0 ? _vm->_objPointers[index] : (uint16 *)_smkBackground.getPixels();
+ const uint16 *buf = index >= 0 ? _vm->_objectGraphics[index].buf : (uint16 *)_smkBackground.getPixels();
if (mask && index >= 0) {
- uint8 *maskPtr = _vm->_maskPointers[index];
+ uint8 *maskPtr = _vm->_objectGraphics[index].mask;
for (uint16 y = drawRect.top; y < drawRect.bottom; ++y) {
uint16 sco = 0;
diff --git a/engines/trecision/resource.cpp b/engines/trecision/resource.cpp
index 4c83b2572e..c8ef1f0289 100644
--- a/engines/trecision/resource.cpp
+++ b/engines/trecision/resource.cpp
@@ -149,26 +149,26 @@ void TrecisionEngine::readObject(Common::SeekableReadStream *stream, uint16 objI
obj->readRect(stream);
uint32 size = obj->_rect.width() * obj->_rect.height();
- delete[] _objPointers[objIndex];
- _objPointers[objIndex] = new uint16[size];
+ delete[] _objectGraphics[objIndex].buf;
+ _objectGraphics[objIndex].buf = new uint16[size];
for (uint32 i = 0; i < size; ++i)
- _objPointers[objIndex][i] = _graphicsMgr->convertToScreenFormat(stream->readUint16LE());
+ _objectGraphics[objIndex].buf[i] = _graphicsMgr->convertToScreenFormat(stream->readUint16LE());
}
if (obj->isModeMask()) {
obj->readRect(stream);
uint32 size = stream->readUint32LE();
- delete[] _objPointers[objIndex];
- _objPointers[objIndex] = new uint16[size];
+ delete[] _objectGraphics[objIndex].buf;
+ _objectGraphics[objIndex].buf = new uint16[size];
for (uint32 i = 0; i < size; ++i)
- _objPointers[objIndex][i] = _graphicsMgr->convertToScreenFormat(stream->readUint16LE());
+ _objectGraphics[objIndex].buf[i] = _graphicsMgr->convertToScreenFormat(stream->readUint16LE());
size = stream->readUint32LE();
- delete[] _maskPointers[objIndex];
- _maskPointers[objIndex] = new uint8[size];
+ delete[] _objectGraphics[objIndex].mask;
+ _objectGraphics[objIndex].mask = new uint8[size];
for (uint32 i = 0; i < size; ++i)
- _maskPointers[objIndex][i] = (uint8)stream->readByte();
+ _objectGraphics[objIndex].mask[i] = (uint8)stream->readByte();
}
refreshObject(objectId);
diff --git a/engines/trecision/trecision.cpp b/engines/trecision/trecision.cpp
index ebd7f32b77..c54e5eebe0 100644
--- a/engines/trecision/trecision.cpp
+++ b/engines/trecision/trecision.cpp
@@ -139,8 +139,8 @@ TrecisionEngine::TrecisionEngine(OSystem *syst, const ADGameDescription *desc) :
_flagWaitRegen = false;
for (int i = 0; i < MAXOBJINROOM; ++i) {
- _objPointers[i] = nullptr;
- _maskPointers[i] = nullptr;
+ _objectGraphics[i].buf = nullptr;
+ _objectGraphics[i].mask = nullptr;
}
_curTime = 0;
@@ -180,8 +180,8 @@ TrecisionEngine::~TrecisionEngine() {
delete[] _textArea;
for (int i = 0; i < MAXOBJINROOM; ++i) {
- delete[] _objPointers[i];
- delete[] _maskPointers[i];
+ delete[] _objectGraphics[i].buf;
+ delete[] _objectGraphics[i].mask;
}
}
diff --git a/engines/trecision/trecision.h b/engines/trecision/trecision.h
index b9839d0d70..a71e7850c1 100644
--- a/engines/trecision/trecision.h
+++ b/engines/trecision/trecision.h
@@ -87,6 +87,11 @@ struct ElevatorAction {
uint16 newRoom;
};
+struct ObjectGraphics {
+ uint16 *buf;
+ uint8 *mask;
+};
+
class TrecisionEngine : public Engine {
void initMain();
void loadAll();
@@ -313,8 +318,7 @@ public:
bool _flagNoPaintScreen;
bool _flagWaitRegen;
- uint16 *_objPointers[MAXOBJINROOM];
- uint8 *_maskPointers[MAXOBJINROOM];
+ ObjectGraphics _objectGraphics[MAXOBJINROOM];
uint32 _curTime;
uint32 _characterSpeakTime;
diff --git a/engines/trecision/utils.cpp b/engines/trecision/utils.cpp
index 44ab420170..42fdb3842e 100644
--- a/engines/trecision/utils.cpp
+++ b/engines/trecision/utils.cpp
@@ -131,7 +131,7 @@ bool TrecisionEngine::checkMask(Common::Point pos) {
}
if (_obj[checkedObj].isModeMask()) {
- uint8 *mask = _maskPointers[i];
+ uint8 *mask = _objectGraphics[i].mask;
int16 d = _obj[checkedObj]._rect.left;
uint16 max = _obj[checkedObj]._rect.bottom;
More information about the Scummvm-git-logs
mailing list