[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