From: <js...@us...> - 2005-05-31 06:41:49
|
Update of /cvsroot/exult/exult In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv642 Modified Files: effects.cc effects.h Log Message: Added 'reps' to Sprite support Index: effects.cc =================================================================== RCS file: /cvsroot/exult/exult/effects.cc,v retrieving revision 1.124 retrieving revision 1.125 diff -u -d -r1.124 -r1.125 --- effects.cc 21 May 2004 17:02:16 -0000 1.124 +++ effects.cc 31 May 2005 06:41:33 -0000 1.125 @@ -326,9 +326,11 @@ int num, // Index. Tile_coord p, // Position within world. int dx, int dy, // Add to offset for each frame. - int delay // Delay (msecs) before starting. - ) : sprite(num, 0, SF_SPRITES_VGA), item(0), pos(p), xoff(0), yoff(0), - deltax(dx), deltay(dy) + int delay, // Delay (msecs) before starting. + int frm, // Starting frame. + int rps // Reps, or <0 to go through frames. + ) : sprite(num, frm, SF_SPRITES_VGA), item(0), pos(p), + xoff(0), yoff(0), deltax(dx), deltay(dy), reps(rps) { Game_window *gwin = Game_window::get_instance(); frames = sprite.get_num_frames(); @@ -345,9 +347,11 @@ int num, // Index. Game_object *it, // Item to put effect by. int xf, int yf, // Offset from actor in pixels. - int dx, int dy // Add to offset on each frame. - ) : sprite(num, 0, SF_SPRITES_VGA), item(it), xoff(xf), - yoff(yf), deltax(dx), deltay(dy) + int dx, int dy, // Add to offset on each frame. + int frm, // Starting frame. + int rps // Reps, or <0 to go through frames. + ) : sprite(num, frm, SF_SPRITES_VGA), item(it), xoff(xf), + yoff(yf), deltax(dx), deltay(dy), reps(rps) { pos = item->get_tile(); Game_window *gwin = Game_window::get_instance(); @@ -390,7 +394,7 @@ Game_window *gwin = Game_window::get_instance(); int delay = gwin->get_std_delay();// Delay between frames. Needs to // match usecode animations. - if (frame_num == frames) // At end? + if (!reps || (reps < 0 && frame_num == frames)) // At end? { // Remove & delete this. eman->remove_effect(this); gwin->set_all_dirty(); @@ -403,6 +407,11 @@ xoff += deltax; // Add deltas. yoff += deltay; frame_num++; // Next frame. + if (reps > 0) // Given a count? + { + --reps; + frame_num %= frames; + } add_dirty(frame_num); // Want to paint new frame. sprite.set_frame(frame_num); // Add back to queue for next time. Index: effects.h =================================================================== RCS file: /cvsroot/exult/exult/effects.h,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- effects.h 31 Aug 2003 17:32:23 -0000 1.56 +++ effects.h 31 May 2005 06:41:33 -0000 1.57 @@ -100,12 +100,13 @@ Tile_coord pos; // Position within world. int xoff, yoff; // Offset from position in pixels. int deltax, deltay; // Add to xoff, yoff on each frame. + int reps; // Repetitions, or -1. void add_dirty(int frnum); public: Sprites_effect(int num, Tile_coord p, int dx = 0, int dy = 0, - int delay = 0); + int delay = 0, int frm = 0, int rps = -1); Sprites_effect(int num, Game_object *it, - int xf, int yf, int dx, int dy); + int xf, int yf, int dx, int dy, int frm = 0, int rps = -1); // For Time_sensitive: virtual void handle_event(unsigned long time, long udata); // Render. |