24#ifndef HOPKINS_BASE_ENGINE_H
25#define HOPKINS_BASE_ENGINE_H
27#include "hopkins/base_data.h"
28#include "hopkins/base_types.h"
30#include "common/array.h"
31#include "common/scummsys.h"
42 bool contextRequested;
45 BaseInputState() : forward(
false), backward(
false), turnLeft(
false),
46 turnRight(
false), fire(
false), exitRequested(
false), contextRequested(
false),
47 toggleTextures(
false) {}
51 kBaseSoundEnemyShot = 2,
52 kBaseSoundPlayerShot = 3,
53 kBaseSoundDoorOrExit = 4,
54 kBaseSoundGuardHit = 5
66 const BaseData &data()
const {
return _data; }
67 const uint16 *xGrid()
const {
return _xGrid; }
68 const uint16 *yGrid()
const {
return _yGrid; }
69 const BaseObject &object(
int id)
const {
return _objects[id]; }
70 const BaseDoor &door(
int id)
const {
return _doors[id]; }
72 void clearSoundEvents() { _soundEvents.
clear(); }
74 int playerX()
const {
return _playerX; }
75 int playerY()
const {
return _playerY; }
76 int playerAngle()
const {
return _playerAngle; }
77 int health()
const {
return _health; }
78 int weaponCounter()
const {
return _weaponCounter; }
79 bool texturesEnabled()
const {
return _texturesEnabled; }
80 int entryReturnId()
const {
return _entry ? _entry->returnId : 0; }
82 BaseRayHit castRay(
int angle,
int viewColumn)
const;
83 BaseRayHit castRayFrom(int16 originX, int16 originY,
int angle,
int viewColumn)
const;
84 int objectAngle(int32 deltaX, int32 deltaY)
const;
85 int objectDistance(
const BaseObject &
object)
const;
90 void updateTurn(
const BaseInputState &input);
91 void updatePlayer(
const BaseInputState &input);
92 void updateWeapon(
const BaseInputState &input);
95 void updateGuard(BaseObject &
object);
97 uint16 getWallX(
int mapPos)
const;
98 uint16 getWallY(
int mapPos)
const;
99 int moveWithAckCollision(int16 &x, int16 &y,
int angle,
int amount,
int ignoredObject)
const;
100 int movePlayer(
int angle,
int amount);
101 int moveObject(
int objectId,
int angle,
int amount);
102 int checkObjectPosition(int16 x, int16 y,
int ignoredObject)
const;
103 int checkObjectPositionShot(int16 x, int16 y,
int angle);
104 int checkHitAt(int16 x, int16 y,
int angle)
const;
105 int moveShotStep(int16 &x, int16 &y,
int angle,
int amount);
106 int testGuardShotPosition(int16 x, int16 y)
const;
107 bool testWall(
int mapPos)
const;
109 int checkDoorOpen(int16 x, int16 y,
int angle);
111 int findDoor(
int mapPos)
const;
112 int findDoorSlot(
int mapPos)
const;
113 const BaseDoor *doorForMapPosition(
int mapPos)
const;
114 BaseDoor *doorForMapPosition(
int mapPos);
115 int doorOffsetForMapPosition(
int mapPos)
const;
117 bool guardCanShoot(
int objectId);
121 int castXRay(int16 originX, int16 originY,
int angle, BaseRayHit &hit)
const;
122 int castYRay(int16 originX, int16 originY,
int angle, BaseRayHit &hit)
const;
123 void finalizeRayDistance(BaseRayHit &hit,
int viewColumn)
const;
125 const BaseData &_data;
126 const BaseEntryPoint *_entry;
127 uint16 _xGrid[kBaseAckGridArray];
128 uint16 _yGrid[kBaseAckGridArray];
129 BaseObject _objects[kBaseMaxObjects + 1];
130 BaseDoor _doors[kBaseMaxDoors];
137 bool _texturesEnabled;
void clear()
Definition: array.h:321
Definition: base_data.h:35
Definition: base_engine.h:57
int tick(BaseInputState &input)
Definition: base_types.h:181