aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/journal.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/journal.h')
-rw-r--r--engines/sherlock/journal.h54
1 files changed, 53 insertions, 1 deletions
diff --git a/engines/sherlock/journal.h b/engines/sherlock/journal.h
index be5c4d77c3..d62b8338c0 100644
--- a/engines/sherlock/journal.h
+++ b/engines/sherlock/journal.h
@@ -25,12 +25,22 @@
#include "common/scummsys.h"
#include "common/array.h"
+#include "common/rect.h"
#include "common/serializer.h"
#include "common/str-array.h"
#include "common/stream.h"
namespace Sherlock {
+#define JOURNAL_MAX_WIDTH 230
+#define JOURNAL_MAX_CHARS 80
+
+enum JournalButton {
+ BTN_NONE, BTN_EXIT, BTN_BACK10, BTN_UP, BTN_DOWN, BTN_AHEAD110, BTN_SEARCH,
+ BTN_FIRST_PAGE, BTN_LAST_PAGE, BTN_PRINT_TEXT
+};
+
+
struct JournalEntry {
int _converseNum;
bool _replyOnly;
@@ -57,28 +67,70 @@ private:
int _page;
Common::String _find;
+ /**
+ * Load the list of location names that the journal will make reference to
+ */
void loadJournalLocations();
+ /**
+ * Loads the description for the current display index in the journal, and then
+ * word wraps the result to prepare it for being displayed
+ * @param alreadyLoaded Indicates whether the journal file is being loaded for the
+ * first time, or being reloaded
+ */
void loadJournalFile(bool alreadyLoaded);
+ /**
+ * Display the arrows that can be used to scroll up and down pages
+ */
void doArrows();
+ /**
+ * Displays a page of the journal at the current index
+ */
bool drawJournal(int direction, int howFar);
- int getFindName(bool printError);
+ /**
+ * Show the search submenu and allow the player to enter a search string
+ */
+ int getSearchString(bool printError);
+ /**
+ * Draw the journal background, frame, and interface buttons
+ */
void drawJournalFrame();
+
+ /**
+ * Returns the button, if any, that is under the specified position
+ */
+ JournalButton getHighlightedButton(const Common::Point &pt);
public:
Journal(SherlockEngine *vm);
+ /**
+ * Records statements that are said, in the order which they are said. The player
+ * can then read the journal to review them
+ */
void record(int converseNum, int statementNum, bool replyOnly = false);
+ /**
+ * Display the journal
+ */
void drawInterface();
+ /**
+ * Handle events whilst the journal is being displayed
+ */
bool handleEvents(int key);
+ /**
+ * Reset viewing position to the start of the journal
+ */
void resetPosition();
+ /**
+ * Synchronize the data for a savegame
+ */
void synchronize(Common::Serializer &s);
};