1 #include "globalfunc.h"
12 Tileset
Player::PLAYER_TILESET( "player.png" );
14 Player::Player( Uint8 X
, Uint8 Y
) : LivingMapObject( X
, Y
), lives(3),
15 ani_idle( 0, 0, 0, false ),
16 ani_walking( 1, 2, 10 ),
17 ani_immuneIdle( 3, 0, 0, false ),
18 ani_immuneWalking( 4, 2, 10 ),
22 ani_player
= new DAnimation( &PLAYER_TILESET
);
24 p_ani_idle
= &ani_idle
;
25 p_ani_walking
= &ani_walking
;
28 ani_player
->load( p_ani_idle
);
32 // Player::~Player() { }
34 void Player::InitWalking( Uint8 X
, Uint8 Y
)
41 ani_player
->load( p_ani_walking
);
52 bool Player::isWalkable( Uint8 X
, Uint8 Y
)
54 Tile
*t
= Game::getMap()->tileAt(X
, Y
);
56 if( isBitSet( t
->typeMask
, Tile::TILE_EFENCE
) )
60 if( Game::getMap()->PushPushable( X
, Y
, vX
, vY
) )
68 else if( isBitSet( t
->typeMask
, Tile::TILE_WALKABLE
) )
72 else if( isBitSet( t
->typeMask
, Tile::TILE_PUSHABLE
) )
74 if( Game::getMap()->PushPushable( X
, Y
, vX
, vY
) )
83 void Player::OnTile( Tile
*t
)
85 if( isBitSet( t
->typeMask
, Tile::TILE_EFENCE
) )
87 Game::getMap()->RemoveTile( mapX
, mapY
);
91 if( Object
*o
= Game::getMap()->getObject( mapX
, mapY
) )
93 o
->OnPlayerOnTile( this );
102 void Player::HandleInput( SDL_Event
*event
)
104 switch( event
->type
)
110 switch( event
->key
.keysym
.sym
)
113 InitWalking( 0, +1 );
116 InitWalking( 0, -1 );
119 InitWalking( -1, 0 );
122 InitWalking( +1, 0 );
131 // Game::getMap()->Acid( mapX, mapY );
143 switch( event
->key
.keysym
.sym
)
149 ani_player
->load( p_ani_idle
);
154 ani_player
->load( p_ani_idle
);
169 LivingMapObject::Draw();
172 void Player::ResetPlayer()
178 unsigned int Player::getLives() { return lives
; }
180 void Player::Pickup( Object
*o
)
186 void Player::Drop( Object
*o
)
188 if( Object
*obj
= inv
.removeObject() )
190 Game::getMap()->insertObject( obj
, mapX
, mapY
);
197 void Player::Use( Object
*o
)
199 if( Object
*obj
= inv
.removeObject() )
202 obj
->OnActivation( this );
204 if( obj
->getNUse() == ObjectClass::NUseOnce
)
208 else if( obj
->getNUse() == ObjectClass::NUseDrop
)
210 Game::getMap()->insertObject( obj
, mapX
, mapY
);
216 inv
.addObject( obj
);
222 void Player::SetImmune( bool newstate
)
228 p_ani_idle
= &ani_immuneIdle
;
229 p_ani_walking
= &ani_immuneWalking
;
233 p_ani_idle
= &ani_idle
;
234 p_ani_walking
= &ani_walking
;