[Scummvm-cvs-logs] scummvm master -> f094cb81cb9e470ada4d4584e3d9e71f018ddd28

dreammaster dreammaster at scummvm.org
Mon May 30 12:31:37 CEST 2011


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
ed20f18d29 TSAGE: General cleanup of object class
f094cb81cb TSAGE: Bugfix for saving in scene #2150


Commit: ed20f18d29fa6fcfa682c74530515e26a94aef29
    https://github.com/scummvm/scummvm/commit/ed20f18d29fa6fcfa682c74530515e26a94aef29
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-05-30T03:29:13-07:00

Commit Message:
TSAGE: General cleanup of object class

Changed paths:
    engines/m4/console.cpp
    engines/m4/globals.cpp
    engines/m4/globals.h
    engines/m4/mads_logic.cpp
    engines/m4/mads_scene.cpp
    engines/m4/mads_views.cpp
    engines/m4/mads_views.h



diff --git a/engines/m4/console.cpp b/engines/m4/console.cpp
index 6f45f11..fa4ca6d 100644
--- a/engines/m4/console.cpp
+++ b/engines/m4/console.cpp
@@ -267,7 +267,7 @@ bool MadsConsole::cmdObject(int argc, const char **argv) {
 			DebugPrintf("%2d - ", objStart);
 			for (uint objId = objStart; objId < MIN<uint>(_vm->globals()->getObjectsSize(), objStart + 5); ++objId) {
 				if (objId != objStart) DebugPrintf(", ");
-				uint16 descId = _vm->globals()->getObject(objId)->descId;
+				uint16 descId = _vm->globals()->getObject(objId)->_descId;
 				DebugPrintf("%s", _vm->globals()->getVocab(descId));
 			}
 
@@ -297,15 +297,15 @@ bool MadsConsole::cmdObject(int argc, const char **argv) {
 		else {
 			const MadsObject *obj = _vm->globals()->getObject(objNum);
 
-			DebugPrintf("Object #%d (%s) room=%d article=%d/%s vocabs=%d", objNum, _vm->globals()->getVocab(obj->descId),
-				obj->roomNumber, (int)obj->article, englishMADSArticleList[obj->article], obj->vocabCount);
+			DebugPrintf("Object #%d (%s) room=%d article=%d/%s vocabs=%d", objNum, _vm->globals()->getVocab(obj->_descId),
+				obj->_roomNumber, (int)obj->_article, englishMADSArticleList[obj->_article], obj->_vocabCount);
 
-			if (obj->vocabCount > 0) {
+			if (obj->_vocabCount > 0) {
 				DebugPrintf(" - ");
-				for (int i = 0; i < obj->vocabCount; ++i) {
+				for (int i = 0; i < obj->_vocabCount; ++i) {
 					if (i != 0) DebugPrintf(", ");
-					DebugPrintf("%s (%d)/%d,%d", _vm->globals()->getVocab(obj->vocabList[i].vocabId),
-						obj->vocabList[i].vocabId, obj->vocabList[i].flags1, obj->vocabList[i].flags2);
+					DebugPrintf("%s (%d)/%d,%d", _vm->globals()->getVocab(obj->_vocabList[i].vocabId),
+						obj->_vocabList[i].vocabId, obj->_vocabList[i].flags1, obj->_vocabList[i].flags2);
 				}
 			}
 			DebugPrintf("\n");
diff --git a/engines/m4/globals.cpp b/engines/m4/globals.cpp
index 58cadb3..8787f89 100644
--- a/engines/m4/globals.cpp
+++ b/engines/m4/globals.cpp
@@ -523,19 +523,23 @@ void MadsObject::load(Common::SeekableReadStream *stream) {
 	stream->read(obj, 0x30);
 
 	// Extract object data fields
-	descId = READ_LE_UINT16(&obj[0]);
-	roomNumber = READ_LE_UINT16(&obj[2]);
-	article = (MADSArticles)obj[4];
-	vocabCount = obj[5] & 0x7f;
+	_descId = READ_LE_UINT16(&obj[0]);
+	_roomNumber = READ_LE_UINT16(&obj[2]);
+	_article = (MADSArticles)obj[4];
+	_vocabCount = obj[5] & 0x7f;
 	// Phantom / Dragon
-	if (vocabCount > 3)
-		warning("MadsObject::load(), vocab cound > 3 (it's %d)", vocabCount);
+	if (_vocabCount > 3)
+		warning("MadsObject::load(), vocab cound > 3 (it's %d)", _vocabCount);
 
-	for (int i = 0; i < vocabCount; ++i) {
-		vocabList[i].flags1 = obj[6 + i * 4];
-		vocabList[i].flags2 = obj[7 + i * 4];
-		vocabList[i].vocabId = READ_LE_UINT16(&obj[8 + i * 4]);
+	for (int i = 0; i < _vocabCount; ++i) {
+		_vocabList[i].flags1 = obj[6 + i * 4];
+		_vocabList[i].flags2 = obj[7 + i * 4];
+		_vocabList[i].vocabId = READ_LE_UINT16(&obj[8 + i * 4]);
 	}
 }
 
+void MadsObject::setRoom(int roomNumber) {
+	
+}
+
 } // End of namespace M4
diff --git a/engines/m4/globals.h b/engines/m4/globals.h
index a95e516..ae2941c 100644
--- a/engines/m4/globals.h
+++ b/engines/m4/globals.h
@@ -177,13 +177,14 @@ public:
 	MadsObject() {}
 	MadsObject(Common::SeekableReadStream *stream);
 	void load(Common::SeekableReadStream *stream);
-	bool isInInventory() const { return roomNumber == PLAYER_INVENTORY; }
-
-	uint16 descId;
-	uint16 roomNumber;
-	MADSArticles article;
-	uint8 vocabCount;
-	VocabEntry vocabList[3];
+	bool isInInventory() const { return _roomNumber == PLAYER_INVENTORY; }
+	void setRoom(int roomNumber);
+
+	uint16 _descId;
+	uint16 _roomNumber;
+	MADSArticles _article;
+	uint8 _vocabCount;
+	VocabEntry _vocabList[3];
 };
 
 typedef Common::Array<Common::SharedPtr<MadsObject> > MadsObjectArray;
diff --git a/engines/m4/mads_logic.cpp b/engines/m4/mads_logic.cpp
index a73e943..b1e57bd 100644
--- a/engines/m4/mads_logic.cpp
+++ b/engines/m4/mads_logic.cpp
@@ -951,7 +951,7 @@ void MadsSceneLogic::callSubroutine(int subIndex, Common::Stack<ScriptVar> &stac
 		// object_is_present
 		EXTRACT_PARAMS(1);
 		const MadsObject *obj = _madsVm->globals()->getObject(p[0]);
-		stack.push(ScriptVar((obj->roomNumber == _madsVm->scene()->_currentScene)));
+		stack.push(ScriptVar((obj->_roomNumber == _madsVm->scene()->_currentScene)));
 		break;
 	}
 
@@ -978,6 +978,14 @@ void MadsSceneLogic::callSubroutine(int subIndex, Common::Stack<ScriptVar> &stac
 		break;
 	}
 
+	case 26: {
+		// object_set_room
+		EXTRACT_PARAMS(2);
+		MadsObject *obj = _madsVm->globals()->getObject(p[0]);
+		obj->setRoom(p[1]);
+		break;
+	}
+
 	default:
 		error("Unknown subroutine %d called", subIndex);
 		break;
diff --git a/engines/m4/mads_scene.cpp b/engines/m4/mads_scene.cpp
index 1a44c49..a0acbdd 100644
--- a/engines/m4/mads_scene.cpp
+++ b/engines/m4/mads_scene.cpp
@@ -428,7 +428,29 @@ void MadsScene::doSceneStep() {
 }
 
 void MadsScene::doAction() {
-	warning("TODO MadsScene::doAction");
+	AbortTimerMode mode = ABORTMODE_0;
+	_abortTimersMode2 = mode;
+
+	if ((_action._inProgress || (_abortTimers != 0)) && !_action._v8453A) {
+		_sceneLogic.doAction();
+		mode = _action._inProgress ? ABORTMODE_0 : ABORTMODE_1;
+	}
+
+	if (_screenObjects._v832EC)
+		_action._inProgress = false;
+	else {
+		if ((_action._inProgress || (_abortTimers != 0)) && (mode == ABORTMODE_0) && (_action._v8453A == mode)) {
+			// TODO: sound_fn_p();
+			mode = _action._inProgress ? ABORTMODE_0 : ABORTMODE_1;
+
+		}
+
+		if ((_action._inProgress || (_abortTimers != 0)) && (mode == ABORTMODE_0) && (_action._v8453A == mode)) {
+			// Perform a core scene-indepedant action on an object
+			// object_do_action
+		}
+	}
+
 }
 
 
@@ -870,7 +892,7 @@ void MadsInterfaceView::initialize() {
 
 	for (uint i = 0; i < _madsVm->globals()->getObjectsSize(); ++i) {
 		MadsObject *obj = _madsVm->globals()->getObject(i);
-		if (obj->roomNumber == PLAYER_INVENTORY)
+		if (obj->_roomNumber == PLAYER_INVENTORY)
 			_inventoryList.push_back(i);
 	}
 
@@ -919,7 +941,7 @@ void MadsInterfaceView::setSelectedObject(int objectNumber) {
 
 void MadsInterfaceView::addObjectToInventory(int objectNumber) {
 	if (_inventoryList.indexOf(objectNumber) == -1) {
-		_madsVm->globals()->getObject(objectNumber)->roomNumber = PLAYER_INVENTORY;
+		_madsVm->globals()->getObject(objectNumber)->_roomNumber = PLAYER_INVENTORY;
 		_inventoryList.push_back(objectNumber);
 	}
 
@@ -972,7 +994,7 @@ void MadsInterfaceView::onRefresh(RectList *rects, M4Surface *destSurface) {
 			break;
 
 		const char *descStr = _madsVm->globals()->getVocab(_madsVm->globals()->getObject(
-			_inventoryList[_topIndex + i])->descId);
+			_inventoryList[_topIndex + i])->_descId);
 		strcpy(buffer, descStr);
 		if ((buffer[0] >= 'a') && (buffer[0] <= 'z')) buffer[0] -= 'a' - 'A';
 
@@ -1002,13 +1024,13 @@ void MadsInterfaceView::onRefresh(RectList *rects, M4Surface *destSurface) {
 
 		// List the vocab actions for the currently selected object
 		MadsObject *obj = _madsVm->globals()->getObject(_selectedObject);
-		int yIndex = MIN(_highlightedElement - VOCAB_START, obj->vocabCount - 1);
+		int yIndex = MIN(_highlightedElement - VOCAB_START, obj->_vocabCount - 1);
 
-		for (int i = 0; i < obj->vocabCount; ++i) {
+		for (int i = 0; i < obj->_vocabCount; ++i) {
 			const Common::Rect r(_screenObjects[VOCAB_START + i]);
 
 			// Get the vocab description and capitalise it
-			const char *descStr = _madsVm->globals()->getVocab(obj->vocabList[i].vocabId);
+			const char *descStr = _madsVm->globals()->getVocab(obj->_vocabList[i].vocabId);
 			strcpy(buffer, descStr);
 			if ((buffer[0] >= 'a') && (buffer[0] <= 'z')) buffer[0] -= 'a' - 'A';
 
@@ -1060,12 +1082,12 @@ bool MadsInterfaceView::onEvent(M4EventType eventType, int32 param1, int x, int
 			} else if ((_highlightedElement >= VOCAB_START) && (_highlightedElement < (VOCAB_START + 5))) {
 				// A vocab action was selected
 				MadsObject *obj = _madsVm->globals()->getObject(_selectedObject);
-				int vocabIndex = MIN(_highlightedElement - VOCAB_START, obj->vocabCount - 1);
+				int vocabIndex = MIN(_highlightedElement - VOCAB_START, obj->_vocabCount - 1);
 				if (vocabIndex >= 0) {
 					act._actionMode = ACTMODE_OBJECT;
 					act._actionMode2 = ACTMODE2_2;
-					act._flags1 = obj->vocabList[1].flags1;
-					act._flags2 = obj->vocabList[1].flags2;
+					act._flags1 = obj->_vocabList[1].flags1;
+					act._flags2 = obj->_vocabList[1].flags2;
 
 					act._action.verbId = _selectedObject;
 					act._articleNumber = act._flags2;
diff --git a/engines/m4/mads_views.cpp b/engines/m4/mads_views.cpp
index 7628c0d..b66591a 100644
--- a/engines/m4/mads_views.cpp
+++ b/engines/m4/mads_views.cpp
@@ -100,8 +100,8 @@ void MadsAction::set() {
 			int selectedObject = _madsVm->scene()->getInterface()->getSelectedObject();
 			MadsObject *objEntry = _madsVm->globals()->getObject(selectedObject);
 			
-			_action.objectNameId = objEntry->descId;
-			_currentAction = objEntry->vocabList[_selectedRow].vocabId;
+			_action.objectNameId = objEntry->_descId;
+			_currentAction = objEntry->_vocabList[_selectedRow].vocabId;
 
 			// Set up the status text stirng
 			strcpy(_statusText, useStr);
@@ -119,7 +119,7 @@ void MadsAction::set() {
 					int selectedObject = _madsVm->scene()->getInterface()->getSelectedObject();
 					MadsObject *objEntry = _madsVm->globals()->getObject(selectedObject);
 
-					_currentAction = objEntry->vocabList[_selectedRow].vocabId;
+					_currentAction = objEntry->_vocabList[_selectedRow].vocabId;
 				}
 
 				appendVocab(_currentAction, true);
@@ -165,7 +165,7 @@ void MadsAction::set() {
 				if ((_actionMode2 == ACTMODE2_2) || (_actionMode2 == ACTMODE2_5)) {
 					// Get name from given inventory object
 					int objectId = _madsVm->scene()->getInterface()->getInventoryObject(_hotspotId);
-					_action.objectNameId = _madsVm->globals()->getObject(objectId)->descId;
+					_action.objectNameId = _madsVm->globals()->getObject(objectId)->_descId;
 				} else if (_hotspotId < hotspotCount) {
 					// Get name from scene hotspot
 					_action.objectNameId = (*_madsVm->scene()->getSceneResources().hotspots)[_hotspotId].getVocabID();
@@ -184,7 +184,7 @@ void MadsAction::set() {
 
 					if ((_v86F42 == 2) || (_v86F42 == 5)) {
 						int objectId = _madsVm->scene()->getInterface()->getInventoryObject(_hotspotId);
-						articleNum = _madsVm->globals()->getObject(objectId)->article;
+						articleNum = _madsVm->globals()->getObject(objectId)->_article;
 					} else if (_v86F3A < hotspotCount) {
 						articleNum = (*_madsVm->scene()->getSceneResources().hotspots)[_hotspotId].getArticle();
 					} else {
@@ -256,7 +256,7 @@ void MadsAction::startAction() {
 	_madsVm->_player.moveComplete();
 
 	_inProgress = true;
-	_v8453A = 0;
+	_v8453A = ABORTMODE_0;
 	_savedFields.selectedRow = _selectedRow;
 	_savedFields.articleNumber = _articleNumber;
 	_savedFields.actionMode = _actionMode;
@@ -271,7 +271,7 @@ void MadsAction::startAction() {
 	strcpy(_dialogTitle, _statusText);
 
 	if ((_savedFields.actionMode2 == ACTMODE2_4) && (savedV86F42 == 0))
-		_v8453A = true;
+		_v8453A = ABORTMODE_1;
 
 	_startWalkFlag = false;
 	int hotspotId = -1;
diff --git a/engines/m4/mads_views.h b/engines/m4/mads_views.h
index e49c9e6..6be2283 100644
--- a/engines/m4/mads_views.h
+++ b/engines/m4/mads_views.h
@@ -34,7 +34,8 @@ namespace M4 {
 class MadsView;
 
 enum MadsActionMode {ACTMODE_NONE = 0, ACTMODE_VERB = 1, ACTMODE_OBJECT = 3, ACTMODE_TALK = 6};
-enum MAdsActionMode2 {ACTMODE2_0 = 0, ACTMODE2_2 = 2, ACTMODE2_4 = 4, ACTMODE2_5 = 5};
+enum MadsActionMode2 {ACTMODE2_0 = 0, ACTMODE2_2 = 2, ACTMODE2_4 = 4, ACTMODE2_5 = 5};
+enum AbortTimerMode {ABORTMODE_0 = 0, ABORTMODE_1 = 1, ABORTMODE_2 = 2};
 
 struct ActionDetails {
 	int verbId;
@@ -62,7 +63,7 @@ public:
 	int _currentAction;
 	int8 _flags1, _flags2;
 	MadsActionMode _actionMode;
-	MAdsActionMode2 _actionMode2;
+	MadsActionMode2 _actionMode2;
 	int _articleNumber;
 	bool _lookFlag;
 	int _selectedRow;
@@ -82,7 +83,7 @@ public:
 	int16 _v86F4C;
 	int _v83338;
 	bool _inProgress;
-	bool _v8453A;
+	AbortTimerMode _v8453A;
 
 public:
 	MadsAction(MadsView &owner);
@@ -96,8 +97,6 @@ public:
 	bool isAction(int verbId, int objectNameId = 0, int indirectObjectId = 0);
 };
 
-enum AbortTimerMode {ABORTMODE_0 = 0, ABORTMODE_1 = 1, ABORTMODE_2 = 2};
-
 class SpriteSlotSubset {
 public:
 	int spriteListIndex;


Commit: f094cb81cb9e470ada4d4584e3d9e71f018ddd28
    https://github.com/scummvm/scummvm/commit/f094cb81cb9e470ada4d4584e3d9e71f018ddd28
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-05-30T03:29:14-07:00

Commit Message:
TSAGE: Bugfix for saving in scene #2150

Changed paths:
    engines/tsage/ringworld_scenes3.cpp



diff --git a/engines/tsage/ringworld_scenes3.cpp b/engines/tsage/ringworld_scenes3.cpp
index 5de9efa..f09a0c0 100644
--- a/engines/tsage/ringworld_scenes3.cpp
+++ b/engines/tsage/ringworld_scenes3.cpp
@@ -2505,7 +2505,7 @@ void Scene2150::postInit(SceneObjectList *OwnerList) {
 	_hotspot7.setVisage(2152);
 	_hotspot7._frame = 1;
 	_hotspot7._strip = 2;
-	_hotspot7.animate(ANIM_MODE_8, NULL);
+	_hotspot7.animate(ANIM_MODE_8, NULL, NULL);
 	_hotspot7.setPosition(Common::Point(122, 62));
 	_hotspot7.changeZoom(100);
 	_hotspot7.fixPriority(76);






More information about the Scummvm-git-logs mailing list