/* 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 DREAMBASE_H #define DREAMBASE_H #include "common/scummsys.h" #include "dreamweb/segment.h" namespace DreamWeb { class DreamWebEngine; } namespace DreamGen { /** * This class is one of the parent classes of DreamGenContext. Its sole purpose * is to allow us to incrementally move things out of DreamGenContext into this * base class, as soon as they don't modify any context registers (ax, bx, cx, ...) * anymore. * Ultimately, DreamGenContext should be empty, at which point it can be removed * together with class Context. When that happens, we can probably merge * DreamBase into DreamWebEngine. */ class DreamBase : public SegmentManager { protected: DreamWeb::DreamWebEngine *engine; // from object.cpp uint16 _openChangeSize; // from pathfind.cpp Common::Point _lineData[200]; // Output of Bresenham // from saveload.cpp char _saveNames[17*7]; char _saveNamesOld[17*7]; public: DreamBase(DreamWeb::DreamWebEngine *en); public: // from backdrop.cpp void drawFlags(); // from keypad.cpp void getUnderMenu(); void putUnderMenu(); void singleKey(uint8 key, uint16 x, uint16 y); void loadKeypad(); void showKeypad(); bool isItRight(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3); void addToPressList(); void buttonOne(); void buttonTwo(); void buttonThree(); void buttonFour(); void buttonFive(); void buttonSix(); void buttonSeven(); void buttonEight(); void buttonNine(); void buttonNought(); void buttonEnter(); void buttonPress(uint8 buttonId); void showOuterPad(); void dumpKeypad(); void dumpSymbol(); void dumpSymBox(); void quitSymbol(); // from monitor.cpp void input(); byte makeCaps(byte c); void delChar(); void monMessage(uint8 index); void netError(); void monitorLogo(); void randomAccess(uint16 count); void printOuterMon(); void showCurrentFile(); void accessLightOn(); void accessLightOff(); void turnOnPower(); void powerLightOn(); void powerLightOff(); void printLogo(); void scrollMonitor(); const char *monPrint(const char *string); void lockLightOn(); void lockLightOff(); // from object.cpp void obIcons(); void fillRyan(); void findAllRyan(uint8 *inv); void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y); void obPicture(); // from pathfind.cpp void turnPathOn(uint8 param); void turnPathOff(uint8 param); void turnAnyPathOn(uint8 param, uint8 room); void turnAnyPathOff(uint8 param, uint8 room); RoomPaths *getRoomsPaths(); void faceRightWay(); void setWalk(); void autoSetWalk(); void checkDest(const RoomPaths *roomsPaths); void findXYFromPath(); bool checkIfPathIsOn(uint8 index); void bresenhams(); void workoutFrames(); // from people.cpp void madmanText(); void madman(ReelRoutine &routine); void madMode(); void addToPeopleList(ReelRoutine *routine); bool checkSpeed(ReelRoutine &routine); void sparkyDrip(ReelRoutine &routine); void genericPerson(ReelRoutine &routine); void gamer(ReelRoutine &routine); void eden(ReelRoutine &routine); void sparky(ReelRoutine &routine); void rockstar(ReelRoutine &routine); void madmansTelly(ReelRoutine &routine); void smokeBloke(ReelRoutine &routine); void manAsleep(ReelRoutine &routine); void drunk(ReelRoutine &routine); void introMagic1(ReelRoutine &routine); void introMagic2(ReelRoutine &routine); void introMagic3(ReelRoutine &routine); void introMusic(ReelRoutine &routine); void candles(ReelRoutine &routine); void candles1(ReelRoutine &routine); void candles2(ReelRoutine &routine); void smallCandle(ReelRoutine &routine); void gates(ReelRoutine &routine); void security(ReelRoutine &routine); void edenInBath(ReelRoutine &routine); void louis(ReelRoutine &routine); void handClap(ReelRoutine &routine); void carParkDrip(ReelRoutine &routine); void foghornSound(ReelRoutine &routine); void train(ReelRoutine &routine); void attendant(ReelRoutine &routine); void keeper(ReelRoutine &routine); void interviewer(ReelRoutine &routine); void drinker(ReelRoutine &routine); void alleyBarkSound(ReelRoutine &routine); void louisChair(ReelRoutine &routine); void bossMan(ReelRoutine &routine); void priest(ReelRoutine &routine); void monkAndRyan(ReelRoutine &routine); void copper(ReelRoutine &routine); void introMonks1(ReelRoutine &routine); void introMonks2(ReelRoutine &routine); void soldier1(ReelRoutine &routine); void receptionist(ReelRoutine &routine); void bartender(ReelRoutine &routine); void heavy(ReelRoutine &routine); void helicopter(ReelRoutine &routine); //void mugger(ReelRoutine &routine); void businessMan(ReelRoutine &routine); void endGameSeq(ReelRoutine &routine); void poolGuard(ReelRoutine &routine); // from print.cpp uint8 getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount); void printChar(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height); void printChar(const Frame* charSet, uint16 x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height); void printBoth(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar); uint8 printDirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered); uint8 printDirect(const uint8* string, uint16 x, uint16 y, uint8 maxWidth, bool centered); uint8 getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset); uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width); uint8 printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered); uint16 waitFrames(); void printCurs(); void delCurs(); // from saveload.cpp void oldToNames(); void namesToOld(); void showMainOps(); void showDiscOps(); void showNames(); // from sound.cpp bool loadSpeech(byte type1, int idx1, byte type2, int idx2); void volumeAdjust(); void cancelCh0(); void cancelCh1(); void loadRoomsSample(); void playChannel0(uint8 index, uint8 repeat); void playChannel1(uint8 index); // from sprite.cpp Sprite *spriteTable(); void printSprites(); void printASprite(const Sprite *sprite); void clearSprites(); Sprite *makeSprite(uint8 x, uint8 y, uint16 updateCallback, uint16 frameData, uint16 somethingInDi); void initMan(); void walking(Sprite *sprite); void aboutTurn(Sprite *sprite); void backObject(Sprite *sprite); void constant(Sprite *sprite, SetObject *objData); void randomSprite(Sprite *sprite, SetObject *objData); void doorway(Sprite *sprite, SetObject *objData); void wideDoor(Sprite *sprite, SetObject *objData); void doDoor(Sprite *sprite, SetObject *objData, Common::Rect check); void steady(Sprite *sprite, SetObject *objData); void lockedDoorway(Sprite *sprite, SetObject *objData); void liftSprite(Sprite *sprite, SetObject *objData); Reel *getReelStart(uint16 reelPointer); const Frame *findSource(uint16 &frame); void showReelFrame(Reel *reel); void showGameReel(ReelRoutine *routine); const Frame *getReelFrameAX(uint16 frame); void moveMap(uint8 param); void checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY); uint8 getBlockOfPixel(uint8 x, uint8 y); Rain *splitIntoLines(uint8 x, uint8 y, Rain *rain); void initRain(); void intro1Text(); void intro2Text(uint16 nextReelPointer); void intro3Text(uint16 nextReelPointer); void rollEndCredits(); void monks2text(); void textForEnd(); void textForMonkHelper(uint8 textIndex, uint8 voiceIndex, uint8 x, uint8 y, uint16 countToTimed, uint16 timeCount); void textForMonk(); void priestText(ReelRoutine &routine); void soundOnReels(uint16 reelPointer); void clearBeforeLoad(); void clearReels(); void getRidOfReels(); void liftNoise(uint8 index); void checkForExit(Sprite *sprite); // from stubs.cpp bool isCD(); void crosshair(); void delTextLine(); void showBlink(); void dumpBlink(); void dumpPointer(); void showPointer(); void delPointer(); void showRyanPage(); void switchRyanOn(); void switchRyanOff(); Frame *tempGraphics(); Frame *tempGraphics2(); Frame *tempGraphics3(); void showArrows(); void showOpBox(); void middlePanel(); void showDiary(); void readMouse(); uint16 readMouseState(); void hangOn(uint16 frameCount); bool quitRequested(); void lockMon(); uint8 *textUnder(); void readKey(); void findOrMake(uint8 index, uint8 value, uint8 type); DynObject *getFreeAd(uint8 index); DynObject *getExAd(uint8 index); DynObject *getEitherAdCPP(); void *getAnyAdDir(uint8 index, uint8 flag); void showWatch(); void showTime(); void showExit(); void showMan(); void panelIcons1(); SetObject *getSetAd(uint8 index); void *getAnyAd(uint8 *value1, uint8 *value2); const uint8 *getTextInFile1(uint16 index); uint8 findNextColon(const uint8 **string); void allocateBuffers(); uint16 allocateMem(uint16 paragraphs); void deallocateMem(uint16 segment); uint16 allocateAndLoad(unsigned int size); uint16 standardLoad(const char *fileName, uint16 *outSizeInBytes = NULL); // Returns a segment handle which needs to be freed with deallocatemem for symmetry void *standardLoadCPP(const char *fileName, uint16 *outSizeInBytes = NULL); // And this one should be 'free'd void loadIntoTemp(const char *fileName); void loadIntoTemp2(const char *fileName); void loadIntoTemp3(const char *fileName); void loadTempCharset(const char *fileName); void loadTravelText(); void loadTempText(const char *fileName); void clearAndLoad(uint8 *buf, uint8 c, unsigned int size, unsigned int maxSize); void clearAndLoad(uint16 seg, uint8 c, unsigned int size, unsigned int maxSize); void sortOutMap(); void loadRoomData(const Room &room, bool skipDat); void useTempCharset(); void useCharset1(); void printMessage(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered); void printMessage2(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered, uint8 count); bool isItDescribed(const ObjPos *objPos); void zoomIcon(); void roomName(); void showIcon(); void eraseOldObs(); void commandOnly(uint8 command); void blank(); void setTopLeft(); void setTopRight(); void setBotLeft(); void setBotRight(); void examIcon(); void animPointer(); void getFlagUnderP(uint8 *flag, uint8 *flagEx); void workToScreenM(); void quitKey(); void restoreReels(); void loadFolder(); void folderHints(); void folderExit(); void showFolder(); void showLeftPage(); void showRightPage(); void underTextLine(); void hangOnP(uint16 count); void getUnderZoom(); void putUnderZoom(); void examineInventory(); void openInv(); void getBack1(); void getBackFromOb(); void getBackFromOps(); void getBackToOps(); void DOSReturn(); bool isItWorn(const DynObject *object); bool compare(uint8 index, uint8 flag, const char id[4]); void hangOnW(uint16 frameCount); void getRidOfTemp(); void getRidOfTempText(); void getRidOfTemp2(); void getRidOfTemp3(); void getRidOfTempCharset(); void getRidOfTempsP(); void getRidOfAll(); void placeSetObject(uint8 index); void removeSetObject(uint8 index); bool isSetObOnMap(uint8 index); void dumpZoom(); void diaryKeyP(); void diaryKeyN(); void findRoomInLoc(); void loadMenu(); void showMenu(); void dumpMenu(); void dealWithSpecial(uint8 firstParam, uint8 secondParam); void plotReel(uint16 &reelPointer); void setupTimedTemp(uint8 textIndex, uint8 voiceIndex, uint8 x, uint8 y, uint16 countToTimed, uint16 timeCount); void getUnderTimed(); void putUnderTimed(); void dumpTextLine(); void useTimedText(); void dumpTimedText(); void getTime(); void doChange(uint8 index, uint8 value, uint8 type); bool isRyanHolding(const char *id); void clearBuffers(); void clearChanges(); // from use.cpp void placeFreeObject(uint8 index); void removeFreeObject(uint8 index); void setupTimedUse(uint16 offset, uint16 countToTimed, uint16 timeCount, byte x, byte y); // from vgafades.cpp uint8 *mainPalette(); uint8 *startPalette(); uint8 *endPalette(); void clearStartPal(); void clearEndPal(); void palToStartPal(); void endPalToStart(); void startPalToEnd(); void palToEndPal(); void fadeDOS(); void doFade(); void fadeCalculation(); void fadeScreenUp(); void fadeScreenUps(); void fadeScreenUpHalf(); void fadeScreenDown(); void fadeScreenDowns(); void fadeScreenDownHalf(); void clearPalette(); void greyscaleSum(); void allPalette(); void dumpCurrent(); // from vgagrafx.cpp uint8 _workspace[(0x1000 + 2) * 16]; inline uint8 *workspace() { return _workspace; } void clearWork(); uint8 getLocation(uint8 index); void setLocation(uint8 index); void getUnderCentre(); void putUnderCentre(); uint8 *mapStore(); void panelToMap(); void mapToPanel(); void dumpMap(); void transferInv(); void multiGet(uint8 *dst, uint16 x, uint16 y, uint8 width, uint8 height); void multiPut(const uint8 *src, uint16 x, uint16 y, uint8 width, uint8 height); void multiDump(uint16 x, uint16 y, uint8 width, uint8 height); void workToScreenCPP(); void printUnderMon(); void cls(); void frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y); void frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); void frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); void frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y); void doShake(); void vSync(); void setMode(); void showPCX(const Common::String &name); void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height); void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag); void loadPalFromIFF(); void createPanel(); void createPanel2(); void showPanel(); void entryTexts(); }; } // End of namespace DreamGen #endif