X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmousecursor.cpp;h=ff794b206b018b7a73120b145d1b2ade05214ada;hb=157cef71aeb9ae25b7bb90f37dda11bc09329d11;hp=9814fa84b35c2f6aac5aa81a3c290ddcb2138f5f;hpb=e147eea9f117721dbcf79d1465452b6ae91fe33c;p=supertux.git diff --git a/src/mousecursor.cpp b/src/mousecursor.cpp index 9814fa84b..ff794b206 100644 --- a/src/mousecursor.cpp +++ b/src/mousecursor.cpp @@ -1,35 +1,44 @@ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -// by Ricardo Cruz +// $Id$ +// +// SuperTux - A Jump'n Run +// Copyright (C) 2004 Ricardo Cruz +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "screen.h" #include "mousecursor.h" -MouseCursor::MouseCursor(std::string cursor_file, int frames) -{ - texture_load(&cursor,cursor_file.c_str(),USE_ALPHA); +MouseCursor* MouseCursor::current_ = 0; +MouseCursor::MouseCursor(std::string cursor_file, int frames) : mid_x(0), mid_y(0) +{ + cursor = new Surface(cursor_file, USE_ALPHA); + cur_state = MC_NORMAL; cur_frame = 0; tot_frames = frames; timer.init(false); timer.start(MC_FRAME_PERIOD); - + SDL_ShowCursor(SDL_DISABLE); } MouseCursor::~MouseCursor() { - texture_free(&cursor); + delete cursor; SDL_ShowCursor(SDL_ENABLE); } @@ -44,12 +53,18 @@ void MouseCursor::set_state(int nstate) cur_state = nstate; } +void MouseCursor::set_mid(int x, int y) +{ + mid_x = x; + mid_y = y; +} + void MouseCursor::draw() { int x,y,w,h; Uint8 ispressed = SDL_GetMouseState(&x,&y); - w = cursor.w / tot_frames; - h = cursor.h / MC_STATES_NB; + w = cursor->w / tot_frames; + h = cursor->h / MC_STATES_NB; if(ispressed &SDL_BUTTON(1) || ispressed &SDL_BUTTON(2)) { if(cur_state != MC_CLICK) @@ -64,7 +79,7 @@ void MouseCursor::draw() cur_state = state_before_click; } - if(timer_get_left(&timer) < 0 && tot_frames > 1) + if(timer.get_left() < 0 && tot_frames > 1) { cur_frame++; if(cur_frame++ >= tot_frames) @@ -73,5 +88,5 @@ void MouseCursor::draw() timer.start(MC_FRAME_PERIOD); } - texture_draw_part(&cursor, w*cur_frame, h*cur_state , x, y, w, h); + cursor->draw_part(w*cur_frame, h*cur_state , x-mid_x, y-mid_y, w, h); }