[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