[Super-tux-commit] supertux/src badguy.cpp,1.9,1.10 collision.cpp,1.5,1.6 gameloop.cpp,1.18,1.19 lev
Brought to you by:
wkendrick
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14918 Modified Files: badguy.cpp collision.cpp gameloop.cpp leveleditor.cpp player.cpp player.h scene.cpp scene.h special.cpp Log Message: - converted Player into a class (naming still needs a bit of cleanup Index: scene.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/scene.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- scene.cpp 24 Mar 2004 16:12:51 -0000 1.5 +++ scene.cpp 24 Mar 2004 17:41:04 -0000 1.6 @@ -25,7 +25,7 @@ int distro_counter; timer_type super_bkgd_timer; float scroll_x; -int frame; +int global_frame_counter; std::vector<bouncy_distro_type> bouncy_distros; std::vector<broken_brick_type> broken_bricks; std::vector<bouncy_brick_type> bouncy_bricks; @@ -33,7 +33,7 @@ std::vector<floating_score_type> floating_scores; std::vector<upgrade_type> upgrades; std::vector<bullet_type> bullets; -player_type tux; +Player tux; texture_type img_box_full, img_box_empty, img_mints, img_coffee, img_super_bkgd, img_red_glow; timer_type time_left; double frame_ratio; Index: player.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- player.h 23 Mar 2004 17:25:15 -0000 1.16 +++ player.h 24 Mar 2004 17:41:04 -0000 1.17 @@ -58,9 +58,36 @@ void player_input_init(player_input_type* pplayer_input); -struct player_type +extern texture_type tux_life; +extern texture_type tux_right[3]; +extern texture_type tux_left[3]; +extern texture_type bigtux_right[3]; +extern texture_type bigtux_left[3]; +extern texture_type bigtux_right_jump; +extern texture_type bigtux_left_jump; +extern texture_type ducktux_right; +extern texture_type ducktux_left; +extern texture_type skidtux_right; +extern texture_type skidtux_left; +extern texture_type firetux_right[3]; +extern texture_type firetux_left[3]; +extern texture_type bigfiretux_right[3]; +extern texture_type bigfiretux_left[3]; +extern texture_type bigfiretux_right_jump; +extern texture_type bigfiretux_left_jump; +extern texture_type duckfiretux_right; +extern texture_type duckfiretux_left; +extern texture_type skidfiretux_right; +extern texture_type skidfiretux_left; +extern texture_type cape_right[2]; +extern texture_type cape_left[2]; +extern texture_type bigcape_right[2]; +extern texture_type bigcape_left[2]; + +class Player { - player_input_type input; + public: + player_input_type input_; player_keymap_type keymap; int score; int distros; @@ -70,8 +97,8 @@ DyingType dying; int dir; bool jumping; + int frame_; int frame_main; - int frame; int lives; base_type base; base_type old_base; @@ -82,35 +109,26 @@ timer_type frame_timer; physic_type vphysic; physic_type hphysic; -}; - -extern texture_type tux_life, - tux_right[3], tux_left[3], - bigtux_right[3], bigtux_left[3], - bigtux_right_jump, bigtux_left_jump, - ducktux_right, ducktux_left, - skidtux_right, skidtux_left, - firetux_right[3], firetux_left[3], - bigfiretux_right[3], bigfiretux_left[3], - bigfiretux_right_jump, bigfiretux_left_jump, - duckfiretux_right, duckfiretux_left, - skidfiretux_right, skidfiretux_left, - cape_right[2], cape_left[2], - bigcape_right[2], bigcape_left[2]; -void player_init(player_type* pplayer); -int player_key_event(player_type* pplayer, SDLKey key, int state); -void player_level_begin(player_type* pplayer); -void player_action(player_type* pplayer); -void player_input(player_type* pplayer); -void player_grabdistros(player_type *pplayer); -void player_draw(player_type* pplayer); -void player_collision(player_type* pplayer,void* p_c_object, int c_object); -void player_kill(player_type *pplayer, int mode); -void player_dying(player_type *pplayer); -void player_remove_powerups(player_type *pplayer); -void player_keep_in_bounds(player_type *pplayer); -bool player_on_ground(player_type *pplayer); -bool player_under_solid(player_type *pplayer); + public: + void init(); + int key_event(SDLKey key, int state); + void level_begin(); + void action(); + void input(); + void grabdistros(); + void draw(); + void collision(void* p_c_object, int c_object); + void kill(int mode); + void is_dying(); + void player_remove_powerups(); + void keep_in_bounds(); + bool on_ground(); + bool under_solid(); + private: + void handle_horizontal_input(int dir); + void handle_vertical_input(); + void remove_powerups(); +}; #endif /*SUPERTUX_PLAYER_H*/ Index: collision.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/collision.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- collision.cpp 24 Mar 2004 16:12:51 -0000 1.5 +++ collision.cpp 24 Mar 2004 17:41:04 -0000 1.6 @@ -261,7 +261,7 @@ } else { - player_collision(&tux, &bad_guys[i], CO_BADGUY); + tux.collision(&bad_guys[i], CO_BADGUY); } } } Index: leveleditor.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/leveleditor.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- leveleditor.cpp 24 Mar 2004 16:12:51 -0000 1.15 +++ leveleditor.cpp 24 Mar 2004 17:41:04 -0000 1.16 @@ -854,7 +854,7 @@ case 'x': case 'y': case 'A': - texture_draw(&img_distro[(frame / 5) % 4], x * 32 - ((int)pos_x % 32), y*32); + texture_draw(&img_distro[(global_frame_counter / 5) % 4], x * 32 - ((int)pos_x % 32), y*32); break; default: break; @@ -876,7 +876,7 @@ /* Draw the player: */ /* for now, the position is fixed at (0, 240) */ - texture_draw(&tux_right[(frame / 5) % 3], 0 - pos_x, 240); + texture_draw(&tux_right[(global_frame_counter / 5) % 3], 0 - pos_x, 240); } void le_checkevents() Index: player.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- player.cpp 24 Mar 2004 16:12:51 -0000 1.7 +++ player.cpp 24 Mar 2004 17:41:04 -0000 1.8 @@ -17,19 +17,31 @@ #include "scene.h" #include "screen.h" -texture_type tux_life, -tux_right[3], tux_left[3], -bigtux_right[3], bigtux_left[3], -bigtux_right_jump, bigtux_left_jump, -ducktux_right, ducktux_left, -skidtux_right, skidtux_left, -firetux_right[3], firetux_left[3], -bigfiretux_right[3], bigfiretux_left[3], [...1254 lines suppressed...] scroll_x = ((current_level.width * 32) - screen->w); } - else if (pplayer->base.x> 608 + scroll_x) + else if (base.x> 608 + scroll_x) { /* ... unless there's no more to scroll! */ - /*pplayer->base.x= 608 + scroll_x;*/ + /*base.x= 608 + scroll_x;*/ } /* Keep in-bounds, vertically: */ - if (pplayer->base.y > screen->h) + if (base.y > screen->h) { - player_kill(&tux,KILL); + kill(KILL); } } Index: badguy.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- badguy.cpp 24 Mar 2004 16:12:51 -0000 1.9 +++ badguy.cpp 24 Mar 2004 17:41:04 -0000 1.10 @@ -165,7 +165,7 @@ base.y = tux.base.y + tux.base.height/1.5 - base.height; } - if(tux.input.fire != DOWN) /* SHOOT! */ + if(tux.input_.fire != DOWN) /* SHOOT! */ { if(dir == LEFT) base.x -= 24; @@ -377,13 +377,13 @@ /* Alive: */ if (dir == LEFT) { - texture_draw(&img_bsod_left[(frame / 5) % 4], + texture_draw(&img_bsod_left[(global_frame_counter / 5) % 4], base.x - scroll_x, base.y); } else { - texture_draw(&img_bsod_right[(frame / 5) % 4], + texture_draw(&img_bsod_right[(global_frame_counter / 5) % 4], base.x - scroll_x, base.y); } @@ -436,13 +436,13 @@ /* Not flat: */ if (dir == LEFT) { - texture_draw(&img_laptop_left[(frame / 5) % 3], + texture_draw(&img_laptop_left[(global_frame_counter / 5) % 3], base.x - scroll_x, base.y); } else { - texture_draw(&img_laptop_right[(frame / 5) % 3], + texture_draw(&img_laptop_right[(global_frame_counter / 5) % 3], base.x - scroll_x, base.y); } @@ -549,7 +549,7 @@ BadGuy::collision(void *p_c_object, int c_object) { BadGuy* pbad_c = NULL; - player_type* pplayer_c = NULL; + Player* pplayer_c = NULL; switch (c_object) { @@ -600,7 +600,7 @@ break; case CO_PLAYER: - pplayer_c = (player_type*) p_c_object; + pplayer_c = static_cast<Player*>(p_c_object); if(kind != BAD_MONEY) { if (kind == BAD_BSOD) Index: special.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/special.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- special.cpp 22 Mar 2004 15:47:31 -0000 1.3 +++ special.cpp 24 Mar 2004 17:41:04 -0000 1.4 @@ -221,7 +221,7 @@ void upgrade_collision(upgrade_type* pupgrade, void* p_c_object, int c_object) { - player_type* pplayer = NULL; + Player* pplayer = NULL; switch (c_object) { @@ -229,7 +229,7 @@ /* Remove the upgrade: */ /* p_c_object is CO_PLAYER, so assign it to pplayer */ - pplayer = (player_type*) p_c_object; + pplayer = (Player*) p_c_object; upgrades.erase(static_cast<std::vector<upgrade_type>::iterator>(pupgrade)); Index: scene.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/scene.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- scene.h 24 Mar 2004 16:12:51 -0000 1.11 +++ scene.h 24 Mar 2004 17:41:04 -0000 1.12 @@ -35,7 +35,7 @@ extern timer_type super_bkgd_timer; extern float scroll_x; -extern int frame; +extern int global_frame_counter; extern std::vector<bouncy_distro_type> bouncy_distros; extern std::vector<broken_brick_type> broken_bricks; extern std::vector<bouncy_brick_type> bouncy_bricks; @@ -43,7 +43,7 @@ extern std::vector<floating_score_type> floating_scores; extern std::vector<upgrade_type> upgrades; extern std::vector<bullet_type> bullets; -extern player_type tux; +extern Player tux; extern texture_type img_box_full, img_box_empty, img_mints, img_coffee, img_super_bkgd, img_red_glow; extern timer_type time_left; extern double frame_ratio; Index: gameloop.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/gameloop.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- gameloop.cpp 24 Mar 2004 16:12:51 -0000 1.18 +++ gameloop.cpp 24 Mar 2004 17:41:04 -0000 1.19 @@ -133,7 +133,7 @@ if(show_menu) menu_event(&event.key.keysym); - if(player_key_event(&tux,key,DOWN)) + if(tux.key_event(key,DOWN)) break; switch(key) @@ -164,7 +164,7 @@ case SDL_KEYUP: /* A keyrelease! */ key = event.key.keysym.sym; - if(player_key_event(&tux,key,UP)) + if(tux.key_event(key, UP)) break; switch(key) @@ -236,32 +236,32 @@ case JOY_X: if (event.jaxis.value < -JOYSTICK_DEAD_ZONE) { - tux.input.left = DOWN; - tux.input.right = UP; + tux.input_.left = DOWN; + tux.input_.right = UP; } else if (event.jaxis.value > JOYSTICK_DEAD_ZONE) { - tux.input.left = UP; - tux.input.right = DOWN; + tux.input_.left = UP; + tux.input_.right = DOWN; } else { - tux.input.left = DOWN; - tux.input.right = DOWN; + tux.input_.left = DOWN; + tux.input_.right = DOWN; } break; case JOY_Y: if (event.jaxis.value > JOYSTICK_DEAD_ZONE) - tux.input.down = DOWN; + tux.input_.down = DOWN; else if (event.jaxis.value < -JOYSTICK_DEAD_ZONE) - tux.input.down = UP; + tux.input_.down = UP; else - tux.input.down = UP; + tux.input_.down = UP; /* Handle joystick for the menu */ if(show_menu) { - if(tux.input.down == DOWN) + if(tux.input_.down == DOWN) menuaction = MENU_ACTION_DOWN; else menuaction = MENU_ACTION_UP; @@ -273,15 +273,15 @@ break; case SDL_JOYBUTTONDOWN: if (event.jbutton.button == JOY_A) - tux.input.up = DOWN; + tux.input_.up = DOWN; else if (event.jbutton.button == JOY_B) - tux.input.fire = DOWN; + tux.input_.fire = DOWN; break; case SDL_JOYBUTTONUP: if (event.jbutton.button == JOY_A) - tux.input.up = UP; + tux.input_.up = UP; else if (event.jbutton.button == JOY_B) - tux.input.fire = UP; + tux.input_.fire = UP; if(show_menu) menuaction = MENU_ACTION_HIT; @@ -327,11 +327,11 @@ arrays_free(); return(0); } - player_level_begin(&tux); + tux.level_begin(); } else { - player_dying(&tux); + tux.is_dying(); /* No more lives!? */ @@ -356,7 +356,7 @@ /* Either way, (re-)load the (next) level... */ - player_level_begin(&tux); + tux.level_begin(); set_defaults(); level_free(¤t_level); @@ -385,10 +385,9 @@ play_current_music(); } - player_action(&tux); + tux.action(); /* Handle bouncy distros: */ - for (i = 0; i < bouncy_distros.size(); i++) { bouncy_distro_action(&bouncy_distros[i]); @@ -396,7 +395,6 @@ /* Handle broken bricks: */ - for (i = 0; i < broken_bricks.size(); i++) { broken_brick_action(&broken_bricks[i]); @@ -467,7 +465,7 @@ /* Draw screen: */ - if (tux.dying && (frame % 4) == 0) + if (tux.dying && (global_frame_counter % 4) == 0) clearscreen(255, 255, 255); else if(timer_check(&super_bkgd_timer)) texture_draw(&img_super_bkgd, 0, 0); @@ -507,25 +505,21 @@ /* (Bad guys): */ - for (i = 0; i < bad_guys.size(); ++i) { bad_guys[i].draw(); } /* (Tux): */ - - player_draw(&tux); + tux.draw(); /* (Bullets): */ - for (i = 0; i < bullets.size(); ++i) { bullet_draw(&bullets[i]); } /* (Floating scores): */ - for (i = 0; i < floating_scores.size(); ++i) { floating_score_draw(&floating_scores[i]); @@ -533,7 +527,6 @@ /* (Upgrades): */ - for (i = 0; i < upgrades.size(); ++i) { upgrade_draw(&upgrades[i]); @@ -541,7 +534,6 @@ /* (Bouncy distros): */ - for (i = 0; i < bouncy_distros.size(); ++i) { bouncy_distro_draw(&bouncy_distros[i]); @@ -549,7 +541,6 @@ /* (Broken bricks): */ - for (i = 0; i < broken_bricks.size(); ++i) { broken_brick_draw(&broken_bricks[i]); @@ -557,7 +548,6 @@ drawstatus(); - if(game_pause) { x = screen->h / 20; @@ -614,7 +604,7 @@ activate_bad_guys(); level_load_song(¤t_level); - player_init(&tux); + tux.init(); if(st_gl_mode != ST_GL_TEST) load_hs(); @@ -636,7 +626,7 @@ jump = false; done = 0; quit = 0; - frame = 0; + global_frame_counter = 0; game_pause = 0; timer_init(&fps_timer,true); timer_init(&frame_timer,true); @@ -667,12 +657,12 @@ if(!timer_check(&frame_timer)) { timer_start(&frame_timer,25); - ++frame; + ++global_frame_counter; } /* Handle events: */ - tux.input.old_fire = tux.input.fire; + tux.input_.old_fire = tux.input_.fire; game_event(); @@ -783,7 +773,7 @@ } else - player_kill(&tux,KILL); + tux.kill(KILL); /* Calculate frames per second */ @@ -1326,7 +1316,7 @@ texture_draw(&img_solid[3], x, y); else if (c == '$') { - z = (frame / 2) % 6; + z = (global_frame_counter / 2) % 6; if (z < 4) texture_draw(&img_distro[z], x, y); @@ -1337,7 +1327,7 @@ } else if (c == '^') { - z = (frame / 3) % 3; + z = (global_frame_counter / 3) % 3; texture_draw(&img_waves[z], x, y); } @@ -1350,7 +1340,7 @@ } else if (c == '\\') { - z = (frame / 3) % 2; + z = (global_frame_counter / 3) % 2; texture_draw(&img_flag[z], x + 16, y); } @@ -1601,7 +1591,7 @@ text_draw(&white_text,"Press ESC To Return",0,20,1); } - if (timer_get_left(&time_left) > TIME_WARNING || (frame % 10) < 5) + if (timer_get_left(&time_left) > TIME_WARNING || (global_frame_counter % 10) < 5) { sprintf(str, "%d", timer_get_left(&time_left) / 1000 ); text_draw(&white_text, "TIME", 224, 0, 1); @@ -1687,7 +1677,7 @@ fwrite(&score,sizeof(int),1,fi); fwrite(&distros,sizeof(int),1,fi); fwrite(&scroll_x,sizeof(float),1,fi); - fwrite(&tux,sizeof(player_type),1,fi); + fwrite(&tux,sizeof(Player),1,fi); timer_fwrite(&tux.invincible_timer,fi); timer_fwrite(&tux.skidding_timer,fi); timer_fwrite(&tux.safe_timer,fi); @@ -1740,7 +1730,7 @@ fread(&score,sizeof(int),1,fi); fread(&distros,sizeof(int),1,fi); fread(&scroll_x,sizeof(float),1,fi); - fread(&tux,sizeof(player_type),1,fi); + fread(&tux, sizeof(Player), 1, fi); timer_fread(&tux.invincible_timer,fi); timer_fread(&tux.skidding_timer,fi); timer_fread(&tux.safe_timer,fi); |