mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-28 04:34:50 +00:00
142 lines
3.3 KiB
C++
142 lines
3.3 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 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 AGI_VIEW_H
|
|
#define AGI_VIEW_H
|
|
|
|
namespace Agi {
|
|
|
|
struct AgiViewCel {
|
|
uint8 height;
|
|
uint8 width;
|
|
uint8 clearKey;
|
|
bool mirrored;
|
|
byte *rawBitmap;
|
|
};
|
|
|
|
struct AgiViewLoop {
|
|
int16 celCount;
|
|
AgiViewCel *cel;
|
|
};
|
|
|
|
/**
|
|
* AGI view resource structure.
|
|
*/
|
|
struct AgiView {
|
|
byte headerStepSize;
|
|
byte headerCycleTime;
|
|
byte *description;
|
|
int16 loopCount;
|
|
AgiViewLoop *loop;
|
|
};
|
|
|
|
enum MotionType {
|
|
kMotionNormal = 0,
|
|
kMotionWander = 1,
|
|
kMotionFollowEgo = 2,
|
|
kMotionMoveObj = 3,
|
|
kMotionEgo = 4 // used by us for mouse movement only?
|
|
};
|
|
|
|
enum CycleType {
|
|
kCycleNormal = 0,
|
|
kCycleEndOfLoop = 1,
|
|
kCycleRevLoop = 2,
|
|
kCycleReverse = 3
|
|
};
|
|
|
|
enum ViewFlags {
|
|
fDrawn = (1 << 0), // 0x0001
|
|
fIgnoreBlocks = (1 << 1), // 0x0002
|
|
fFixedPriority = (1 << 2), // 0x0004
|
|
fIgnoreHorizon = (1 << 3), // 0x0008
|
|
fUpdate = (1 << 4), // 0x0010
|
|
fCycling = (1 << 5), // 0x0020
|
|
fAnimated = (1 << 6), // 0x0040
|
|
fMotion = (1 << 7), // 0x0080
|
|
fOnWater = (1 << 8), // 0x0100
|
|
fIgnoreObjects = (1 << 9), // 0x0200
|
|
fUpdatePos = (1 << 10), // 0x0400
|
|
fOnLand = (1 << 11), // 0x0800
|
|
fDontupdate = (1 << 12), // 0x1000
|
|
fFixLoop = (1 << 13), // 0x2000
|
|
fDidntMove = (1 << 14), // 0x4000
|
|
fAdjEgoXY = (1 << 15) // 0x8000
|
|
};
|
|
|
|
/**
|
|
* AGI screen object table entry
|
|
*/
|
|
struct ScreenObjEntry {
|
|
int16 objectNr; // 0-255 -> regular screenObjTable, -1 -> addToPic-view
|
|
uint8 stepTime;
|
|
uint8 stepTimeCount;
|
|
int16 xPos;
|
|
int16 yPos;
|
|
uint8 currentViewNr;
|
|
bool viewReplaced;
|
|
struct AgiView *viewResource;
|
|
uint8 currentLoopNr;
|
|
uint8 loopCount;
|
|
struct AgiViewLoop *loopData;
|
|
uint8 currentCelNr;
|
|
uint8 celCount;
|
|
struct AgiViewCel *celData;
|
|
//int16 xPos2;
|
|
//int16 yPos2;
|
|
int16 xSize;
|
|
int16 ySize;
|
|
|
|
int16 xPos_prev;
|
|
int16 yPos_prev;
|
|
int16 xSize_prev;
|
|
int16 ySize_prev;
|
|
|
|
uint8 stepSize;
|
|
uint8 cycleTime;
|
|
uint8 cycleTimeCount;
|
|
uint8 direction;
|
|
MotionType motionType;
|
|
CycleType cycle;
|
|
uint8 priority;
|
|
uint16 flags;
|
|
// kMotionMoveObj
|
|
int16 move_x;
|
|
int16 move_y;
|
|
uint8 move_stepSize;
|
|
uint8 move_flag;
|
|
// kMotionFollowEgo
|
|
uint8 follow_stepSize;
|
|
uint8 follow_flag;
|
|
uint8 follow_count;
|
|
// kMotionWander
|
|
uint8 wander_count;
|
|
// end of motion related variables
|
|
uint8 loop_flag;
|
|
|
|
ScreenObjEntry() { memset(this, 0, sizeof(ScreenObjEntry)); }
|
|
}; // struct vt_entry
|
|
|
|
} // End of namespace Agi
|
|
|
|
#endif /* AGI_VIEW_H */
|