diff options
author | Max Horn | 2006-02-11 22:45:04 +0000 |
---|---|---|
committer | Max Horn | 2006-02-11 22:45:04 +0000 |
commit | 26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch) | |
tree | 26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /lure/res_struct.h | |
parent | 2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff) | |
download | scummvm-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 'lure/res_struct.h')
-rw-r--r-- | lure/res_struct.h | 401 |
1 files changed, 0 insertions, 401 deletions
diff --git a/lure/res_struct.h b/lure/res_struct.h deleted file mode 100644 index 418fb9fbdd..0000000000 --- a/lure/res_struct.h +++ /dev/null @@ -1,401 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2005-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 __lure_resstruct_h__ -#define __lure_resstruct_h__ - -#include "lure/luredefs.h" -#include "common/list.h" - -namespace Lure { - -extern const char *actionList[]; - -/*-------------------------------------------------------------------------*/ -/* Structure definitions */ -/* */ -/*-------------------------------------------------------------------------*/ - -#if !defined(__GNUC__) -#pragma START_PACK_STRUCTS -#endif - -struct HotspotResource { - uint16 hotspotId; - uint16 nameId; - uint16 descId; - uint16 descId2; - uint32 actions; - uint16 actionsOffset; - uint16 roomNumber; - byte layer; - byte scriptLoadFlag; - uint16 loadOffset; - int16 startX; - int16 startY; - uint16 width; - uint16 height; - uint16 colourOffset; - uint16 animRecordId; - uint16 sequenceOffset; - uint16 tickProcOffset; - uint16 tickTimeout; -} GCC_PACK; - -struct HotspotAnimResource { - uint16 animRecordId; - uint16 animId; - uint16 flags; - uint16 upOffset; - uint16 downOffset; - uint16 leftOffset; - uint16 rightOffset; - uint8 upFrame; - uint8 downFrame; - uint8 leftFrame; - uint8 rightFrame; -} GCC_PACK; - -struct MovementResource { - uint16 frameNumber; - int16 xChange; - int16 yChange; -} GCC_PACK; - - -struct RoomResource { - uint16 roomNumber; - uint16 descId; - uint16 numLayers; - uint16 layers[4]; - uint16 sequenceOffset; - uint16 numExits; -} GCC_PACK; - -struct RoomExitResource { - int16 xs, xe, ys, ye; - uint16 sequenceOffset; - uint8 newRoom; - uint8 direction; - int16 newRoomX, newRoomY; -} GCC_PACK; - -struct HotspotOverrideResource { - uint16 hotspotId; - int16 xs, xe, ys, ye; -} GCC_PACK; - -struct RoomExitHotspotRecord { - uint16 hotspotId; - int16 xs, xe; - int16 ys, ye; - uint16 cursorNum; - uint16 destRoomNumber; -} GCC_PACK; - -struct RoomExitJoinRecord { - uint16 hotspot1Id; - byte h1CurrentFrame; - byte h1DestFrame; - uint16 h1Unknown; - uint16 hotspot2Id; - byte h2CurrentFrame; - byte h2DestFrame; - uint16 h2Unknown; - byte blocked; - uint32 unknown; -} GCC_PACK; - -struct HotspotActionRecord { - byte action; - uint16 sequenceOffset; -} GCC_PACK; - -struct FileEntry { - uint16 id; - byte unused; - byte sizeExtension; - uint16 size; - uint16 offset; -} GCC_PACK; - -struct VersionStructure { - uint16 id; - byte vMajor; - byte vMinor; -} GCC_PACK; - -#if !defined(__GNUC__) -#pragma END_PACK_STRUCTS -#endif - -// Class template for a derived list that destroys the contained -// object when the record containing it is destroyed. It's not -// perfect, since the underlying list doesn't have virtual -// methods, but it's sufficient for my usage - -template <class T> -class ManagedList: public Common::List<T> { -public: - ~ManagedList() { - clear(); - } - - void clear() { - typename Common::List<T>::iterator i; - for (i = Common::List<T>::begin(); i != Common::List<T>::end(); ++i) - delete *i; - Common::List<T>::clear(); - } - - typename Common::List<T>::iterator erase(typename Common::List<T>::iterator pos) { - delete *pos; - return Common::List<T>::erase(pos); - } - - typename Common::List<T>::iterator erase(typename Common::List<T>::iterator first, - typename Common::List<T>::iterator last) { - typename Common::List<T>::iterator i; - for (i = first; i != last; ++i) - delete *i; - return Common::List<T>::erase(first, last); - } -}; - -// Enumeration used for direction facings - -enum Direction {UP, DOWN, LEFT, RIGHT, NO_DIRECTION}; - -// Support classes to hold loaded resources - -class RoomExitHotspotData { -public: - RoomExitHotspotData(RoomExitHotspotRecord *rec); - - uint16 hotspotId; - int16 xs, xe; - int16 ys, ye; - uint16 cursorNum; - uint16 destRoomNumber; -}; - -typedef ManagedList<RoomExitHotspotData *> RoomExitHotspotList; - -class RoomExitData { -public: - RoomExitData(RoomExitResource *rec); - bool insideRect(int16 xp, int16 yp); - - int16 xs, xe, ys, ye; - uint16 sequenceOffset; - Direction direction; - uint8 roomNumber; - uint16 x, y; -}; - -class RoomExitList: public ManagedList<RoomExitData *> { -public: - RoomExitData *checkExits(int16 xp, int16 yp); -}; - -#define MAX_NUM_LAYERS 4 - -class RoomData { -public: - RoomData(RoomResource *rec); - - uint16 roomNumber; - uint16 descId; - uint16 numLayers; - uint16 layers[MAX_NUM_LAYERS]; - uint16 sequenceOffset; - RoomExitHotspotList exitHotspots; - RoomExitList exits; -}; - -typedef ManagedList<RoomData *> RoomDataList; - -class RoomExitJoinData { -public: - RoomExitJoinData(RoomExitJoinRecord *rec); - - uint16 hotspot1Id; - byte h1CurrentFrame; - byte h1DestFrame; - uint16 h1Unknown; - uint16 hotspot2Id; - byte h2CurrentFrame; - byte h2DestFrame; - uint16 h2Unknown; - byte blocked; - uint32 unknown; -}; - -typedef ManagedList<RoomExitJoinData *> RoomExitJoinList; - -class HotspotActionData { -public: - HotspotActionData(HotspotActionRecord *rec); - - Action action; - uint16 sequenceOffset; -}; - -class HotspotActionList: public ManagedList<HotspotActionData *> { -public: - uint16 recordId; - - HotspotActionList(uint16 id, byte *data); - uint16 getActionOffset(Action action); -}; - -class HotspotActionSet: public ManagedList<HotspotActionList *> { -public: - HotspotActionList *getActions(uint16 recordId); -}; - -class HotspotData { -public: - HotspotData(HotspotResource *rec); - - uint16 hotspotId; - uint16 nameId; - uint16 descId; - uint16 descId2; - uint32 actions; - uint16 actionsOffset; - byte flags; - uint16 roomNumber; - byte layer; - byte scriptLoadFlag; - uint16 loadOffset; - int16 startX; - int16 startY; - uint16 width; - uint16 height; - uint16 colourOffset; - uint16 animRecordId; - uint16 sequenceOffset; - uint16 tickProcOffset; - uint16 tickTimeout; -}; - -typedef ManagedList<HotspotData *> HotspotDataList; - -class HotspotOverrideData { -public: - HotspotOverrideData(HotspotOverrideResource *rec); - - uint16 hotspotId; - int16 xs, xe, ys, ye; -}; - -typedef ManagedList<HotspotOverrideData *> HotspotOverrideList; - -class MovementData { -public: - MovementData(MovementResource *); - - uint16 frameNumber; - int16 xChange; - int16 yChange; -}; - -class MovementDataList: public ManagedList<MovementData *> { -public: - bool getFrame(uint16 currentFrame, int16 &xChange, int16 &yChange, - uint16 &nextFrame); -}; - -class HotspotAnimData { -public: - HotspotAnimData(HotspotAnimResource *rec); - - uint16 animRecordId; - uint16 animId; - uint16 flags; - uint8 upFrame; - uint8 downFrame; - uint8 leftFrame; - uint8 rightFrame; - - MovementDataList leftFrames, rightFrames; - MovementDataList upFrames, downFrames; -}; - -typedef ManagedList<HotspotAnimData *> HotspotAnimList; - -// The following classes hold any sequence offsets that are being delayed - -class SequenceDelayData { - friend class SequenceDelayList; -private: - uint32 _timeoutCtr; - uint16 _sequenceOffset; -public: - SequenceDelayData(uint16 delay, uint16 seqOffset); -}; - -class SequenceDelayList: public ManagedList<SequenceDelayData *> { -public: - void addSequence(uint16 delay, uint16 seqOffset); - void tick(); -}; - -// The following class holds the field list used by the script engine as -// well as miscellaneous fields used by the game. - -#define NUM_VALUE_FIELDS 85 - -enum FieldName { - ROOM_NUMBER = 0, - CHARACTER_HOTSPOT_ID = 1, - USE_HOTSPOT_ID = 2, - ACTIVE_HOTSPOT_ID = 3, - SEQUENCE_RESULT = 4, - GENERAL = 5, - NEW_ROOM_NUMBER = 7, - GENERAL_STATUS = 8, - TORCH_HIDE = 10, - PRISONER_DEAD = 15, - BOTTLE_FILLED = 18, - SACK_CUT = 20 -}; - -class ValueTableData { -private: - uint16 _numGroats; - uint16 _fieldList[NUM_VALUE_FIELDS]; - bool isKnownField(uint16 fieldIndex); -public: - ValueTableData(); - uint16 getField(uint16 fieldIndex); - uint16 getField(FieldName fieldName); - - void setField(uint16 fieldIndex, uint16 value); - void setField(FieldName fieldName, uint16 value); - uint16 &numGroats() { return _numGroats; } -}; - -} // End of namespace Lure - -#endif |