24 #ifndef HOPKINS_BASE_TYPES_H 25 #define HOPKINS_BASE_TYPES_H 27 #include "common/array.h" 28 #include "common/scummsys.h" 32 static const int kBaseMapWidth = 64;
33 static const int kBaseMapHeight = 64;
34 static const int kBaseMapCellCount = kBaseMapWidth * kBaseMapHeight;
35 static const int kBaseAckGridArray = (kBaseMapWidth + 2) * (kBaseMapHeight + 2);
36 static const int kBaseCellSize = 64;
37 static const int kBaseCellShift = 6;
38 static const int kBaseGridMask = 0xffc0;
39 static const int kBaseWorldExtent = kBaseMapWidth * kBaseCellSize;
41 static const int kBaseFixedShift = 16;
42 static const int32 kBaseFixedOne = 1 << kBaseFixedShift;
45 static const int kBaseAngleCount = 1920;
46 static const int kBaseAngleHalfFov = 160;
47 static const int kBaseQuarterTurn = 480;
48 static const int kBaseHalfTurn = 960;
49 static const int kBaseThreeQuarterTurn = 1440;
51 static const int kBaseFrameWidth = 320;
52 static const int kBaseFrameHeight = 200;
53 static const int kBaseViewWidth = 320;
54 static const int kBaseViewHeight = 180;
55 static const int kBaseViewHalfWidth = 160;
56 static const int kBaseHorizon = 90;
57 static const int kBaseMaximumDistance = 2048;
58 static const int kBaseMinimumWallHeight = 8;
59 static const int kBaseMaximumWallHeight = 960;
61 static const int kBaseMaxObjects = 60;
62 static const int kBaseMaxDoors = 20;
64 static const uint16 kBaseWallTransparent = 0x0800;
65 static const uint16 kBaseWallMulti = 0x0400;
66 static const uint16 kBaseWallUpper = 0x0200;
67 static const uint16 kBaseWallPass = 0x0100;
69 static const uint16 kBaseDoorSecret = 0x8000;
70 static const uint16 kBaseDoorLocked = 0x4000;
71 static const uint16 kBaseDoorSlide = 0x2000;
72 static const uint16 kBaseDoorSplit = 0x1000;
73 static const uint16 kBaseDoorOpening = 0x0080;
74 static const uint16 kBaseDoorClosing = 0x0040;
75 static const uint16 kBaseDoorXCode = 60;
76 static const uint16 kBaseDoorSideCode = 59;
77 static const uint16 kBaseDoorYCode = 62;
78 static const uint16 kBaseExitBitmap = 15;
80 inline int normalizeBaseAngle(
int angle) {
81 angle %= kBaseAngleCount;
83 angle += kBaseAngleCount;
87 inline int baseMapIndex(
int x,
int y) {
88 return y * kBaseMapWidth + x;
91 inline int baseWorldMapIndex(
int x,
int y) {
92 return (y & kBaseGridMask) + (x >> kBaseCellShift);
97 kBaseObjectFiring = 2,
116 BaseBitmap() : width(0), height(0), columnMajor(
false) {}
119 return width && height && pixels.
size() == (uint32)width * height;
122 byte sample(uint x, uint y)
const {
127 return columnMajor ? pixels[x * height + y] : pixels[y * width + x];
141 BaseDoor() : mPos(-1), mPos1(-1), mCode(0), mCode1(0), offset(0),
142 speed(0), type(0), flags(0) {}
160 BaseObject() : active(
false), passable(
false), direction(0), x(0), y(0),
161 mapPos(0), id(0), bitmap(1), animationTick(0), mode(kBaseObjectChase),
162 timer(0), oldX(0), oldY(0) {}
176 BaseRayHit() : hit(
false), axis(kBaseRayNone), code(0), mapPos(-1),
177 textureColumn(0), distance(kBaseMaximumDistance - 1),
178 rawDistance(0x7fffffff), worldX(0), worldY(0) {}
192 #endif // HOPKINS_BASE_TYPES_H
Definition: base_types.h:145
Definition: base_types.h:181
Definition: base_types.h:165
Definition: base_types.h:131
size_type size() const
Definition: array.h:316
Definition: base_types.h:109