[Scummvm-git-logs] scummvm master -> 2466edc4b8573547817b380d7c660580c38065b5

dreammaster dreammaster at scummvm.org
Sat Oct 29 04:31:12 CEST 2016


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:
2466edc4b8 TITANIC: Fix scanning for rooms in parseView


Commit: 2466edc4b8573547817b380d7c660580c38065b5
    https://github.com/scummvm/scummvm/commit/2466edc4b8573547817b380d7c660580c38065b5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-10-28T22:31:06-04:00

Commit Message:
TITANIC: Fix scanning for rooms in parseView

Changed paths:
    engines/titanic/core/game_object.cpp
    engines/titanic/core/project_item.cpp
    engines/titanic/core/project_item.h



diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index 1ccf5ba..a1b86e3 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -868,7 +868,8 @@ CViewItem *CGameObject::parseView(const CString &viewString) {
 	if (project) {
 		if (room->getName() != roomName) {
 			// Scan for the correct room
-			for (room = project->findFirstRoom(); room && room->getName() != roomName;
+			for (room = project->findFirstRoom();
+					room && room->getName() != roomName;
 					room = project->findNextRoom(room)) ;
 		}
 	}
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp
index 65e8645..af67f69 100644
--- a/engines/titanic/core/project_item.cpp
+++ b/engines/titanic/core/project_item.cpp
@@ -372,15 +372,20 @@ CTreeItem *CProjectItem::findChildInstance(ClassDef *classDef) const {
 }
 
 CRoomItem *CProjectItem::findNextRoom(CRoomItem *priorRoom) const {
-	return dynamic_cast<CRoomItem *>(findSiblingInstanceOf(CRoomItem::_type, priorRoom));
+	return dynamic_cast<CRoomItem *>(findSiblingChildInstanceOf(CRoomItem::_type, priorRoom));
 }
 
-CTreeItem *CProjectItem::findSiblingInstanceOf(ClassDef *classDef, CTreeItem *startItem) const {
-	CTreeItem *treeItem = startItem->getParent()->getNextSibling();
-	if (treeItem == nullptr)
-		return nullptr;
+CTreeItem *CProjectItem::findSiblingChildInstanceOf(ClassDef *classDef, CTreeItem *startItem) const {
+	for (CTreeItem *treeItem = startItem->getParent()->getNextSibling();
+			treeItem; treeItem = treeItem->getNextSibling()) {
+		for (CTreeItem *childItem = treeItem->getFirstChild();
+				childItem; childItem = childItem->getNextSibling()) {
+			if (childItem->isInstanceOf(classDef))
+				return childItem;
+		}
+	}
 
-	return findChildInstance(classDef);
+	return nullptr;
 }
 
 CDontSaveFileItem *CProjectItem::getDontSaveFileItem() const {
diff --git a/engines/titanic/core/project_item.h b/engines/titanic/core/project_item.h
index 4d009dd..20c4a43 100644
--- a/engines/titanic/core/project_item.h
+++ b/engines/titanic/core/project_item.h
@@ -118,7 +118,7 @@ private:
 	/**
 	 * Finds the next sibling occurance of a given class type
 	 */
-	CTreeItem *findSiblingInstanceOf(ClassDef *classDef, CTreeItem *startItem) const;
+	CTreeItem *findSiblingChildInstanceOf(ClassDef *classDef, CTreeItem *startItem) const;
 private:
 	/**
 	 * Load project data from the passed file





More information about the Scummvm-git-logs mailing list