, partyLayout(0)
, monsters(0)
, numMonsters(0)
+, direction(ORIENTATION_NORTH)
, orientation(ORIENTATION_NORTH)
, speed(0)
, flags(0) {
void Entity::SetOrientation(Orientation o) {
orientation = o;
- UpdateVelocity();
if (CanTurn()) {
- runner.SetColOffset(orientation);
+ runner.SetColOffset(o);
}
}
+void Entity::SetDirection(Orientation o) {
+ direction = o;
+ UpdateVelocity();
+ SetOrientation(o);
+}
+
void Entity::SetSpeed(Fixed<8> s) {
speed = s;
UpdateVelocity();
velocity = Vector<Fixed<8> >();
return;
}
- switch (orientation) {
+ switch (direction) {
case ORIENTATION_NORTH:
velocity = Vector<Fixed<8> >(0, -speed);
break;
bool Entity::TileLock(const math::Vector<int> &tileSize) const {
- // TODO: change position to point to the top-left corner of a tile
Vector<int> tilePosition(ToInt(position));
return tilePosition % tileSize == Vector<int>();
}
void Entity::Render(SDL_Surface *dest, const Vector<int> &offset) const {
- // TODO: configurable sprite offsets
if (runner.Running()) {
runner.Draw(dest, offset + ToInt(position) + spriteOffset);
} else {