761 lines
18 KiB
C
Raw Normal View History

2016-09-14 23:42:19 +02:00
/* 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 3 of the License, or
* (at your option) any later version.
2016-09-14 23:42:19 +02:00
*
* 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, see <http://www.gnu.org/licenses/>.
2016-09-14 23:42:19 +02:00
*
*/
#ifndef CRYO_EDEN_H
#define CRYO_EDEN_H
#include "common/file.h"
2017-02-19 21:12:47 +01:00
#include "common/savefile.h"
#include "common/serializer.h"
2016-10-22 14:15:45 +03:00
#include "cryo/sound.h"
#include "cryo/defs.h"
2016-08-18 13:15:54 +02:00
enum Direction {
kCryoNorth = 0,
kCryoEast = 1,
kCryoSouth = 2,
kCryoWest = 3
};
2016-08-18 13:15:54 +02:00
namespace Cryo {
class CryoEngine;
class EdenGraphics;
2016-08-18 13:15:54 +02:00
class EdenGame {
private:
EdenGraphics *_graphics;
2016-08-18 13:15:54 +02:00
public:
EdenGame(CryoEngine *vm);
~EdenGame();
2016-09-30 07:48:27 +02:00
void run();
object_t *getObjectPtr(int16 id);
void showObjects();
void saveFriezes();
void useBank(int16 bank);
void musicspy();
void fademusica0(int16 delay);
void wait(int howlong);
bool isObjectHere(int16 id);
void display();
void setMouseCenterX(uint16 xpos);
void setMouseCenterY(uint16 ypos);
void stopMusic();
uint16 getMouseCenterX();
uint16 getMouseCenterY();
bool dialoscansvmas(Dialog *dial);
void musique();
void preloadDialogs(int16 vid);
2021-04-07 01:24:49 +01:00
Common::SeekableReadStream *loadSubStream(uint16 num);
bool personIsTalking();
bool animationIsActive();
byte *getImageDesc();
byte *getPlaceRawBuf();
byte getActionCursor(byte value);
int16 getNumTextLines();
int16 getScrollPos();
/*
* Identify person based on current video number
*/
perso_t *personSubtitles();
int16 getGameIconY(int16 index);
int16 getGameIconX(int16 index);
byte *getGameDialogs();
bool getSpecialTextMode();
void setSpecialTextMode(bool value);
void setCursorSaved(bool cursorSaved);
bool getCursorSaved();
bool getNoPalette();
int16 getCurBankNum();
byte *getCurKeepBuf();
byte *getBankData();
int16 getCurPosX();
void setCurPosX(int16 xpos);
int16 getCurPosY();
void setCurPosY(int16 ypos);
byte *getGlowBuffer();
void setMusicFade(byte value);
bool isMouseHeld();
void setMouseHeld();
void setMouseNotHeld();
global_t *_globals; // TODO: Make private and use getters
CryoEngine *_vm;
private:
2016-09-26 23:44:42 +02:00
void removeConsole();
void scroll();
2016-09-26 23:44:42 +02:00
void resetScroll();
void scrollFrescoes();
2016-09-26 23:44:42 +02:00
void displayFrescoes();
void gametofresques();
2016-09-26 23:44:42 +02:00
void doFrescoes();
void actionEndFrescoes();
void scrollMirror();
2016-12-31 05:11:33 -08:00
void scrollPanel();
2016-10-07 23:06:10 +02:00
void displayFollower(Follower *follower, int16 x, int16 y);
2016-10-24 22:02:43 +02:00
void characterInMirror();
2016-12-31 05:11:33 -08:00
void gameToMirror(byte arg1);
2016-09-26 23:44:42 +02:00
void flipMode();
void quitMirror();
void clictimbre();
2016-12-28 03:43:13 -08:00
void actionClickValleyPlan();
void gotoPlace(Goto *go);
2016-09-14 23:48:01 +02:00
void deplaval(uint16 roomNum);
2016-09-26 23:44:42 +02:00
void move(Direction dir);
void move2(Direction dir);
2017-01-16 22:27:25 +01:00
void actionDinoBlow();
2016-12-25 23:14:03 -08:00
void actionPlateMonk();
void actionGraaFrescoe();
void actionLascFrescoe();
void actionPushStone();
void actionMummyHead();
void actionSkelettonHead();
void actionSkelettonMoorkong();
void actionChoose();
2016-12-19 13:41:00 -08:00
void handleDinaDialog();
2016-12-11 22:52:10 -08:00
void handleKingDialog();
2016-12-25 23:14:03 -08:00
void actionKingDialog1();
void actionKingDialog2();
void actionKingDialog3();
void actionGetKnife();
void actionGetPrism();
void actionGetMushroom();
void actionGetBadMushroom();
void actionGetGold();
void actionGetFullNest();
void actionGetEmptyNest();
void actionGetHorn();
void actionGetSunStone();
void actionGetEgg();
void actionGetTablet();
2016-12-25 23:14:03 -08:00
void actionLookLake();
void actionGotoHall();
void actionLabyrinthTurnAround();
void actionGotoFullNest();
void actionGotoVal();
void actionVisit();
void actionFinal();
2016-12-25 23:14:03 -08:00
void actionMoveNorth();
void actionMoveEast();
void actionMoveSouth();
void actionMoveWest();
void afficher128();
2016-09-27 07:53:50 +02:00
void restoreFriezes();
2016-12-25 02:17:07 -08:00
void useMainBank();
void useCharacterBank();
void drawTopScreen();
2016-09-29 00:32:49 +02:00
void displayValleyMap();
void displayMapMark(int16 index, int16 location);
void displayAdamMapMark(int16 location);
void restoreAdamMapMark();
void saveAdamMapMark(int16 x, int16 y);
bool istrice(int16 roomNum);
bool istyran(int16 roomNum);
void istyranval(Area *area);
2016-09-29 00:32:49 +02:00
char getDirection(perso_t *perso);
bool canMoveThere(char loc, perso_t *perso);
void scramble1(uint8 elem[4]);
void scramble2(uint8 elem[4]);
2016-12-26 13:40:28 -08:00
void scrambleDirections();
2016-09-29 00:32:49 +02:00
bool naitredino(char persoType);
void newCitadel(char area, int16 level, Room *room);
2016-12-26 13:40:28 -08:00
void evolveCitadel(int16 level);
2016-12-15 22:47:29 -08:00
void destroyCitadelRoom(int16 roomNum);
2017-01-14 00:30:37 +01:00
void narratorBuildCitadel();
void citadelFalls(char level);
2016-12-15 22:47:29 -08:00
void buildCitadel();
2016-12-18 13:09:56 -08:00
void moveDino(perso_t *perso);
void moveAllDino();
void newValley();
char whereIsCita();
bool isCita(int16 loc);
void placeVava(Area *area);
void vivredino();
2016-09-14 23:48:01 +02:00
void vivreval(int16 areaNum);
2017-01-15 22:59:50 +01:00
void handleDay();
void addTime(int16 t);
void animCharacter();
void getanimrnd();
void addanim();
2016-12-04 14:26:44 -08:00
void removeMouthSprite();
2017-01-15 22:59:50 +01:00
void AnimEndCharacter();
void setCharacterSprite(byte *spr);
void displayCharacter1();
void displayCharacter();
void ef_perso();
2016-12-04 14:26:44 -08:00
void loadCharacter(perso_t *perso);
2017-01-15 22:59:50 +01:00
void loadCurrCharacter();
void fin_perso();
void no_perso();
2016-12-28 03:43:13 -08:00
void closeCharacterScreen();
2016-10-07 23:06:10 +02:00
void displayBackgroundFollower();
2017-01-15 22:24:28 +01:00
void displayNoFollower(int16 bank);
2016-12-28 03:43:13 -08:00
void displayCharacterBackground1();
void displayCharacterBackground();
2016-12-04 14:26:44 -08:00
void setCharacterIcon();
void showCharacter();
2016-12-25 02:17:07 -08:00
void displayCharacterPanel();
void getDataSync();
2016-12-29 06:28:11 -08:00
int16 readFrameNumber();
2016-12-04 13:15:38 -08:00
void waitEndSpeak();
void my_bulle();
void my_pr_bulle();
2016-12-29 06:28:11 -08:00
void drawSubtitleChar(byte c, byte color, int16 width);
2016-12-29 06:28:11 -08:00
void patchSentence();
void vavapers();
void citadelle();
2017-01-14 00:30:37 +01:00
void selectZone();
2016-12-28 03:43:13 -08:00
void showEvents1();
2016-09-26 23:44:42 +02:00
void showEvents();
void parle_mfin();
void parlemoi_normal();
void parle_moi();
2017-01-14 00:30:37 +01:00
void initCharacterPointers(perso_t *perso);
void perso1(perso_t *perso);
void perso_normal(perso_t *perso);
2016-12-11 22:52:10 -08:00
void handleCharacterDialog(int16 pers);
2016-12-28 03:43:13 -08:00
void actionKing();
void actionDina();
void actionThoo();
void actionMonk();
void actionTormentor();
void actionMessenger();
void actionMango();
void actionEve();
void actionAzia();
void actionMammi();
void actionGuards();
void actionBamboo();
void actionKabuka();
void actionFisher();
void actionDino();
void actionTyran();
void actionMorkus();
void comment();
2016-12-28 03:43:13 -08:00
void actionAdam();
2016-12-04 13:15:38 -08:00
void setChoiceYes();
void setChoiceNo();
bool isAnswerYes();
void specialMushroom(perso_t *perso);
void specialEmptyNest(perso_t *perso);
void specialNestWithEggs(perso_t *perso);
2016-12-04 14:26:44 -08:00
void specialApple(perso_t *perso);
void specialGold(perso_t *perso);
void specialPrism(perso_t *perso);
void specialTalisman(perso_t *perso);
void specialMask(perso_t *perso);
void specialBag(perso_t *perso);
void specialTrumpet(perso_t *perso);
void specialWeapons(perso_t *perso);
void specialInstrument(perso_t *perso);
void specialEgg(perso_t *perso);
void tyranDies(perso_t *perso);
2016-12-11 22:52:10 -08:00
void specialObjects(perso_t *perso, char objid);
void dialautoon();
void dialautooff();
void follow();
void dialonfollow();
2017-01-14 00:30:37 +01:00
void abortDialogue();
void subHandleNarrator();
2017-01-14 00:30:37 +01:00
void handleNarrator();
void checkPhraseFile();
byte *getPhrase(int16 id);
2016-12-28 03:43:13 -08:00
void actionGotoMap();
void record();
2017-01-18 23:05:38 +01:00
bool dial_scan(Dialog *dial);
2017-01-15 22:59:50 +01:00
bool dialogEvent(perso_t *perso);
2017-01-14 00:30:37 +01:00
void characterStayHere();
void endDeath(int16 vid);
2017-01-15 22:59:50 +01:00
void chronoEvent();
2016-12-11 13:44:58 -08:00
void setChrono(int16 t);
void verifh(byte *ptr);
void openbigfile();
void closebigfile();
2016-12-07 15:04:25 -08:00
void loadRawFile(uint16 num, byte *buffer);
void loadIconFile(uint16 num, Icon *buffer);
void loadRoomFile(uint16 num, Room *buffer);
int loadSound(uint16 num);
void convertMacToPC();
void loadpermfiles();
bool ReadDataSyncVOC(unsigned int num);
bool ReadDataSync(uint16 num);
2016-10-08 23:31:21 +02:00
void loadpartoffile(uint16 num, void *buffer, int32 pos, int32 len);
2016-12-31 05:11:33 -08:00
void expandHSQ(byte *input, byte *output);
2016-12-11 13:44:58 -08:00
void addInfo(byte info);
void unlockInfo();
void nextInfo();
void removeInfo(byte info);
void updateInfoList();
2016-12-31 05:11:33 -08:00
void initGlobals();
2016-12-28 03:43:13 -08:00
void closeRoom();
2016-10-07 23:06:10 +02:00
void displayPlace();
void loadPlace(int16 num);
void specialoutside();
void specialout();
void specialin();
void animpiece();
void getdino(Room *room);
2016-12-19 13:41:00 -08:00
Room *getRoom(int16 loc);
2016-10-07 23:06:10 +02:00
void initPlace(int16 roomNum);
void maj2();
2016-12-19 13:41:00 -08:00
void updateRoom1(int16 roomNum);
void updateRoom(uint16 roomNum);
void allocateBuffers();
void freebuf();
void EmergencyExit();
void edmain();
void intro();
2016-12-31 05:11:33 -08:00
void enterGame();
2016-10-08 21:21:21 +02:00
void signon(const char *s);
void FRDevents();
Icon *scan_icon_list(int16 x, int16 y, int16 index);
2016-12-28 03:43:13 -08:00
void updateCursor();
void mouse();
2016-09-14 23:48:01 +02:00
void startmusique(byte num);
2016-09-14 23:48:01 +02:00
int loadmusicfile(int16 num);
void persovox();
2016-12-28 03:43:13 -08:00
void endCharacterSpeech();
void fademusicup();
2016-12-18 13:09:56 -08:00
void countObjects();
2016-12-04 14:26:44 -08:00
void winObject(int16 id);
2016-09-26 23:44:42 +02:00
void loseObject(int16 id);
2016-12-11 22:52:10 -08:00
void lostObject();
2016-09-14 23:48:01 +02:00
void objectmain(int16 id);
2016-12-11 22:52:10 -08:00
void getObject(int16 id);
2016-12-04 13:15:38 -08:00
void putObject();
2016-12-11 22:52:10 -08:00
void newObject(int16 id, int16 arg2);
2016-09-14 23:48:01 +02:00
void giveobjectal(int16 id);
2016-12-04 14:26:44 -08:00
void giveObject();
2016-12-28 03:43:13 -08:00
void actionTakeObject();
2016-12-18 13:09:56 -08:00
void newMushroom();
void newEmptyNest();
void newNestWithEggs();
2017-01-22 22:38:18 +01:00
void newGold();
2016-12-28 03:43:13 -08:00
void gotoPanel();
void noclicpanel();
void generique();
void cancel2();
void testvoice();
void load();
void initafterload();
void save();
void desktopcolors();
void panelrestart();
void reallyquit();
void confirmer(char mode, char yesId);
void confirmYes();
void confirmNo();
void restart();
2016-12-19 22:32:40 -08:00
void edenQuit();
void choseSubtitleOption();
void changeVolume();
void changervol();
2016-09-14 23:48:01 +02:00
void newvol(byte *volptr, int16 delta);
void playtape();
void rewindtape();
2017-02-24 23:53:47 +01:00
void moveTapeCursor();
void displayTapeCursor();
void forwardTape();
void stopTape();
void clickTapeCursor();
2016-12-19 22:32:40 -08:00
void displayPanel();
void displayLanguage();
void displayVolCursor(int16 x, int16 vol1, int16 vol2);
void displayCursors();
void selectCursor(int itemId);
void displayTopPanel();
void displayResult();
void restrictCursorArea(int16 xmin, int16 xmax, int16 ymin, int16 ymax);
void edenShudown();
void habitants(perso_t *perso);
void suiveurs(perso_t *perso);
void evenements(perso_t *perso);
void followme(perso_t *perso);
void rangermammi(perso_t *perso, Room *room);
2016-09-14 23:48:01 +02:00
void perso_ici(int16 action);
2016-12-31 05:11:33 -08:00
void setCharacterHere();
2016-09-14 23:48:01 +02:00
void faire_suivre(int16 roomNum);
2016-12-19 22:32:40 -08:00
void AddCharacterToParty();
2016-12-31 05:11:33 -08:00
void addToParty(int16 index);
2016-12-19 22:32:40 -08:00
void removeCharacterFromParty();
void removeFromParty(int16 index);
void handleEloiDeparture();
2016-12-19 22:32:40 -08:00
bool checkEloiReturn();
void handleEloiReturn();
void incPhase();
void phase113();
void phase130();
void phase161();
void phase226();
void phase257();
void phase353();
void phase369();
void phase371();
void phase385();
void phase418();
void phase433();
void phase434();
void phase513();
void phase514();
void phase529();
void phase545();
void phase561();
void bigphase1();
void bigphase();
void phase16();
void phase32();
void phase48();
void phase64();
void phase80();
void phase96();
void phase112();
void phase128();
void phase144();
void phase160();
void phase176();
void phase192();
void phase208();
void phase224();
void phase240();
void phase256();
void phase272();
void phase288();
void phase304();
void phase320();
void phase336();
void phase352();
void phase368();
void phase384();
void phase400();
void phase416();
void phase432();
void phase448();
void phase464();
void phase480();
void phase496();
void phase512();
void phase528();
void phase544();
void phase560();
2017-02-19 21:12:47 +01:00
void saveGame(char *name);
void loadrestart();
void loadgame(char *name);
2017-02-19 21:12:47 +01:00
void syncGame(Common::Serializer s);
2017-02-19 21:31:43 +01:00
void syncGlobalPointers(Common::Serializer s);
void syncGlobalValues(Common::Serializer s);
void syncCitadelRoomPointers(Common::Serializer s);
void syncTapePointers(Common::Serializer s);
char testCondition(int16 index);
uint16 operAdd(uint16 v1, uint16 v2);
uint16 operSub(uint16 v1, uint16 v2);
uint16 operLogicalAnd(uint16 v1, uint16 v2);
uint16 operLogicalOr(uint16 v1, uint16 v2);
uint16 operIsEqual(uint16 v1, uint16 v2);
uint16 operIsSmaller(uint16 v1, uint16 v2);
uint16 operIsGreater(uint16 v1, uint16 v2);
uint16 operIsDifferent(uint16 v1, uint16 v2);
uint16 operIsSmallerOrEqual(uint16 v1, uint16 v2);
uint16 operIsGreaterOrEqual(uint16 v1, uint16 v2);
uint16 operFalse(uint16 v1, uint16 v2);
2016-09-14 23:48:01 +02:00
uint16 operation(byte op, uint16 v1, uint16 v2);
uint16 fetchValue();
uint8 getByteVar(uint16 offset);
uint16 getWordVar(uint16 offset);
2016-12-25 23:14:03 -08:00
void actionNop();
2017-01-17 07:18:32 +01:00
void initSinCosTable();
2017-01-17 00:02:31 +01:00
void makeMatriceFix();
void projectionFix(Cube *cube, int n);
void initCubeMac();
2016-12-25 13:45:47 -08:00
void engineMac();
void displayObject(Cube *cube);
2016-12-25 23:14:03 -08:00
void loadMap(int file_id, byte *buffer);
void NEWcharge_objet_mob(Cube *cube, int fileNum, byte *texturePtr);
2021-08-31 16:03:08 +01:00
void DELETEcharge_objet_mob(Cube *cubep);
2016-12-31 05:11:33 -08:00
static int nextVal(char **ptr, char *error);
2016-12-25 23:14:03 -08:00
void selectMap(int16 num);
void Eden_dep_and_rot();
void restoreZDEP();
void displayPolygoneMapping(Cube *cube, CubeFace *face);
2016-12-28 03:43:13 -08:00
void drawMappingLine(int16 r3, int16 r4, int16 r5, int16 r6, int16 r7, int16 r8, int16 r9, int16 r10, int16 *lines);
void displayMappingLine(int16 r3, int16 r4, byte *target, byte *texture);
void LostEdenMac_InitPrefs();
void initCubePC();
2016-12-25 13:45:47 -08:00
void enginePC();
void selectPCMap(int16 num);
2016-12-25 13:45:47 -08:00
void makeTables();
void getSinCosTables(unsigned short angle, signed char **cos_table, signed char **sin_table);
void rotatePoint(XYZ *point, XYZ *rpoint);
void mapPoint(XYZ *point, short *x, short *y);
short calcFaceArea(XYZ *face);
void paintPixel(XYZ *point, unsigned char pixel);
void paintFace0(XYZ *point);
void paintFace1(XYZ *point);
void paintFace2(XYZ *point);
void paintFace3(XYZ *point);
void paintFace4(XYZ *point);
void paintFace5(XYZ *point);
void paintFaces();
void renderCube();
2016-12-18 14:13:36 -08:00
void incAngleX(int step);
void decAngleX();
void incAngleY(int step);
void decAngleY();
void incZoom();
void decZoom();
CubeCursor *_pcCursor;
int16 tab1[30];
int16 tab2[30];
2016-12-25 13:45:47 -08:00
int8 tab3[36][71];
int16 _angleX, _angleY, _angleZ, _zoomZ, _zoomZStep;
2016-12-25 13:45:47 -08:00
int8 *_cosX, *_sinX;
int8 *_cosY, *_sinY;
int8 *_cosZ, *_sinZ;
2016-12-25 13:45:47 -08:00
uint8 *_face[6], *_newface[6];
int16 _faceSkip;
2016-12-25 13:45:47 -08:00
uint8 _cursor[40 * 40];
uint8 *_cursorCenter;
byte _ownObjects[128];
private:
2016-12-25 13:45:47 -08:00
int16 _scrollPos;
int16 _oldScrollPos;
bool _frescoTalk;
byte _oldPix[8];
2016-09-30 07:48:27 +02:00
Common::Point _adamMapMarkPos;
2016-12-25 13:45:47 -08:00
byte _cursKeepBuf[2500];
2016-12-18 13:09:56 -08:00
bool _torchCursor;
int16 _curBankNum;
2016-12-25 13:45:47 -08:00
bool _paletteUpdateRequired;
bool _cursorSaved;
bool _backgroundSaved;
2016-12-04 14:26:44 -08:00
byte *_bankData;
perso_t *_tyranPtr;
2016-12-25 13:45:47 -08:00
int _lastAnimFrameNumb;
int _curAnimFrameNumb;
int _lastAnimTicks;
2016-12-25 02:17:07 -08:00
int16 _numAnimFrames;
int16 _maxPersoDesc;
int16 _numImgDesc;
2016-12-25 13:45:47 -08:00
bool _restartAnimation;
bool _animationActive;
byte _animationDelay;
byte _animationIndex;
byte _lastAnimationIndex;
2016-12-25 13:45:47 -08:00
byte *dword_30724;
byte *dword_30728; //TODO: rename - something amim-related
byte *_mouthAnimations;
byte *_animationTable;
byte _imageDesc[512];
byte *_characterBankData;
int16 _numTextLines;
byte _sentenceBuffer[400];
2016-09-14 23:48:01 +02:00
byte phraseIconsBuffer[10];
2016-12-29 06:28:11 -08:00
byte _sentenceCoordsBuffer[22];
byte *_textOutPtr;
2016-09-14 23:48:01 +02:00
byte *textout;
2016-12-04 14:26:44 -08:00
object_t *_curSpecialObject;
2016-12-04 13:15:38 -08:00
bool _lastDialogChoice;
bool parlemoiNormalFlag;
2016-12-04 13:15:38 -08:00
bool _closeCharacterDialog;
int dword_30B04;
2017-01-21 01:12:01 +01:00
char _lastPhrasesFile;
byte _dialogSkipFlags;
byte *_voiceSamplesBuffer; //TODO: sound sample buffer
2017-01-01 11:51:48 -08:00
Common::File _bigfile;
byte _infoList[16];
byte *_mainBankBuf;
byte *_musicBuf;
byte *_gameLipsync;
byte *_gamePhrases;
byte *_gameDialogs; //TODO: rename to dialogs?
byte *_gameConditions;
2016-12-18 14:13:36 -08:00
byte *_placeRawBuf; //TODO: fixme
byte *_bankDataBuf;
Icon *_gameIcons;
2016-12-18 14:13:36 -08:00
Room *_gameRooms;
2017-01-01 11:51:48 -08:00
PakHeaderNode *_bigfileHeader;
2016-12-18 14:13:36 -08:00
byte *_glowBuffer;
2016-12-18 14:13:36 -08:00
byte *_gameFont; //TODO: rename to font?
2016-12-18 14:13:36 -08:00
uint16 _mouseCenterX;
uint16 _mouseCenterY;
2017-01-01 11:51:48 -08:00
bool _bufferAllocationErrorFl;
2016-12-18 14:13:36 -08:00
bool _quitFlag2;
bool _quitFlag3;
bool _gameStarted;
bool _soundAllocated;
2016-12-18 14:13:36 -08:00
CSoundChannel *_musicChannel;
CSoundChannel *_voiceChannel;
int _demoCurrentTicks;
int _demoStartTicks;
int _currentTime;
2016-12-18 13:09:56 -08:00
int16 _cirsorPanX;
int16 _inventoryScrollDelay;
int16 _cursorPosX;
int16 _cursorPosY;
int16 _currCursor;
Icon *_currSpot;
2016-12-19 22:32:40 -08:00
Icon *_curSpot2;
2017-01-01 11:51:48 -08:00
bool _mouseHeld;
bool _normalCursor;
2017-01-01 11:51:48 -08:00
bool _specialTextMode;
int _voiceSamplesSize; //TODO: perso vox sample data len
2016-12-18 14:13:36 -08:00
int16 _musicRightVol;
int16 _musicLeftVol;
2017-01-01 11:51:48 -08:00
bool _animateTalking;
bool _personTalking;
byte _musicFadeFlag;
2017-01-01 11:51:48 -08:00
char _musicSequencePos;
bool _musicPlayingFlag;
2016-12-18 14:13:36 -08:00
byte *_musicSamplesPtr;
byte *_musicPatternsPtr; //TODO: sndblock_t ?
2016-12-18 13:09:56 -08:00
byte *_musSequencePtr;
2017-01-01 11:51:48 -08:00
bool _musicEnabledFlag;
uint16 *_currentObjectLocation;
bool byte_31D64;
2017-01-01 11:51:48 -08:00
bool _noPalette;
bool _gameLoaded;
#define MAX_TAPES 16
2017-01-01 11:51:48 -08:00
tape_t _tapes[MAX_TAPES];
byte _confirmMode;
byte *_curSliderValuePtr;
2016-12-19 22:32:40 -08:00
byte _lastMenuItemIdLo;
int16 _lastTapeRoomNum;
int16 _curSliderX;
2017-01-01 11:51:48 -08:00
int16 _curSliderY;
int16 _destinationRoom;
int16 word_31E7A; // CHECKME: Unused?
2017-01-01 11:51:48 -08:00
int16 word_378CC; // TODO: set by CLComputer_Init to 0
int16 word_378CE; // CHECKME: Unused
2017-01-22 22:38:18 +01:00
int _invIconsCount;
int _invIconsBase;
int _roomIconsBase;
2016-10-08 21:26:22 +02:00
//// cube.c
2017-01-17 07:18:32 +01:00
int16 _cosTable[361];
int16 _sinTable[361];
2017-01-17 00:02:31 +01:00
int _passMat31, _passMat21, _passMat11;
int _passMat32, _passMat22, _passMat12;
int _passMat33, _passMat23, _passMat13;
int16 _rotationAngleY; // CHECKME: USeless?
int16 _rotationAngleX, _rotationAngleZ;
float _translationY, _translationX; // CHECKME: Useless?
Cube _cube;
2017-01-01 11:51:48 -08:00
int16 _cursCurPCMap;
int16 _lines[200 * 8];
2017-01-01 11:51:48 -08:00
byte _cubeTexture[0x4000];
int _cubeFaces;
uint32 _cursorOldTick, _cursorNewTick;
byte *_codePtr;
2017-01-22 22:38:18 +01:00
uint8 tab_2CB1E[8][4];
2017-01-25 00:30:31 +03:00
const unsigned int kMaxMusicSize; // largest .mus file size
// Loaded from cryo.dat
Follower _followerList[15];
byte _labyrinthPath[70];
char _dinoSpeedForCitadelLevel[16];
char _tabletView[12];
char _personRoomBankTable[84]; // special character backgrounds for specific rooms
// Loaded from cryo.dat - Area transition descriptors
Goto _gotos[130];
object_t _objects[42];
uint16 _objectLocations[45];
perso_t _persons[58];
Citadel _citadelList[7];
// Loaded from cryo.dat
Common::Rect _characterRects[19];
byte _characterArray[20][5];
Area _areasTable[12];
int16 tab_2CEF0[64];
int16 tab_2CF70[64];
byte _actionCursors[299];
byte _mapMode[12];
byte _cubeTextureCoords[3][6 * 2 * 3 * 2];
int32 _translationZ;
int8 _zDirection; // 1 (up) or -1 (down)
// Torch/glow related
int16 _torchTick;
int16 _glowIndex;
int16 _torchCurIndex;
int _cursCenter;
};
2016-08-18 13:15:54 +02:00
}
#endif