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 ----
}
}
+
+
}
|