diff options
author | Paul Gilbert | 2015-05-28 08:31:53 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-05-28 08:31:53 -0400 |
commit | f4902b516ec8486338b777354809171112671e5b (patch) | |
tree | 2d286bb33818babf3eade15e5babec8570ba3e7e /engines/sherlock/scalpel/scalpel_user_interface.h | |
parent | 45b4989b55a043a9d2f1806db375d9f91476ed89 (diff) | |
download | scummvm-rg350-f4902b516ec8486338b777354809171112671e5b.tar.gz scummvm-rg350-f4902b516ec8486338b777354809171112671e5b.tar.bz2 scummvm-rg350-f4902b516ec8486338b777354809171112671e5b.zip |
SHERLOCK: Moving split up classes into their own files
Diffstat (limited to 'engines/sherlock/scalpel/scalpel_user_interface.h')
-rw-r--r-- | engines/sherlock/scalpel/scalpel_user_interface.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/engines/sherlock/scalpel/scalpel_user_interface.h b/engines/sherlock/scalpel/scalpel_user_interface.h new file mode 100644 index 0000000000..8ed69ac8b5 --- /dev/null +++ b/engines/sherlock/scalpel/scalpel_user_interface.h @@ -0,0 +1,227 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef SHERLOCK_SCALPEL_UI_H +#define SHERLOCK_SCALPEL_UI_H + +#include "common/scummsys.h" +#include "sherlock/user_interface.h" + +namespace Sherlock { + +class Inventory; +class Talk; + +namespace Scalpel { + +extern const char COMMANDS[13]; +extern const int MENU_POINTS[12][4]; + +extern const int INVENTORY_POINTS[8][3]; +extern const char INVENTORY_COMMANDS[9]; +extern const char *const PRESS_KEY_FOR_MORE; +extern const char *const PRESS_KEY_TO_CONTINUE; + +class Settings; + +class ScalpelUserInterface: public UserInterface { + friend class Inventory; + friend class Settings; + friend class Talk; +private: + ImageFile *_controlPanel; + ImageFile *_controls; + char _keyPress; + int _lookHelp; + int _bgFound, _oldBgFound; + int _help, _oldHelp; + char _key, _oldKey; + int _temp, _oldTemp; + int _oldLook; + bool _keyboardInput; + bool _pause; + int _cNum; + Common::String _cAnimStr; + Common::String _descStr; + int _find; + int _oldUse; +private: + /** + * Draws the image for a user interface button in the down/pressed state. + */ + void depressButton(int num); + + /** + * If he mouse button is pressed, then calls depressButton to draw the button + * as pressed; if not, it will show it as released with a call to "restoreButton". + */ + void pushButton(int num); + + /** + * By the time this method has been called, the graphics for the button change + * have already been drawn. This simply takes care of switching the mode around + * accordingly + */ + void toggleButton(int num); + + /** + * Creates a text window and uses it to display the in-depth description + * of the highlighted object + */ + void examine(); + + /** + * Print the name of an object in the scene + */ + void lookScreen(const Common::Point &pt); + + /** + * Gets the item in the inventory the mouse is on and display's it's description + */ + void lookInv(); + + /** + * Handles input when the file list window is being displayed + */ + void doEnvControl(); + + /** + * Handle input whilst the inventory is active + */ + void doInvControl(); + + /** + * Handles waiting whilst an object's description window is open. + */ + void doLookControl(); + + /** + * Handles input until one of the user interface buttons/commands is selected + */ + void doMainControl(); + + /** + * Handles the input for the MOVE, OPEN, and CLOSE commands + */ + void doMiscControl(int allowed); + + /** + * Handles input for picking up items + */ + void doPickControl(); + + /** + * Handles input when in talk mode. It highlights the buttons and available statements, + * and handles allowing the user to click on them + */ + void doTalkControl(); + + /** + * Handles events when the Journal is active. + * @remarks Whilst this would in theory be better in the Journal class, since it displays in + * the user interface, it uses so many internal UI fields, that it sort of made some sense + * to put it in the UserInterface class. + */ + void journalControl(); + + /** + * Checks to see whether a USE action is valid on the given object + */ + void checkUseAction(const UseType *use, const Common::String &invName, const char *const messages[], + int objNum, bool giveMode); + + /** + * Called for OPEN, CLOSE, and MOVE actions are being done + */ + void checkAction(ActionType &action, const char *const messages[], int objNum); + + /** + * Print the previously selected object's decription + */ + void printObjectDesc(const Common::String &str, bool firstTime); +public: + ScalpelUserInterface(SherlockEngine *vm); + virtual ~ScalpelUserInterface(); + + /** + * Handles counting down whilst checking for input, then clears the info line. + */ + void whileMenuCounter(); + + /** + * Draws the image for the given user interface button in the up + * (not selected) position + */ + void restoreButton(int num); +public: + /** + * Resets the user interface + */ + virtual void reset(); + + /** + * Main input handler for the user interface + */ + virtual void handleInput(); + + /** + * Draw the user interface onto the screen's back buffers + */ + virtual void drawInterface(int bufferNum = 3); + + /** + * Displays a passed window by gradually scrolling it vertically on-screen + */ + virtual void summonWindow(const Surface &bgSurface, bool slideUp = true); + + /** + * Slide the window stored in the back buffer onto the screen + */ + virtual void summonWindow(bool slideUp = true, int height = CONTROLS_Y); + + /** + * Close a currently open window + * @param flag 0 = slide old window down, 1 = slide prior UI back up + */ + virtual void banishWindow(bool slideUp = true); + + /** + * Clears the info line of the screen + */ + virtual void clearInfo(); + + /** + * Clear any active text window + */ + virtual void clearWindow(); + + /** + * Print the previously selected object's decription + */ + virtual void printObjectDesc(); +}; + +} // End of namespace Scalpel + +} // End of namespace Sherlock + +#endif |