Files
scummvm-cursorfix/engines/immortal/sprite_list.h
2026-02-02 04:50:13 +01:00

300 lines
4.5 KiB
C++

/* 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.
*
* 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/>.
*
*/
#ifndef IMMORTAL_SPRITE_LIST_H
#define IMMORTAL_SPRITE_LIST_H
namespace Immortal {
// We need a few two-dimensional vectors, and writing them out in full each time is tedious
template<class T> using CArray2D = Common::Array<Common::Array<T>>;
struct Image {
uint16 _deltaX;
uint16 _deltaY;
uint16 _rectW;
uint16 _rectH;
Common::Array<uint16> _scanWidth;
Common::Array<uint16> _deltaPos;
CArray2D<byte> _bitmap;
};
struct DataSprite {
uint16 _cenX; // These are the base center positions
uint16 _cenY;
uint16 _numImages;
Common::Array<Image> _images;
};
struct Sprite {
int _image; // Index of _dSprite._images[]
uint16 _x;
uint16 _y;
uint16 _on; // 1 = active
uint16 _priority;
DataSprite *_dSprite;
};
enum SpriteFrame {
// Null
kNoFrame,
// Chest frames
kChest0Frame = 0,
kOpenChestFrame,
kRingFrame,
kKnifeFrame,
kDeadGoblinFrame,
// Normal frames
kSwordFrame,
kKeyFrame,
kYesIconOff,
kYesIconOn,
kNoIconOff,
kNoIconOn,
kChoiceFrame,
kEraseChoseFrame,
kSwordBigFrame,
kVaseBigFrame,
kVaseFrame,
kBrokenFrame,
kKeyBigFrame,
kBagFrame,
kBagBigFrame,
kBookBigFrame,
kBookFrame,
kScrollFrame,
kScrollBigFrame,
kOkayFrame,
kAltarFrame,
kGoldBigFrame,
kMapBigFrame,
kSemblanceFrame,
kTrapDoorFrame,
kBonesFrame,
kSackBigFrame,
kSporesFrame,
kGemGlintFrame,
kStoneFrame,
kGreenStoneFrame,
kGemBigFrame,
kStoneBigFrame,
kPileFrame,
kNoteBigFrame,
// 45 - 48 are Merchant frames
kMerchantFrame,
// Remaining frames
kCoinBigFrame = 49,
kPileBigFrame,
kKingFrame,
kDeadKingFrame,
kBombBigFrame,
kRingBigFrame,
kKnifeBigFrame,
kCarpetBigFrame,
kAnaInHoleFrame,
kAnaNotInHoleFrame,
kInvisRingFrame
};
enum SpriteName {
// Moresprites 10
kCandle,
kWow,
kAnaVanish,
kSink,
kTrapdoor,
kWizPhant,
kVanish,
kShadow,
kSlime,
kSlimeDeath,
// Norlac 5
kBridge,
kVortex,
kBubble,
kNorlac,
kNolac2,
// Powwow 7
kPlanners,
kUgh,
kIsDevoured,
kIsBadCrawl,
kIsGoodCrawl,
kLeg,
kIsWebbed,
// Turrets 10
kSleep,
kShrink,
kLocksmith,
kAnaGlimpse,
kMadKing,
kTorch,
kPipe,
kProjectile,
kKnife,
kAnaHug,
// Worm 4
kWorm0,
kWorm1,
kSpike,
kIsSpiked,
// Iansprites 6
kMurder,
kWizCrawlUp,
kWizLight,
kWizBattle,
kDown,
kNorlacDown,
// Lastsprites 3
kWaterLadder,
kPulledDown,
kSpill,
// Doorsprites 10
kDoor,
kTele,
kBomb,
kTorched,
kLadderTop,
kSecret,
kLadderBottom,
kSlipped,
kGoblinSlipped,
kFlame,
// General 5
kArrow,
kSpark,
kObject,
kBigBurst,
kBeam,
// Mordamir 3
kLight,
kMord,
kDragMask,
// Dragon2 2
kDFlames,
kThroat,
// Dragon 1
kDragon,
// Rope 3
kChop,
kHead,
kNurse,
// Rescue 2
kRescue1,
kRescue2,
// Troll 9 (8 directions + ?)
kTroll0,
kTroll1,
kTroll2,
kTroll3,
kTroll4,
kTroll5,
kTroll6,
kTroll7,
kTroll8,
// Goblin 10 (8 directions + ?)
kGoblin0,
kGoblin1,
kGoblin2,
kGoblin3,
kGoblin4,
kGoblin5,
kGoblin6,
kGoblin7,
kGoblin8,
kGoblin9,
// Wizard A 8 (8 directions)
kWizard0,
kWizard1,
kWizard2,
kWizard3,
kWizard4,
kWizard5,
kWizard6,
kWizard7,
// Wizard B 3 (3 ?)
kWizard8,
kWizard9,
kWizard10,
// Ulindor 9 (8 directions + ?)
kUlindor0,
kUlindor1,
kUlindor2,
kUlindor3,
kUlindor4,
kUlindor5,
kUlindor6,
kUlindor7,
kUlindor8,
// Spider 10 (probably not directions)
kSpider0,
kSpider1,
kSpider2,
kSpider3,
kSpider4,
kSpider5,
kSpider6,
kSpider7,
kSpider8,
kSpider9,
// Drag 9 (probably not directions)
kDrag0,
kDrag1,
kDrag2,
kDrag3,
kDrag4,
kDrag5,
kDrag6,
kDrag7,
kDrag8,
// Font
kFont
};
} // namespace Immortal
#endif