X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fplayer.cpp;h=f9a6032fd2155f2262930a4bb0ae9cf6497c8512;hb=cf4de5d58eb99a11369c329c01bfa5abe4b0a398;hp=c25b39531d0391d2eea2ea1e4658eae0b1fed04d;hpb=d4d4e5e7e87c9d3710ca91d5e3e57de03f03f6be;p=supertux.git diff --git a/src/player.cpp b/src/player.cpp index c25b39531..f9a6032fd 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -31,6 +31,7 @@ #include "tilemap.h" #include "camera.h" #include "gameobjs.h" +#include "interactive_object.h" #include "screen/screen.h" // behavior definitions: @@ -57,7 +58,8 @@ PlayerKeymap keymap; PlayerKeymap::PlayerKeymap() { - keymap.jump = SDLK_UP; + keymap.jump = SDLK_SPACE; + keymap.activate = SDLK_UP; keymap.duck = SDLK_DOWN; keymap.left = SDLK_LEFT; keymap.right = SDLK_RIGHT; @@ -73,6 +75,7 @@ void player_input_init(player_input_type* pplayer_input) pplayer_input->right = UP; pplayer_input->up = UP; pplayer_input->old_up = UP; + pplayer_input->activate = UP; } Player::Player() @@ -156,6 +159,23 @@ Player::key_event(SDLKey key, int state) input.fire = state; return true; } + else if(key == keymap.activate) + { + input.activate = state; + + if(state == DOWN) { + /** check for interactive objects */ + for(Sector::InteractiveObjects::iterator i + = Sector::current()->interactive_objects.begin(); + i != Sector::current()->interactive_objects.end(); ++i) { + if(rectcollision(base, (*i)->get_area())) { + (*i)->interaction(INTERACTION_ACTIVATE); + } + } + } + + return true; + } else return false; } @@ -751,12 +771,9 @@ Player::draw(DrawingContext& context) largetux_star->draw(context, pos, LAYER_OBJECTS + 2); } -#if 0 // TODO if (debug_mode) - fillrect(base.x - viewport.get_translation().x, - base.y - viewport.get_translation().y, - base.width, base.height, 75,75,75, 150); -#endif + context.draw_filled_rect(Vector(base.x, base.y), + Vector(base.width, base.height), Color(75,75,75, 150), LAYER_OBJECTS+1); } void