[Scummvm-cvs-logs] scummvm master -> 0d618adfb317a0e1154f8be7818668cb51b41dee

dreammaster dreammaster at scummvm.org
Mon Aug 22 12:14:39 CEST 2011


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:
0d618adfb3 M4: Add new methods and variables needed by the objects_action script method


Commit: 0d618adfb317a0e1154f8be7818668cb51b41dee
    https://github.com/scummvm/scummvm/commit/0d618adfb317a0e1154f8be7818668cb51b41dee
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-08-22T03:10:55-07:00

Commit Message:
M4: Add new methods and variables needed by the objects_action script method

Changed paths:
    engines/m4/globals.cpp
    engines/m4/globals.h
    engines/m4/mads_logic.cpp



diff --git a/engines/m4/globals.cpp b/engines/m4/globals.cpp
index f4aab8a..7a0b776 100644
--- a/engines/m4/globals.cpp
+++ b/engines/m4/globals.cpp
@@ -380,6 +380,15 @@ void MadsGlobals::loadMadsObjects() {
 	_vm->res()->toss("objects.dat");
 }
 
+int MadsGlobals::getObjectIndex(uint16 descId) {
+	for (uint i = 0; i < _madsObjects.size(); ++i) {
+		if (_madsObjects[i].get()->_descId == descId)
+			return i;
+	}
+
+	return -1;
+}
+
 int MadsGlobals::messageIndexOf(uint32 messageId) {
 	for (uint i = 0; i < _madsMessages.size(); ++i)
 	{
diff --git a/engines/m4/globals.h b/engines/m4/globals.h
index ae2941c..693dc9d 100644
--- a/engines/m4/globals.h
+++ b/engines/m4/globals.h
@@ -297,6 +297,8 @@ public:
 	void loadMadsObjects();
 	uint32 getObjectsSize() { return _madsObjects.size(); }
 	MadsObject *getObject(uint32 index) { return _madsObjects[index].get(); }
+	int getObjectIndex(uint16 descId);
+	int getObjectFolder(uint32 folderId) { warning("TODO: getObjectFolder"); return -1; } 
 
 	void addVisitedScene(int sceneNumber);
 	bool isSceneVisited(int sceneNumber);
diff --git a/engines/m4/mads_logic.cpp b/engines/m4/mads_logic.cpp
index cc28a26..3351273 100644
--- a/engines/m4/mads_logic.cpp
+++ b/engines/m4/mads_logic.cpp
@@ -199,6 +199,10 @@ uint32 MadsSceneLogic::getDataValue(int dataId) {
 		return getActiveAnimationBool();
 	case 11:
 		return getAnimationCurrentFrame();
+	case 12:
+		return _madsVm->scene()->_action._inProgress;
+	case 13:
+		return _madsVm->globals()->_difficultyLevel;
 	default:
 		// All other data variables get stored in the hash table
 		return _madsVm->globals()->_dataMap[dataId];
@@ -239,6 +243,12 @@ void MadsSceneLogic::setDataValue(int dataId, uint16 dataValue) {
 	case 11:
 		error("Tried to set read only data field %d", dataId);
 		break;
+	case 12:
+		_madsVm->scene()->_action._inProgress = dataValue != 0;
+		break;
+	case 13:
+		_madsVm->globals()->_difficultyLevel = dataValue;
+		break;
 	default:
 		// All other data variables get stored in the hash table
 		_madsVm->globals()->_dataMap[dataId] = dataValue;
@@ -986,6 +996,37 @@ void MadsSceneLogic::callSubroutine(int subIndex, Common::Stack<ScriptVar> &stac
 		break;
 	}
 
+	case 27:  {
+		// object_get_id_from_desc
+		EXTRACT_PARAMS(1);
+		stack.push(_madsVm->globals()->getObjectIndex(p[0]));
+		break;
+	}
+
+	case 28: {
+		// object_get_folder
+		EXTRACT_PARAMS(1);
+		stack.push(_madsVm->globals()->getObjectFolder(p[0]));
+		break;
+	}
+
+	case 29:
+		// inventory_remove
+		EXTRACT_PARAMS(1);
+		_madsVm->scene()->getInterface()->addObjectToInventory(p[0]);
+		break;
+
+	case 30:
+		// image_inter_list_call
+		EXTRACT_PARAMS(1);
+		warning("TODO: image_inter_list_call");
+		break;
+
+	case 31:
+		// dialog_flags_show
+		warning("todo: dialog_flags_show");
+		break;
+
 	default:
 		error("Unknown subroutine %d called", subIndex);
 		break;






More information about the Scummvm-git-logs mailing list