aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2016-04-29 18:19:03 -0400
committerPaul Gilbert2016-07-10 16:22:42 -0400
commit5d087a8fcd709550ec14fc6b01acf045f8d6614b (patch)
tree715f364762e16984a3810208d3db7275ed683bc9
parent6fa57389a2711a83103ebde63779743f7ac2b96d (diff)
downloadscummvm-rg350-5d087a8fcd709550ec14fc6b01acf045f8d6614b.tar.gz
scummvm-rg350-5d087a8fcd709550ec14fc6b01acf045f8d6614b.tar.bz2
scummvm-rg350-5d087a8fcd709550ec14fc6b01acf045f8d6614b.zip
TITANIC: Implement PET Conversations & Text saving
-rw-r--r--engines/titanic/pet_control/pet_conversations.cpp45
-rw-r--r--engines/titanic/pet_control/pet_conversations.h39
-rw-r--r--engines/titanic/pet_control/pet_text.cpp32
-rw-r--r--engines/titanic/pet_control/pet_text.h5
4 files changed, 95 insertions, 26 deletions
diff --git a/engines/titanic/pet_control/pet_conversations.cpp b/engines/titanic/pet_control/pet_conversations.cpp
index ae5bbd6e24..d21380c28f 100644
--- a/engines/titanic/pet_control/pet_conversations.cpp
+++ b/engines/titanic/pet_control/pet_conversations.cpp
@@ -29,18 +29,6 @@ CPetConversations::CPetConversations() : CPetSection(),
_logScrolled(false), _field418(0) {
}
-void CPetConversations::save(SimpleFile *file, int indent) const {
-
-}
-
-void CPetConversations::load(SimpleFile *file, int param) {
- _textInput.load(file, param);
- _log.load(file, param);
-
- for (int idx = 0; idx < 3; ++idx)
- _valArray3[idx] = file->readNumber();
-}
-
bool CPetConversations::isValid(CPetControl *petControl) {
return setupControl(petControl);
}
@@ -110,6 +98,39 @@ bool CPetConversations::VirtualKeyCharMsg(CVirtualKeyCharMsg *msg) {
return handleKey(msg->_keyState);
}
+void CPetConversations::displayMessage(const CString &msg) {
+ _log.addLine(msg, getColor(1));
+ scrollToBottom();
+}
+
+void CPetConversations::load(SimpleFile *file, int param) {
+ _textInput.load(file, param);
+ _log.load(file, param);
+
+ for (int idx = 0; idx < 3; ++idx)
+ _valArray3[idx] = file->readNumber();
+}
+
+void CPetConversations::postLoad() {
+ reset();
+}
+
+void CPetConversations::save(SimpleFile *file, int indent) const {
+ _textInput.save(file, indent);
+ _log.save(file, indent);
+
+ for (int idx = 0; idx < 3; ++idx)
+ file->writeNumberLine(_valArray3[idx], indent);
+}
+
+void CPetConversations::enter(PetArea oldArea) {
+
+}
+
+void CPetConversations::leave() {
+
+}
+
bool CPetConversations::setupControl(CPetControl *petControl) {
if (petControl) {
_petControl = petControl;
diff --git a/engines/titanic/pet_control/pet_conversations.h b/engines/titanic/pet_control/pet_conversations.h
index f7541eda46..9247b44a42 100644
--- a/engines/titanic/pet_control/pet_conversations.h
+++ b/engines/titanic/pet_control/pet_conversations.h
@@ -109,16 +109,6 @@ public:
CPetConversations();
/**
- * Save the data for the class to file
- */
- virtual void save(SimpleFile *file, int indent) const;
-
- /**
- * Load the data for the class from file
- */
- virtual void load(SimpleFile *file, int param);
-
- /**
* Returns true if the object is in a valid state
*/
virtual bool isValid(CPetControl *petControl);
@@ -132,6 +122,35 @@ public:
virtual bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg);
virtual bool KeyCharMsg(CKeyCharMsg *msg);
virtual bool VirtualKeyCharMsg(CVirtualKeyCharMsg *msg);
+
+ /**
+ * Display a message
+ */
+ virtual void displayMessage(const CString &msg);
+
+ /**
+ * Load the data for the class from file
+ */
+ virtual void load(SimpleFile *file, int param);
+
+ /**
+ * Called after a game has been loaded
+ */
+ virtual void postLoad();
+ /**
+ * Save the data for the class to file
+ */
+ virtual void save(SimpleFile *file, int indent) const;
+
+ /**
+ * Called when a section is switched to
+ */
+ virtual void enter(PetArea oldArea);
+
+ /**
+ * Called when a section is being left, to switch to another area
+ */
+ virtual void leave();
};
} // End of namespace Titanic
diff --git a/engines/titanic/pet_control/pet_text.cpp b/engines/titanic/pet_control/pet_text.cpp
index 349e419513..87a6868d92 100644
--- a/engines/titanic/pet_control/pet_text.cpp
+++ b/engines/titanic/pet_control/pet_text.cpp
@@ -83,10 +83,7 @@ void CPetText::load(SimpleFile *file, int param) {
int var1 = file->readNumber();
int var2 = file->readNumber();
uint count = file->readNumber();
- _bounds.left = file->readNumber();
- _bounds.top = file->readNumber();
- _bounds.right = file->readNumber();
- _bounds.bottom = file->readNumber();
+ _bounds = file->readRect();
_field3C = file->readNumber();
_field40 = file->readNumber();
_field44 = file->readNumber();
@@ -109,6 +106,33 @@ void CPetText::load(SimpleFile *file, int param) {
}
}
+void CPetText::save(SimpleFile *file, int indent) const {
+ int numLines = _lineCount + 1;
+
+ file->writeNumberLine(_array.size(), indent);
+ file->writeNumberLine(_maxCharsPerLine, indent);
+ file->writeNumberLine(numLines, indent);
+
+ file->writeRect(_bounds, indent);
+ file->writeNumberLine(_field3C, indent);
+ file->writeNumberLine(_field40, indent);
+ file->writeNumberLine(_field44, indent);
+ file->writeNumberLine(_backR, indent);
+ file->writeNumberLine(_backG, indent);
+ file->writeNumberLine(_backB, indent);
+ file->writeNumberLine(_textR, indent);
+ file->writeNumberLine(_textG, indent);
+ file->writeNumberLine(_textB, indent);
+ file->writeNumberLine(_hasBorder, indent);
+ file->writeNumberLine(_scrollTop, indent);
+
+ for (int idx = 0; idx < numLines; ++idx) {
+ file->writeQuotedLine(_array[idx]._line, indent);
+ file->writeQuotedLine(_array[idx]._rgb, indent);
+ file->writeQuotedLine(_array[idx]._string3, indent);
+ }
+}
+
void CPetText::draw(CScreenManager *screenManager) {
Rect tempRect = _bounds;
diff --git a/engines/titanic/pet_control/pet_text.h b/engines/titanic/pet_control/pet_text.h
index a3d136a2d4..dd1547bff4 100644
--- a/engines/titanic/pet_control/pet_text.h
+++ b/engines/titanic/pet_control/pet_text.h
@@ -111,6 +111,11 @@ public:
void load(SimpleFile *file, int param);
/**
+ * Save the data for the control
+ */
+ void save(SimpleFile *file, int indent) const;
+
+ /**
* Set the bounds for the control
*/
void setBounds(const Rect &bounds) { _bounds = bounds; }