Acid.
[sdlbotor.git] / Robot.cpp
blob7f161560334d01fb23950e372dcd5abb4c8f3cfc
1 #include "Robot.h"
2 #include "globalfunc.h"
3 #include "Map.h"
4 #include "Game.h"
6 namespace botor
9 Robot::Robot( Uint8 X, Uint8 Y ) : LivingMapObject( X, Y )
11 walking = true;
12 vX = sign( Game::getPlayer()->getMapX() - mapX );
13 vY = sign( Game::getPlayer()->getMapY() - mapY );
14 StartMovement();
17 float Robot::SPEED() { return ROBOT_SPEED; }
19 bool Robot::isWalkable( Uint8 X, Uint8 Y )
21 Tile *t = Game::getMap()->tileAt(X, Y);
22 if(
23 (isBitSet( t->typeMask, Tile::TILE_WALKABLE ) ||
24 isBitSet( t->typeMask, Tile::TILE_EFENCE )) &&
25 !Game::getMap()->isRobotOn(mapX+vX, mapY+vY)
28 return true;
30 else
31 return false;
34 void Robot::OnTile( Tile *t )
36 if( isBitSet( t->typeMask, Tile::TILE_EFENCE ) )
38 Game::getMap()->RemoveTile( mapX, mapY );
39 Die();
42 if( mapX == Game::getPlayer()->getMapX() &&
43 mapY == Game::getPlayer()->getMapY() )
45 Game::getPlayer()->Die();
46 Die();
49 vX = sign( Game::getPlayer()->getMapX() - mapX );
50 vY = sign( Game::getPlayer()->getMapY() - mapY );