aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/lab.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/lab.h')
-rw-r--r--engines/lab/lab.h66
1 files changed, 41 insertions, 25 deletions
diff --git a/engines/lab/lab.h b/engines/lab/lab.h
index b03b4b3605..08f7fc6174 100644
--- a/engines/lab/lab.h
+++ b/engines/lab/lab.h
@@ -37,6 +37,8 @@
#include "engines/engine.h"
+#include "lab/image.h"
+
struct ADGameDescription;
namespace Lab {
@@ -91,20 +93,28 @@ class LabEngine : public Engine {
private:
bool _interfaceOff;
bool _isCrumbWaiting;
+ bool _lastTooLong;
+ bool _lastPage;
bool _mainDisplay;
bool _noUpdateDiff;
bool _quitLab;
- bool _lastTooLong;
int _lastWaitTOFTicks;
uint16 _direction;
+ uint16 _highPalette[20];
+ uint16 _journalPage;
uint16 _maxRooms;
+ uint16 _monitorPage;
+ uint16 _monitorGadgetHeight;
uint32 _extraGameFeatures;
+ char *_journalText;
+ char *_journalTextTitle;
const char *_nextFileName;
const char *_newFileName;
+ const char *_monitorTextFilename;
CloseDataPtr _closeDataPtr;
GadgetList _journalGadgetList;
@@ -114,9 +124,15 @@ private:
Image *_imgMapEast, *_imgMapSouth, *_imgMapWest, *_imgXMark;
InventoryData *_inventory;
MapData *_maps;
+ byte *_blankJournal;
+ Image *_monitorButton;
+ TextFont *_journalFont;
Common::RandomSource _rnd;
+ Image journalBackImage;
+ Image ScreenImage;
+
public:
bool _alternate;
bool _droppingCrumbs;
@@ -176,62 +192,62 @@ public:
void waitTOF();
private:
+ bool checkConditions(int16 *condition);
Gadget *checkNumGadgetHit(GadgetList *gadgetList, uint16 key);
void decIncInv(uint16 *CurInv, bool dec);
+ void doActions(Action *actionList, CloseDataPtr *closePtrList);
+ bool doActionRule(Common::Point pos, int16 action, int16 roomNum, CloseDataPtr *closePtrList);
+ bool doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
+ bool doCloseUp(CloseDataPtr closePtr);
+ bool doGoForward(CloseDataPtr *closePtrList);
void doJournal();
+ bool doMainView(CloseDataPtr *closePtrList);
void doMap(uint16 curRoom);
void doMonitor(char *background, char *textfile, bool isinteractive, uint16 x1, uint16 y1, uint16 x2, uint16 y2);
void doNotes();
+ bool doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
+ bool doOperateRule(Common::Point pos, int16 ItemNum, CloseDataPtr *closePtrList);
+ bool doTurn(uint16 from, uint16 to, CloseDataPtr *closePtrList);
+ bool doUse(uint16 curInv);
void doWestPaper();
void drawDirection(CloseDataPtr closePtr);
void drawJournal(uint16 wipenum, bool needFade);
+ void drawJournalText();
void drawMap(uint16 curRoom, uint16 curMsg, uint16 floorNum, bool fadeOut, bool fadeIn);
void drawMonText(char *text, TextFont *monitorFont, uint16 x1, uint16 y1, uint16 x2, uint16 y2, bool isinteractive);
+ void drawRoomMap(uint16 curRoom, bool drawMarkFl);
void drawRoomMessage(uint16 curInv, CloseDataPtr closePtr);
void drawStaticMessage(byte index);
void eatMessages();
+ CloseDataPtr findClosePtrMatch(CloseDataPtr closePtr, CloseDataPtr closePtrList);
+ bool floorVisited(uint16 floorNum);
int followCrumbs();
void freeMapData();
+ void freeScreens();
bool fromCrumbs(uint32 tmpClass, uint16 code, uint16 qualifier, Common::Point tmpPos,
uint16 &curInv, IntuiMessage *curMsg, bool &forceDraw, uint16 gadgetId, uint16 &actionMode);
- void interfaceOff();
- void interfaceOn();
- void loadJournalData();
- void loadMapData();
- void processJournal();
- void processMap(uint16 curRoom);
- void processMonitor(char *ntext, TextFont *monitorFont, bool isinteractive, uint16 x1, uint16 y1, uint16 x2, uint16 y2);
-
-private:
- bool checkConditions(int16 *condition);
- void doActions(Action *actionList, CloseDataPtr *closePtrList);
- bool doActionRule(Common::Point pos, int16 action, int16 roomNum, CloseDataPtr *closePtrList);
- bool doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
- bool doCloseUp(CloseDataPtr closePtr);
- bool doGoForward(CloseDataPtr *closePtrList);
- bool doMainView(CloseDataPtr *closePtrList);
- bool doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
- bool doOperateRule(Common::Point pos, int16 ItemNum, CloseDataPtr *closePtrList);
- bool doTurn(uint16 from, uint16 to, CloseDataPtr *closePtrList);
- bool doUse(uint16 curInv);
- void drawRoomMap(uint16 curRoom, bool drawMarkFl);
- CloseDataPtr findClosePtrMatch(CloseDataPtr closePtr, CloseDataPtr closePtrList);
- bool floorVisited(uint16 floorNum);
- void freeScreens();
const char *getInvName(uint16 curInv);
uint16 getLowerFloor(uint16 floorNum);
CloseData *getObject(Common::Point pos, CloseDataPtr closePtr);
uint16 getUpperFloor(uint16 floorNum);
ViewData *getViewData(uint16 roomNum, uint16 direction);
+ void interfaceOff();
+ void interfaceOn();
+ void loadJournalData();
+ void loadMapData();
void mainGameLoop();
void mayShowCrumbIndicator();
void mayShowCrumbIndicatorOff();
void perFlipGadget(uint16 gadID);
uint16 processArrow(uint16 curDirection, uint16 arrow);
+ void processJournal();
+ void processMap(uint16 curRoom);
+ void processMonitor(char *ntext, TextFont *monitorFont, bool isinteractive, uint16 x1, uint16 y1, uint16 x2, uint16 y2);
Common::Rect roomCoords(uint16 curRoom);
bool saveRestoreGame();
void setCurrentClose(Common::Point pos, CloseDataPtr *closePtrList, bool useAbsoluteCoords);
bool takeItem(uint16 x, uint16 y, CloseDataPtr *closePtrList);
+ void turnPage(bool fromLeft);
};
extern LabEngine *g_lab;