diff options
Diffstat (limited to 'devtools/create_kyradat/types.h')
-rw-r--r-- | devtools/create_kyradat/types.h | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/devtools/create_kyradat/types.h b/devtools/create_kyradat/types.h new file mode 100644 index 0000000000..bb97948a25 --- /dev/null +++ b/devtools/create_kyradat/types.h @@ -0,0 +1,238 @@ +/* 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 CREATE_KYRADAT_TYPES_H +#define CREATE_KYRADAT_TYPES_H + +#include "create_kyradat.h" + +struct Room { + byte index; + uint16 north, east, south, west; +}; + +struct Shape { + byte imageIndex; + byte x, y, w, h; + int8 xOffset, yOffset; +}; + +struct AmigaSfxTable { + byte note; + byte patch; + uint16 duration; + byte volume; + byte pan; +}; + +struct HoFSequence { + uint16 flags; + char wsaFile[14]; + char cpsFile[14]; + byte fadeInTransitionType; + byte fadeOutTransitionType; + uint16 stringIndex1; + uint16 stringIndex2; + uint16 startFrame; + uint16 numFrames; + uint16 duration; + uint16 xPos; + uint16 yPos; + uint16 timeout; +}; + +struct FrameControl { + uint16 index; + uint16 delay; +}; + +struct HoFNestedSequence { + uint16 flags; + char wsaFile[14]; + uint16 startFrame; + uint16 endFrame; + uint16 frameDelay; + uint16 x; + uint16 y; + uint16 numControls; + const FrameControl *wsaControl; + uint16 fadeInTransitionType; + uint16 fadeOutTransitionType; +}; + +struct HoFSeqItemAnimData { + int16 itemIndex; + uint16 y; + uint16 frames[20]; +}; + +struct ItemAnimDefinition { + int16 itemIndex; + byte numFrames; + const FrameControl *frames; +}; + +struct LoLCharacter { + uint16 flags; + char name[11]; + byte raceClassSex; + int16 id; + byte curFaceFrame; + byte tempFaceFrame; + byte screamSfx; + /*uint32 unused;*/ + uint16 itemsMight[8]; + uint16 protectionAgainstItems[8]; + uint16 itemProtection; + int16 hitPointsCur; + uint16 hitPointsMax; + int16 magicPointsCur; + uint16 magicPointsMax; + byte field_41; + uint16 damageSuffered; + uint16 weaponHit; + uint16 totalMightModifier; + uint16 totalProtectionModifier; + uint16 might; + uint16 protection; + int16 nextAnimUpdateCountdown; + uint16 items[11]; + byte skillLevels[3]; + byte skillModifiers[3]; + uint32 experiencePts[3]; + byte characterUpdateEvents[5]; + byte characterUpdateDelay[5]; +}; + +struct SpellProperty { + uint16 spellNameCode; + uint16 mpRequired[4]; + uint16 field_a; + uint16 field_c; + uint16 hpRequired[4]; + uint16 field_16; + uint16 field_18; + uint16 flags; +}; + +struct CompassDef { + byte shapeIndex; + int8 x, y; + byte flags; +}; + +struct FlyingObjectShape { + byte shapeFront; + byte shapeBack; + byte shapeLeft; + byte drawFlags; + byte flipFlags; +}; + +struct LoLButtonDef { + uint16 buttonFlags; + uint16 keyCode; + uint16 keyCode2; + int16 x, y; + uint16 w, h; + uint16 index; + uint16 screenDim; +}; + +struct DarkMoonAnimCommand { + byte command; + byte obj; + int16 x1; + byte y1; + byte delay; + byte pal; + byte x2, y2; + byte w, h; +}; + +struct DarkMoonShapeDef { + int16 index; + byte x, y, w, h; +}; + +struct EoBCharacter { + byte id; + byte flags; + char name[11]; + int8 strengthCur, strengthMax; + int8 strengthExtCur, strengthExtMax; + int8 intelligenceCur, intelligenceMax; + int8 wisdomCur, wisdomMax; + int8 dexterityCur, dexterityMax; + int8 constitutionCur, constitutionMax; + int8 charismaCur, charismaMax; + int16 hitPointsCur, hitPointsMax; + int8 armorClass; + byte disabledSlots; + byte raceSex; + byte cClass; + byte alignment; + int8 portrait; + byte food; + byte level[3]; + uint32 experience[3]; + uint32 mageSpellsAvailableFlags; + uint16 inventory[27]; +}; + +template<typename Type> +struct ArrayProvider { + uint numEntries; + const Type *data; +}; + +typedef ArrayProvider<const char *> StringListProvider; +typedef ArrayProvider<byte> ByteProvider; +typedef ArrayProvider<Room> RoomProvider; +typedef ArrayProvider<Shape> ShapeProvider; +typedef ArrayProvider<AmigaSfxTable> AmigaSfxTableProvider; + +struct HoFSequenceProvider { + uint numSequences; + const HoFSequence *sequences; + + uint numNestedSequences; + const HoFNestedSequence *nestedSequences; +}; + +typedef ArrayProvider<HoFSeqItemAnimData> HoFSeqItemAnimDataProvider; +typedef ArrayProvider<ItemAnimDefinition> ItemAnimDefinitionProvider; +typedef ArrayProvider<LoLCharacter> LoLCharacterProvider; +typedef ArrayProvider<SpellProperty> SpellPropertyProvider; +typedef ArrayProvider<CompassDef> CompassDefProvider; +typedef ArrayProvider<FlyingObjectShape> FlyingObjectShapeProvider; +typedef ArrayProvider<LoLButtonDef> LoLButtonDefProvider; +typedef ArrayProvider<uint16> Uint16Provider; +typedef ArrayProvider<uint32> Uint32Provider; +typedef ArrayProvider<DarkMoonAnimCommand> DarkMoonAnimCommandProvider; +typedef ArrayProvider<DarkMoonShapeDef> DarkMoonShapeDefProvider; +typedef ArrayProvider<EoBCharacter> EoBCharacterProvider; + +class PAKFile; +void writeResource(PAKFile &out, const char *filename, ResTypes type, const void *provider); + +#endif |