diff options
Diffstat (limited to 'saga/interface.h')
-rw-r--r-- | saga/interface.h | 466 |
1 files changed, 0 insertions, 466 deletions
diff --git a/saga/interface.h b/saga/interface.h deleted file mode 100644 index bee3fd4a2a..0000000000 --- a/saga/interface.h +++ /dev/null @@ -1,466 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2004-2006 The ScummVM project - * - * The ReInherit Engine is (C)2000-2003 by Daniel Balsom. - * - * 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. - * - * $URL$ - * $Id$ - * - */ - -// Game interface module private header file - -#ifndef SAGA_INTERFACE_H__ -#define SAGA_INTERFACE_H__ - -#include "common/savefile.h" - -#include "saga/sprite.h" -#include "saga/script.h" - -namespace Saga { - -enum InterfaceUpdateFlags { - UPDATE_MOUSEMOVE = 1, - UPDATE_LEFTBUTTONCLICK = 2, - UPDATE_RIGHTBUTTONCLICK = 4, - UPDATE_MOUSECLICK = UPDATE_LEFTBUTTONCLICK | UPDATE_RIGHTBUTTONCLICK, - UPDATE_WHEELUP = 8, - UPDATE_WHEELDOWN = 16 -}; - -#define CONVERSE_MAX_TEXTS 64 -#define CONVERSE_MAX_WORK_STRING 128 - -#define ITE_INVENTORY_SIZE 24 - -#define VERB_STRLIMIT 32 - -#define STATUS_TEXT_LEN 128 -#define STATUS_TEXT_INPUT_MAX 256 - -// Converse-specific stuff - -enum PanelModes { - kPanelNull, - kPanelMain, - kPanelOption, - kPanelSave, //ex- kPanelTextBox, - kPanelQuit, - kPanelError, - kPanelLoad, - kPanelConverse, - kPanelProtect, - kPanelPlacard, - kPanelMap, - kPanelSceneSubstitute, - kPanelChapterSelection, - kPanelCutaway, - kPanelVideo, - kPanelBoss -// kPanelInventory -}; - -enum FadeModes { - kNoFade = 0, - kFadeIn, - kFadeOut -}; - -struct InterfacePanel { - int x; - int y; - byte *image; - size_t imageLength; - int imageWidth; - int imageHeight; - - PanelButton *currentButton; - int buttonsCount; - PanelButton *buttons; - SpriteList sprites; - - InterfacePanel() { - x = y = 0; - image = NULL; - imageLength = 0; - imageWidth = imageHeight = 0; - currentButton = NULL; - buttonsCount = 0; - buttons = NULL; - } - - PanelButton *getButton(int index) { - if ((index >= 0) && (index < buttonsCount)) { - return &buttons[index]; - } - return NULL; - } - - void getRect(Rect &rect) { - rect.left = x; - rect.top = y; - rect.setWidth(imageWidth); - rect.setHeight(imageHeight); - } - - void calcPanelButtonRect(const PanelButton* panelButton, Rect &rect) { - rect.left = x + panelButton->xOffset; - rect.right = rect.left + panelButton->width; - rect.top = y + panelButton->yOffset; - rect.bottom = rect.top + panelButton->height; - } - - PanelButton *hitTest(const Point& mousePoint, int buttonType) { - PanelButton *panelButton; - Rect rect; - int i; - for (i = 0; i < buttonsCount; i++) { - panelButton = &buttons[i]; - if (panelButton != NULL) { - if ((panelButton->type & buttonType) > 0) { - calcPanelButtonRect(panelButton, rect); - if (rect.contains(mousePoint)) { - return panelButton; - } - } - } - } - return NULL; - } - - void zeroAllButtonState() { - int i; - for (i = 0; i < buttonsCount; i++) { - buttons[i].state = 0; - } - } - - -}; - -struct Converse { - char *text; - int stringNum; - int textNum; - int replyId; - int replyFlags; - int replyBit; -}; - - -enum StatusTextInputState { - kStatusTextInputFirstRun, - kStatusTextInputEntered, - kStatusTextInputAborted -}; - -class Interface { -public: - Interface(SagaEngine *vm); - ~Interface(void); - - int activate(); - int deactivate(); - void setSaveReminderState(int state) { - _saveReminderState = state; - draw(); - } - int getSaveReminderState() { - return _saveReminderState; - } - bool isActive() { return _active; } - void setMode(int mode); - int getMode(void) const { return _panelMode; } - void setFadeMode(int fadeMode) { - _fadeMode = fadeMode; - draw(); - } - int getFadeMode() const { - return _fadeMode; - } - void rememberMode(); - void restoreMode(); - bool isInMainMode() { return _inMainMode; } - void setStatusText(const char *text, int statusColor = -1); - void loadScenePortraits(int resourceId); - void setLeftPortrait(int portrait) { - _leftPortrait = portrait; - draw(); - } - void setRightPortrait(int portrait) { - _rightPortrait = portrait; - draw(); - } - void setPortraitBgColor(int red, int green, int blue) { - _portraitBgColor.red = red; - _portraitBgColor.green = green; - _portraitBgColor.blue = blue; - } - - void draw(); - void drawOption(); - void drawQuit(); - void drawLoad(); - void drawSave(); - void drawProtect(); - void update(const Point& mousePoint, int updateFlag); - void drawStatusBar(); - void setVerbState(int verb, int state); - - bool processAscii(uint16 ascii, bool synthetic = false); - void processKeyUp(uint16 ascii); - - void keyBoss(); - void keyBossExit(); - - void disableAbortSpeeches(bool d) { _disableAbortSpeeches = d; } - - bool _textInput; - - bool _statusTextInput; - StatusTextInputState _statusTextInputState; - char _statusTextInputString[STATUS_TEXT_INPUT_MAX]; - void enterStatusString() { - _statusTextInput = true; - _statusTextInputPos = 0; - _statusTextInputString[0] = 0; - setStatusText(_statusTextInputString); - } - -private: - static void textInputRepeatCallback(void *refCon); - - void drawInventory(Surface *backBuffer); - void updateInventory(int pos); - void inventoryChangePos(int chg); - void inventorySetPos(int key); - -public: - void refreshInventory() { - updateInventory(_inventoryCount); - draw(); - } - void addToInventory(int objectId); - void removeFromInventory(int objectId); - void clearInventory(); - int inventoryItemPosition(int objectId); - int getInventoryContentByPanelButton(PanelButton * panelButton) { - int cell = _inventoryStart + panelButton->id; - if (cell >= _inventoryCount) { - return 0; - } - return _inventory[cell]; - } - - PanelButton *inventoryHitTest(const Point& mousePoint) { - return _mainPanel.hitTest(mousePoint, kPanelButtonInventory); - } - PanelButton *verbHitTest(const Point& mousePoint){ - return _mainPanel.hitTest(mousePoint, kPanelButtonVerb); - } - void saveState(Common::OutSaveFile *out); - void loadState(Common::InSaveFile *in); - - void mapPanelDrawCrossHair(); - - int32 getProtectHash() { return _protectHash; } - -private: - void handleMainUpdate(const Point& mousePoint); // main panel update - void handleMainClick(const Point& mousePoint); // main panel click - - PanelButton *converseHitTest(const Point& mousePoint) { - return _conversePanel.hitTest(mousePoint, kPanelAllButtons); - } - void handleConverseUpdate(const Point& mousePoint); // converse panel update - void handleConverseClick(const Point& mousePoint); // converse panel click - - PanelButton *optionHitTest(const Point& mousePoint) { - return _optionPanel.hitTest(mousePoint, kPanelButtonOptionSaveFiles | kPanelButtonOption | kPanelButtonOptionSlider); - } - void handleOptionUpdate(const Point& mousePoint); // option panel update - void handleOptionClick(const Point& mousePoint); // option panel click - - PanelButton *quitHitTest(const Point& mousePoint) { - return _quitPanel.hitTest(mousePoint, kPanelAllButtons); - } - void handleQuitUpdate(const Point& mousePoint); // quit panel update - void handleQuitClick(const Point& mousePoint); // quit panel click - - PanelButton *loadHitTest(const Point& mousePoint) { - return _loadPanel.hitTest(mousePoint, kPanelAllButtons); - } - void handleLoadUpdate(const Point& mousePoint); // load panel update - void handleLoadClick(const Point& mousePoint); // load panel click - - PanelButton *saveHitTest(const Point& mousePoint) { - return _savePanel.hitTest(mousePoint, kPanelAllButtons); - } - void handleSaveUpdate(const Point& mousePoint); // save panel update - void handleSaveClick(const Point& mousePoint); // save panel click - - void handleChapterSelectionUpdate(const Point& mousePoint); - void handleChapterSelectionClick(const Point& mousePoint); - - void mapPanelShow(); - void mapPanelClean(); - - void lockMode() { _lockedMode = _panelMode; } - void unlockMode() { _panelMode = _lockedMode; } - - void setOption(PanelButton *panelButton); - void setQuit(PanelButton *panelButton); - void setLoad(PanelButton *panelButton); - void setSave(PanelButton *panelButton); - - void drawTextInput(Surface *ds, InterfacePanel *panel, PanelButton *panelButton); - void drawPanelText(Surface *ds, InterfacePanel *panel, PanelButton *panelButton); - void drawPanelButtonText(Surface *ds, InterfacePanel *panel, PanelButton *panelButton); - enum ButtonKind { - kButton, - kSlider, - kEdit - }; - void drawButtonBox(Surface *ds, const Rect &rect, ButtonKind kind, bool down); - void drawPanelButtonArrow(Surface *ds, InterfacePanel *panel, PanelButton *panelButton); - void drawVerbPanelText(Surface *ds, PanelButton *panelButton, KnownColor textKnownColor, KnownColor textShadowKnownColor); - void drawVerbPanel(Surface *backBuffer, PanelButton* panelButton); - void calcOptionSaveSlider(); - bool processTextInput(uint16 ascii); - void processStatusTextInput(uint16 ascii); - void textInputStartRepeat(uint16 ascii); - void textInputRepeat(void); - -public: - void converseInit(void); - void converseClear(void); - bool converseAddText(const char *text, int replyId, byte replyFlags, int replyBit); - void converseDisplayText(); - void converseSetTextLines(int row); - void converseChangePos(int chg); - void converseSetPos(int key); - -private: - void converseDisplayTextLines(Surface *ds); - PanelButton *getPanelButtonByVerbType(int verb) { - if ((verb < 0) || (verb >= kVerbTypeIdsMax)) { - error("Interface::getPanelButtonByVerbType wrong verb"); - } - return _verbTypeToPanelButton[verb]; - } - - void validateOptionButtons() { - if (!_vm->isSaveListFull() && (_optionSaveFileTitleNumber == 0) && (_optionPanel.currentButton != NULL)) { - if (_optionPanel.currentButton->id == kTextLoad) { - _optionPanel.currentButton = NULL; - } - } - } - void validateSaveButtons() { - if ((_textInputStringLength == 0) && (_savePanel.currentButton != NULL)) { - if (_savePanel.currentButton->id == kTextSave) { - _savePanel.currentButton = NULL; - } - } - } - -public: - SpriteList _defPortraits; - -private: - SagaEngine *_vm; - - ResourceContext *_interfaceContext; - InterfacePanel _mainPanel; - PanelButton *_inventoryUpButton; - PanelButton *_inventoryDownButton; - InterfacePanel _conversePanel; - PanelButton *_converseUpButton; - PanelButton *_converseDownButton; - SpriteList _scenePortraits; - PanelButton *_verbTypeToPanelButton[kVerbTypeIdsMax]; - InterfacePanel _optionPanel; - PanelButton * _optionSaveFileSlider; - PanelButton * _optionSaveFilePanel; - InterfacePanel _quitPanel; - InterfacePanel _loadPanel; - InterfacePanel _savePanel; - PanelButton * _saveEdit; - InterfacePanel _protectPanel; - PanelButton * _protectEdit; - - bool _disableAbortSpeeches; - - int _saveReminderState; - bool _active; - int _fadeMode; - int _panelMode; - int _savedMode; - int _lockedMode; - int _bossMode; - bool _inMainMode; - char _statusText[STATUS_TEXT_LEN]; - int _statusOnceColor; - int _leftPortrait; - int _rightPortrait; - PalEntry _portraitBgColor; - - Point _lastMousePoint; - - uint16 *_inventory; - int _inventorySize; - int _inventoryStart; - int _inventoryEnd; - int _inventoryPos; - int _inventoryBox; - int _inventoryCount; - - char _converseWorkString[CONVERSE_MAX_WORK_STRING]; - Converse _converseText[CONVERSE_MAX_TEXTS]; - int _converseTextCount; - int _converseStrCount; - int _converseStartPos; - int _converseEndPos; - int _conversePos; - - uint _optionSaveFileTop; - uint _optionSaveFileTitleNumber; - int16 _optionSaveFileMouseOff; - Rect _optionSaveRectTop; - Rect _optionSaveRectSlider; - Rect _optionSaveRectBottom; - - char _textInputString[SAVE_TITLE_SIZE]; - uint _textInputStringLength; - uint _textInputPos; - uint _textInputMaxWidth; - - uint _statusTextInputPos; - - int _textInputRepeatPhase; - uint16 _textInputRepeatChar; - - PalEntry _mapSavedPal[PAL_ENTRIES]; - bool _mapPanelCrossHairState; - - int32 _protectHash; -}; - -} // End of namespace Saga - -#endif /* INTERFACE_H__ */ |