|
From: Rob <geo...@us...> - 2006-01-29 21:06:24
|
Update of /cvsroot/timewarp/source/games In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18068/source/games Modified Files: gflmelee.cpp gsc1arena.cpp Log Message: Index: gflmelee.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gflmelee.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** gflmelee.cpp 3 Sep 2005 19:49:44 -0000 1.31 --- gflmelee.cpp 29 Jan 2006 21:06:15 -0000 1.32 *************** *** 1583,1600 **** - BITMAP* copybmp( BITMAP* src ) - { - STACKTRACE; - - BITMAP *dest; - - // copied from vanguard - dest = create_bitmap_ex(bitmap_color_depth(screen), src->w, src->h); //Create a new bitmap - if(!dest) return NULL; //If failed, return NULL - - blit(src, dest, 0, 0, 0, 0, src->w, src->h); //Copy bitmap from datafile - - return dest; - } --- 1583,1586 ---- Index: gsc1arena.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gsc1arena.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gsc1arena.cpp 11 Jul 2005 18:31:03 -0000 1.1 --- gsc1arena.cpp 29 Jan 2006 21:06:15 -0000 1.2 *************** *** 72,75 **** --- 72,82 ---- virtual void register_events(); + + + Ship *last_playership[max_players]; + BITMAP *bmp_show[128]; + void menu_data_init(NPI *player); + void menu_data_cleanup(NPI *player); + bool menu_data_initialized; }; *************** *** 88,91 **** --- 95,99 ---- + // set the anti-alias to 0: int antia_on = get_config_int(NULL, "Anti-AliasingOn",0);; *************** *** 233,236 **** --- 241,249 ---- + menu_data_initialized = false; + for ( i = 0; i < num_players; ++i ) + { + last_playership[i] = 0; + } } *************** *** 253,256 **** --- 266,313 ---- + void SC1Arena::menu_data_init(NPI *player) + { + int i; + + if (player->fleet->getSize() > 32) + { + tw_error("There are too many ships in this fleet for display"); + } + + for ( i = 0; i < player->fleet->getSize(); ++i ) + { + ShipType *t; + t = player->fleet->getShipType(i); + + + // temp load data + if (!t->data->islocked()) + t->data->load(); + + bmp_show[i] = copybmp( t->data->spriteShip->get_bitmap(0) ); + + // unload the temp data right away + if (!t->data->islocked()) + t->data->unload(); + + } + + menu_data_initialized = true; + } + + + void SC1Arena::menu_data_cleanup(NPI *player) + { + int i; + + for ( i = 0; i < player->fleet->getSize(); ++i ) + { + destroy_bitmap(bmp_show[i]); + } + + menu_data_initialized = false; + } + + void SC1Arena::animate( Frame* frame ) { *************** *** 260,302 **** Game::animate( frame ); - FULL_REDRAW = false; ! // if a local player has to choose a new ship... ! int p; ! for ( p = 0; p < num_network; ++p ) { ! if (!player[p]) ! continue; ! ! if (player[p]->islocal() && !playership[p]) { ! FULL_REDRAW = true; ! int xpos = 10; ! int ypos = screen->h / 2; ! // show all ships that are still available to you ! int i; ! for ( i = 0; i < player[p]->fleet->getSize(); ++i ) { ! ShipType *t; ! t = player[p]->fleet->getShipType(i); ! ! if (!t->data->islocked()) ! t->data->load(); ! ! BITMAP *bmp = t->data->spriteShip->get_bitmap(0); ! masked_blit(bmp, frame->surface, 0, 0, xpos, ypos, bmp->w, bmp->h); ! if (i == player_shipchoice) { ! rect(frame->surface, xpos, ypos, xpos+bmp->w-1, ypos+bmp->h-1, makecol(200,200,200)); } - - xpos += bmp->w + 5; - } } - } } --- 317,362 ---- Game::animate( frame ); ! if (menu_data_initialized) { ! FULL_REDRAW = false; ! ! // if a local player has to choose a new ship... ! int p; ! for ( p = 0; p < num_network; ++p ) { ! if (!player[p]) ! continue; ! if (player[p]->islocal() && !playership[p]) { ! FULL_REDRAW = true; ! int xpos = 10; ! int ypos = screen->h / 2; ! // show all ships that are still available to you ! int i; ! for ( i = 0; i < player[p]->fleet->getSize(); ++i ) { ! //ShipType *t; ! //t = player[p]->fleet->getShipType(i); ! ! BITMAP *bmp = bmp_show[i]; ! masked_blit(bmp, frame->surface, 0, 0, xpos, ypos, bmp->w, bmp->h); ! ! if (i == player_shipchoice) ! { ! rect(frame->surface, xpos, ypos, xpos+bmp->w-1, ypos+bmp->h-1, makecol(200,200,200)); ! } ! ! xpos += bmp->w + 5; ! } } + } } + + } *************** *** 561,564 **** --- 621,629 ---- if (playership[i] && !playership[i]->exists()) playership[i] = 0; + + } + + for ( i = 0; i < num_players; ++i ) + { // bots: these should choose a new ship randomly *************** *** 598,603 **** continue; ! if (player[p]->islocal() && !playership[p]) { int keys = player[p]->control->keys; --- 663,694 ---- continue; ! ! ! if (player[p]->islocal() && (!playership[p] || !last_playership[p])) { + // check change in the state of your player ship + if (menu_data_initialized == false) + { + // it's time to reinitialize the menu + if (!playership[p]) + { + // initialize. + menu_data_init(player[p]); + } + + } else { + + // detect if a ship is chosen + // otherwise, don't clean it up yet... + if (playership[p] && !last_playership[p]) + { + // clean it up. + menu_data_cleanup(player[p]); + } + } + // it's been used for detection, that's all you need. + last_playership[p] = playership[p]; + + int keys = player[p]->control->keys; *************** *** 643,646 **** --- 734,739 ---- } } + + } |