aboutsummaryrefslogtreecommitdiff
path: root/queen/logic.h
diff options
context:
space:
mode:
authorMax Horn2006-02-11 22:45:04 +0000
committerMax Horn2006-02-11 22:45:04 +0000
commit26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch)
tree26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /queen/logic.h
parent2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff)
downloadscummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.gz
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.bz2
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.zip
Moved engines to the new engines/ directory
svn-id: r20582
Diffstat (limited to 'queen/logic.h')
-rw-r--r--queen/logic.h410
1 files changed, 0 insertions, 410 deletions
diff --git a/queen/logic.h b/queen/logic.h
deleted file mode 100644
index f1f93de17e..0000000000
--- a/queen/logic.h
+++ /dev/null
@@ -1,410 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2003-2006 The ScummVM project
- *
- * 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$
- *
- */
-
-#ifndef QUEENLOGIC_H
-#define QUEENLOGIC_H
-
-#include "common/str.h"
-#include "common/util.h"
-#include "queen/structs.h"
-
-namespace Queen {
-
-enum RoomDisplayMode {
- RDM_FADE_NOJOE = 0, // fade in, hide Joe
- RDM_FADE_JOE = 1, // fade in, display Joe
- RDM_NOFADE_JOE = 2, // screen does not dissolve into view
- RDM_FADE_JOE_XY = 3 // display Joe at the current X, Y coords
-};
-
-enum JoeWalkMode {
- JWM_NORMAL = 0,
- JWM_MOVE = 1,
- JWM_EXECUTE = 2,
- JWM_SPEAK = 3
-};
-
-class Credits;
-class Journal;
-class LineReader;
-class QueenEngine;
-
-class Logic {
-
-public:
- Logic(QueenEngine *vm);
- virtual ~Logic();
-
- uint16 currentRoom() const { return _currentRoom; }
- void currentRoom(uint16 room) {
- assert(room >= 1 && room <= _numRooms);
- _currentRoom = room;
- }
-
- uint16 oldRoom() const { return _oldRoom; }
- void oldRoom(uint16 room) {
- assert(room <= _numRooms);
- _oldRoom = room;
- }
-
- uint16 newRoom() const { return _newRoom; }
- void newRoom(uint16 room) {
- assert(room <= _numRooms);
- _newRoom = room;
- }
-
- ObjectData *objectData(int index) const;
- uint16 roomData(int room) const { return _roomData[room]; }
- GraphicData *graphicData(int index) const { return &_graphicData[index]; }
- ItemData *itemData(int index) const { return &_itemData[index]; }
- uint16 itemDataCount() const { return _numItems; }
-
- uint16 findBob(uint16 obj) const;
- uint16 findFrame(uint16 obj) const;
- uint16 objectForPerson(uint16 bobnum) const;
- WalkOffData *walkOffPointForObject(int16 obj) const;
-
- uint16 walkOffCount() const { return _numWalkOffs; }
- WalkOffData *walkOffData(int index) const { return &_walkOffData[index]; }
- uint16 currentRoomData() const { return _roomData[_currentRoom]; }
- GraphicAnim *graphicAnim(int index) const { return &_graphicAnim[index]; }
- uint16 graphicAnimCount() const { return _numGraphicAnim; }
- ObjectDescription *objectDescription(uint16 objNum) const { return &_objectDescription[objNum]; }
- uint16 objectDescriptionCount() const { return _numObjDesc; }
- uint16 currentRoomSfx() const { return _sfxName[_currentRoom]; }
-
- uint16 joeFacing() const { return _joe.facing; }
- uint16 joeX() const { return _joe.x; }
- uint16 joeY() const { return _joe.y; }
- JoeWalkMode joeWalk() const { return _joe.walk; }
- uint16 joeScale() const { return _joe.scale; }
- uint16 joeCutFacing() const { return _joe.cutFacing; }
- uint16 joePrevFacing() const { return _joe.prevFacing; }
-
- void joeFacing(uint16 dir) { _joe.facing = dir; }
- void joePos(uint16 x, uint16 y) { _joe.x = x; _joe.y = y; }
- void joeWalk(JoeWalkMode walking);
- void joeScale(uint16 scale) { _joe.scale = scale; }
- void joeCutFacing(uint16 dir) { _joe.cutFacing = dir; }
- void joePrevFacing(uint16 dir) { _joe.prevFacing = dir; }
-
- int16 gameState(int index) const;
- void gameState(int index, int16 newValue);
-
- TalkSelected *talkSelected(int index) { return &_talkSelected[index]; }
-
- const char *roomName(uint16 roomNum) const;
- const char *objectName(uint16 objNum) const;
- const char *objectTextualDescription(uint16 objNum) const;
- const char *joeResponse(int i) const;
- const char *verbName(Verb v) const;
-
- void eraseRoom();
- void setupRoom(const char *room, int comPanel, bool inCutaway);
- void displayRoom(uint16 room, RoomDisplayMode mode, uint16 joeScale, int comPanel, bool inCutaway);
-
- int16 entryObj() const { return _entryObj; }
- void entryObj(int16 obj) { _entryObj = obj; }
-
- ActorData *findActor(uint16 noun, const char *name = NULL) const;
- bool initPerson(uint16 noun, const char *actorName, bool loadBank, Person *pp);
- uint16 findPersonNumber(uint16 obj, uint16 room) const;
-
- //! load banks used for Joe animation
- void loadJoeBanks(const char *animBank, const char *standBank);
-
- //! load the various bobs needed to animate Joe
- void setupJoe();
-
- //! setup Joe at the right place when entering a room
- void setupJoeInRoom(bool autoPosition, uint16 scale);
-
- uint16 joeFace();
- void joeGrab(int16 grabState);
-
- //! change Joe clothes to dress
- void joeUseDress(bool showCut);
-
- //! restore Joe clothes
- void joeUseClothes(bool showCut);
-
- //! change Joe clothes to underwear
- void joeUseUnderwear();
-
- void makeJoeSpeak(uint16 descNum, bool objectType = false);
- void makePersonSpeak(const char *sentence, Person *person, const char *voiceFilePrefix);
-
- //! start the specified dialogue
- void startDialogue(const char *dlgFile, int personInRoom, char *cutaway);
-
- //! play the specified cutaway
- void playCutaway(const char *cutFile, char *next = NULL);
-
- //! initialize the inventory
- void inventorySetup();
-
- //! get the inventory item for the specified inventory slot
- uint16 findInventoryItem(int invSlot) const;
-
- //! refresh inventory contents
- void inventoryRefresh();
- int16 previousInventoryItem(int16 first) const;
- int16 nextInventoryItem(int16 first) const;
- void removeDuplicateItems();
- uint16 numItemsInventory() const;
- void inventoryInsertItem(uint16 itemNum, bool refresh = true);
- void inventoryDeleteItem(uint16 itemNum, bool refresh = true);
- void inventoryScroll(uint16 count, bool up);
- void removeHotelItemsFromInventory();
-
- //! copy data from dummy object to object
- void objectCopy(int dummyObjectIndex, int objectIndex);
-
- //! handle a particular event when Joe walks on this area
- void handleSpecialArea(Direction facing, uint16 areaNum, uint16 walkDataNum);
-
- //! handle the pinnacle room (== room chooser in the jungle)
- void handlePinnacleRoom();
-
- void update();
-
- void saveState(byte *&ptr);
- void loadState(uint32 ver, byte *&ptr);
-
- //! called after a save state has been loaded
- void setupRestoredGame();
-
- //! ugly hack from original code
- void sceneReset() { _scene = 0; }
-
- //! make a scene
- void sceneStart();
-
- //! stop making a scene
- void sceneStop();
-
- void changeRoom();
-
- //! enter the Journal (save/load, configuration)
- virtual void useJournal() = 0;
-
- //! execute a special move
- void executeSpecialMove(uint16 sm);
-
- void startCredits(const char *filename);
- void stopCredits();
-
- void start();
-
- enum {
- JOE_RESPONSE_MAX = 40,
- DEFAULT_TALK_SPEED = 7 * 3,
- GAME_STATE_COUNT = 211,
- TALK_SELECTED_COUNT = 86
- };
-
-protected:
-
- void initialise();
-
- void asmMakeJoeUseDress();
- void asmMakeJoeUseNormalClothes();
- void asmMakeJoeUseUnderwear();
- void asmSwitchToDressPalette();
- void asmSwitchToNormalPalette();
- void asmStartCarAnimation();
- void asmStopCarAnimation();
- void asmStartFightAnimation();
- void asmWaitForFrankPosition();
- void asmMakeFrankGrowing();
- void asmMakeRobotGrowing();
- void asmShrinkRobot();
- void asmEndGame();
- void asmPutCameraOnDino();
- void asmPutCameraOnJoe();
- void asmAltIntroPanRight();
- void asmAltIntroPanLeft();
- void asmSetAzuraInLove();
- void asmPanRightFromJoe();
- void asmSetLightsOff();
- void asmSetLightsOn();
- void asmSetManequinAreaOn();
- void asmPanToJoe();
- void asmTurnGuardOn();
- void asmPanLeft320To144();
- void asmSmooch();
- void asmMakeLightningHitPlane();
- void asmScaleBlimp();
- void asmScaleEnding();
- void asmWaitForCarPosition();
- void asmShakeScreen();
- void asmAttemptPuzzle();
- void asmScaleTitle();
- void asmPanRightToHugh();
- void asmMakeWhiteFlash();
- void asmPanRightToJoeAndRita();
- void asmPanLeftToBomb();
- void asmEndDemo();
- void asmInterviewIntro();
- void asmEndInterview();
-
- virtual bool preChangeRoom() = 0;
- virtual bool handleSpecialMove(uint16 sm) = 0;
-
-
- uint16 _currentRoom;
- uint16 _oldRoom;
- uint16 _newRoom;
-
- //! total number of room in game
- uint16 _numRooms;
-
- //! first object number in room
- uint16 *_roomData;
-
- //! background music to play in room
- uint16 *_sfxName;
-
- //! bounding box of object
- Box *_objectBox;
-
- //! inventory items
- ItemData *_itemData;
- uint16 _numItems;
-
- GraphicData *_graphicData;
- uint16 _numGraphics;
-
- ObjectData *_objectData;
- uint16 _numObjects;
-
- ObjectDescription *_objectDescription;
- uint16 _numObjDesc;
-
- ActorData *_actorData;
- uint16 _numActors;
-
- //! walk off point for an object
- WalkOffData *_walkOffData;
- uint16 _numWalkOffs;
-
- FurnitureData *_furnitureData;
- uint16 _numFurniture;
-
- GraphicAnim *_graphicAnim;
- uint16 _numGraphicAnim;
-
- //! actor initial position in room is _walkOffData[_entryObj]
- int16 _entryObj;
-
- //! object description (Look At)
- Common::StringList _objDescription;
- uint16 _numDescriptions;
-
- Common::StringList _objName;
- uint16 _numNames;
-
- //! room name, prefix for data files (PCX, LUM...)
- Common::StringList _roomName;
-
- Common::StringList _verbName;
-
- Common::StringList _joeResponse;
-
- //! actor animation strings
- Common::StringList _aAnim;
- uint16 _numAAnim;
-
- //! actor names
- Common::StringList _aName;
- uint16 _numAName;
-
- //! actor filenames
- Common::StringList _aFile;
- uint16 _numAFile;
-
- struct {
- uint16 x, y;
- uint16 facing, cutFacing, prevFacing;
- JoeWalkMode walk;
- uint16 scale;
- } _joe;
-
- int16 _gameState[GAME_STATE_COUNT];
-
- TalkSelected _talkSelected[TALK_SELECTED_COUNT];
-
- //! inventory items
- int16 _inventoryItem[4];
-
- //! puzzle counter for room T7
- uint8 _puzzleAttemptCount;
-
- //! cutscene counter
- int _scene;
-
- Credits *_credits;
- Journal *_journal;
-
- QueenEngine *_vm;
-};
-
-class LogicDemo : public Logic {
-public:
-
- LogicDemo(QueenEngine *vm) : Logic(vm) {}
- void useJournal();
-
-protected:
-
- bool preChangeRoom();
- bool handleSpecialMove(uint16 sm);
-};
-
-class LogicInterview : public Logic {
-public:
-
- LogicInterview(QueenEngine *vm) : Logic(vm) {}
- void useJournal();
-
-protected:
-
- bool preChangeRoom();
- bool handleSpecialMove(uint16 sm);
-};
-
-class LogicGame : public Logic {
-public:
-
- LogicGame(QueenEngine *vm) : Logic(vm) {}
- void useJournal();
-
-protected:
-
- bool preChangeRoom();
- bool handleSpecialMove(uint16 sm);
-};
-
-
-} // End of namespace Queen
-
-#endif