aboutsummaryrefslogtreecommitdiff
path: root/scumm/sprite_he.h
blob: a0c9700982e931bcd10a5a2507b4d1866dc48708 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* ScummVM - Scumm Interpreter
 * Copyright (C) 2001  Ludvig Strigeus
 * Copyright (C) 2001-2005 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header$
 *
 */

#ifndef SPRITE_HE_H
#define SPRITE_HE_H

namespace Scumm {

enum SpriteFlags {
	kSF1       = (1 << 0),
	kSF2       = (1 << 1),
	kSF3       = (1 << 2),
	kSF4       = (1 << 3),
	kSFZoomed  = (1 << 4),
	kSFRotated = (1 << 5),
	kSF7       = (1 << 6),
	kSF8       = (1 << 7),
	kSF9       = (1 << 8),
	kSF10      = (1 << 9),
	kSF11      = (1 << 10),
	kSF12      = (1 << 11),
	kSF13      = (1 << 12),
	kSF14      = (1 << 13),
	kSF15      = (1 << 14),
	kSF16      = (1 << 15),
	kSF17      = (1 << 16),
	kSF18      = (1 << 17),
	kSF19      = (1 << 18),
	kSF20      = (1 << 19),
	kSF21      = (1 << 20),
	kSF22      = (1 << 21),
	kSF23      = (1 << 22),
	kSF24      = (1 << 23),
	kSF25      = (1 << 24),
	kSF26      = (1 << 25),
	kSF27      = (1 << 26),
	kSF28      = (1 << 27),
	kSF29      = (1 << 28),
	kSF30      = (1 << 29),
	kSF31      = (1 << 30),
	kSF32      = (1 << 31)
};

enum SpriteGroupFlags {
	kSGF1  = 1 << 0,
	kSFG2  = 1 << 1
};

struct SpriteInfo {
	int field_0;
	int flags;
	int res_id;
	int res_state;
	int group_num;
	int field_14;
	int field_18;
	int bbox_xmin;
	int bbox_ymin;
	int bbox_xmax;
	int bbox_ymax;
	int field_2C;
	int field_30;
	int field_34;
	int field_38;
	int tx;
	int ty;
	int field_44;
	int field_48;
	int field_4C;
	int imglist_num;
	int field_54;
	int res_wiz_states;
	int rot_angle;
	int zoom;
	int field_64;
	int field_68;
	int field_6C;
	int field_70;
	int field_74;
	int field_78;
	int field_7C;
	int field_80;
	int class_flags;
};

struct SpriteGroup {
	int field_0;
	int field_4;
	int field_8;
	int field_C;
	int field_10;
	int flags;
	int tx;
	int ty;
	int field_20;
	int scaling;
	int scale_x;
	int scale_y;
	int field_30;
	int field_34;
	int field_38;
	int field_3C;
};

	int _varNumSpriteGroups;
	int _numSpritesToProcess;
	int _varNumSprites;
	int _varNumImgLists;
	SpriteInfo *_spriteTable;
	SpriteGroup *_spriteGroups;
	SpriteInfo **_activeSpritesTable;
	uint32 *_imageListTable; // XXX wrong type
	uint16 *_imageListStack;
	int _curSprImageListNum;


} // End of namespace Scumm

#endif