diff options
author | Paul Gilbert | 2016-07-23 12:30:53 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-23 12:30:53 -0400 |
commit | 8dd24dd94530db499ead47dc4fda62194c179efd (patch) | |
tree | 58ca95d9a05bcd557856188ac1723efc200dd9e8 /engines | |
parent | c918602800772556ae95ba477141b80316aa07ae (diff) | |
download | scummvm-rg350-8dd24dd94530db499ead47dc4fda62194c179efd.tar.gz scummvm-rg350-8dd24dd94530db499ead47dc4fda62194c179efd.tar.bz2 scummvm-rg350-8dd24dd94530db499ead47dc4fda62194c179efd.zip |
TITANIC: Finish CLinkItem class
Diffstat (limited to 'engines')
-rw-r--r-- | engines/titanic/core/link_item.cpp | 44 | ||||
-rw-r--r-- | engines/titanic/core/link_item.h | 4 |
2 files changed, 38 insertions, 10 deletions
diff --git a/engines/titanic/core/link_item.cpp b/engines/titanic/core/link_item.cpp index a56122fa43..5de0d4cdeb 100644 --- a/engines/titanic/core/link_item.cpp +++ b/engines/titanic/core/link_item.cpp @@ -33,21 +33,49 @@ CLinkItem::CLinkItem() : CNamedItem() { _roomNumber = -1; _nodeNumber = -1; _viewNumber = -1; - _field30 = 0; + _linkMode = 0; _cursorId = CURSOR_ARROW; _name = "Link"; } CString CLinkItem::formName() { - warning("TODO: CLinkItem::formName"); - return ""; + CViewItem *view = findView(); + CNodeItem *node = view->findNode(); + CRoomItem *room = node->findRoom(); + + CViewItem *destView = getDestView(); + CNodeItem *destNode = destView->findNode(); + CRoomItem *destRoom = destNode->findRoom(); + + switch (_linkMode) { + case 1: + return CString::format("_PANL,%d,%s,%s", node->_nodeNumber, + view->getName(), destView->getName()); + + case 2: + return CString::format("_PANR,%d,%s,%s", node->_nodeNumber, + view->getName(), destView->getName()); + + case 3: + return CString::format("_TRACK,%d,%s,%d,%s", + node->_nodeNumber, view->getName(), + destNode->_nodeNumber, destView->getName()); + + case 4: + return CString::format("_EXIT,%d,%d,%s,%d,%d,%s", + room->_roomNumber, node->_nodeNumber, view->getName(), + destRoom->_roomNumber, destNode->_nodeNumber, destView->getName()); + + default: + return getName(); + } } void CLinkItem::save(SimpleFile *file, int indent) { file->writeNumberLine(2, indent); file->writeQuotedLine("L", indent); file->writeNumberLine(_cursorId, indent + 1); - file->writeNumberLine(_field30, indent + 1); + file->writeNumberLine(_linkMode, indent + 1); file->writeNumberLine(_roomNumber, indent + 1); file->writeNumberLine(_nodeNumber, indent + 1); file->writeNumberLine(_viewNumber, indent + 1); @@ -71,7 +99,7 @@ void CLinkItem::load(SimpleFile *file) { // Deliberate fall-through case 1: - _field30 = file->readNumber(); + _linkMode = file->readNumber(); // Deliberate fall-through case 0: @@ -93,7 +121,7 @@ void CLinkItem::load(SimpleFile *file) { CNamedItem::load(file); if (val < 2) { - switch (_field30) { + switch (_linkMode) { case 2: _cursorId = CURSOR_MOVE_LEFT; break; @@ -120,11 +148,11 @@ bool CLinkItem::connectsTo(CViewItem *destView) const { } void CLinkItem::setDestination(int roomNumber, int nodeNumber, - int viewNumber, int v) { + int viewNumber, int linkMode) { _roomNumber = roomNumber; _nodeNumber = nodeNumber; _viewNumber = viewNumber; - _field30 = v; + _linkMode = linkMode; _name = formName(); } diff --git a/engines/titanic/core/link_item.h b/engines/titanic/core/link_item.h index 09f3a7ab48..f194bc1361 100644 --- a/engines/titanic/core/link_item.h +++ b/engines/titanic/core/link_item.h @@ -45,7 +45,7 @@ protected: int _roomNumber; int _nodeNumber; int _viewNumber; - int _field30; + int _linkMode; public: Rect _bounds; CursorId _cursorId; @@ -72,7 +72,7 @@ public: * Set the destination for the link item */ virtual void setDestination(int roomNumber, int nodeNumber, - int viewNumber, int v); + int viewNumber, int linkMode); /** * Get the destination view for the link item |