|
|
@ -1,4 +1,4 @@
|
|
|
|
/* $Id: multiwait.c,v 1.47 2004/09/25 11:48:36 patty21 Exp $
|
|
|
|
/* $Id: multiwait.c,v 1.48 2004/09/26 20:34:57 patty21 Exp $
|
|
|
|
multiwait.c - this manages only the network screen where
|
|
|
|
multiwait.c - this manages only the network screen where
|
|
|
|
everyone have to select it's players and where even the basic chat is inside
|
|
|
|
everyone have to select it's players and where even the basic chat is inside
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -21,8 +21,8 @@ static int mw_num_players_y; // number of players in the y
|
|
|
|
static int mw_num_players;
|
|
|
|
static int mw_num_players;
|
|
|
|
_point mw_pos[MAX_PLAYERS];
|
|
|
|
_point mw_pos[MAX_PLAYERS];
|
|
|
|
|
|
|
|
|
|
|
|
#define MW_PLAYERSCR_X 250
|
|
|
|
#define MW_PLAYERSCR_X 310
|
|
|
|
#define MW_PLAYERSCR_Y 64
|
|
|
|
#define MW_PLAYERSCR_Y 50
|
|
|
|
#define MW_TITLE_Y 50
|
|
|
|
#define MW_TITLE_Y 50
|
|
|
|
|
|
|
|
|
|
|
|
/* Calcs the position of all items on the screen */
|
|
|
|
/* Calcs the position of all items on the screen */
|
|
|
@ -35,7 +35,7 @@ int mw_calc_screen() {
|
|
|
|
if (PS_IS_used (players[i].state)) plnum++;
|
|
|
|
if (PS_IS_used (players[i].state)) plnum++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (plnum!=mw_num_players) {
|
|
|
|
if (plnum!=mw_num_players || bman.updatestatusbar) {
|
|
|
|
mw_num_players=plnum;
|
|
|
|
mw_num_players=plnum;
|
|
|
|
if (bman.gametype==GT_team) {
|
|
|
|
if (bman.gametype==GT_team) {
|
|
|
|
mw_num_players_x=2;
|
|
|
|
mw_num_players_x=2;
|
|
|
@ -46,24 +46,25 @@ int mw_calc_screen() {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mw_num_players*2>MAX_PLAYERS) {
|
|
|
|
if (mw_num_players*2>MAX_PLAYERS) {
|
|
|
|
mw_num_players_x=2;
|
|
|
|
mw_num_players_x=2;
|
|
|
|
|
|
|
|
mw_num_players_y=floorf(mw_num_players/2)+mw_num_players%2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
mw_num_players_x=1;
|
|
|
|
mw_num_players_x=1;
|
|
|
|
|
|
|
|
mw_num_players_y=mw_num_players;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mw_num_players_y=ceil(mw_num_players/mw_num_players_x);
|
|
|
|
|
|
|
|
for(i=0;i<mw_num_players;i++) {
|
|
|
|
for(i=0;i<mw_num_players;i++) {
|
|
|
|
mw_pos[i].x=gfx.res.x/2/mw_num_players_x+(i%mw_num_players_x)*gfx.res.x/4-MW_PLAYERSCR_X/2;
|
|
|
|
mw_pos[i].x=gfx.res.x/2/mw_num_players_x+(i%mw_num_players_x)*gfx.res.x/2-MW_PLAYERSCR_X/2;
|
|
|
|
mw_pos[i].y=floorf(i/mw_num_players_x)*MW_PLAYERSCR_Y;
|
|
|
|
mw_pos[i].y=floorf(i/mw_num_players_x)*MW_PLAYERSCR_Y;
|
|
|
|
d_printf("mw_Position: x=%d, y=%d\n ",mw_pos[i].x,mw_pos[i].y);
|
|
|
|
d_printf("mw_Position: x=%d, y=%d\n ",mw_pos[i].x,mw_pos[i].y);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
cy=(mw_num_players_y+1)*MW_PLAYERSCR_Y;
|
|
|
|
cy=(mw_num_players_y)*MW_PLAYERSCR_Y+15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
draw_logo ();
|
|
|
|
d_printf ("mw_num_players_x : %d, mw_num_players_y : %d mw_players:%d\n", mw_num_players_x, mw_num_players_y,mw_num_players);
|
|
|
|
d_printf ("mw_num_players_x : %d, mw_num_players_y : %d mw_players:%d\n", mw_num_players_x, mw_num_players_y,mw_num_players);
|
|
|
|
draw_logo ();
|
|
|
|
|
|
|
|
chat_show (8, cy, gfx.res.x - 16, gfx.res.y - (8 + cy));
|
|
|
|
chat_show (8, cy, gfx.res.x - 16, gfx.res.y - (8 + cy));
|
|
|
|
chat.active = 1;
|
|
|
|
chat.active = 1;
|
|
|
|
|
|
|
|
bman.updatestatusbar=0;
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
@ -122,12 +123,13 @@ void mw_check_players () {
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* draw only the given player
|
|
|
|
* draw only the given player
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void mw_draw_player (_player *player, int pos) {
|
|
|
|
void mw_draw_player (int p_nr, int pos) {
|
|
|
|
|
|
|
|
_player *player;
|
|
|
|
_point p;
|
|
|
|
_point p;
|
|
|
|
char text[255];
|
|
|
|
char text[255];
|
|
|
|
SDL_Rect src;
|
|
|
|
SDL_Rect src;
|
|
|
|
SDL_Rect dest;
|
|
|
|
SDL_Rect dest;
|
|
|
|
|
|
|
|
player=&players[p_nr];
|
|
|
|
p.x = mw_pos[pos].x;
|
|
|
|
p.x = mw_pos[pos].x;
|
|
|
|
p.y = mw_pos[pos].y;
|
|
|
|
p.y = mw_pos[pos].y;
|
|
|
|
|
|
|
|
|
|
|
@ -135,24 +137,43 @@ void mw_draw_player (_player *player, int pos) {
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* player is used
|
|
|
|
* player is used
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (player->gfx_nr >= 0 && player->gfx_nr < MAX_PLAYERS) {
|
|
|
|
if (player->gfx_nr >= 0 && player->gfx_nr < gfx.player_gfx_count) {
|
|
|
|
/* player is used and selected a gfx */
|
|
|
|
/* player is used and selected a gfx */
|
|
|
|
dest.x = p.x;
|
|
|
|
dest.x = p.x;
|
|
|
|
dest.y = p.y + (MW_PLAYERSCR_Y - GFX_IMGSIZE) / 2;
|
|
|
|
|
|
|
|
src.w = dest.w = gfx.players[player->gfx_nr].menu_image->w;
|
|
|
|
|
|
|
|
src.h = dest.h = gfx.players[player->gfx_nr].menu_image->h;
|
|
|
|
|
|
|
|
src.x = 0;
|
|
|
|
src.x = 0;
|
|
|
|
src.y = 0;
|
|
|
|
src.y = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (p_nr==bman.p_nr) {
|
|
|
|
|
|
|
|
/* player 1 */
|
|
|
|
|
|
|
|
dest.y = p.y;
|
|
|
|
|
|
|
|
src.w = dest.w = gfx.players[player->gfx_nr].menu_image->w;
|
|
|
|
|
|
|
|
src.h = dest.h = gfx.players[player->gfx_nr].menu_image->h;
|
|
|
|
gfx_blit (gfx.players[player->gfx_nr].menu_image, &src, gfx.screen, &dest, 10001);
|
|
|
|
gfx_blit (gfx.players[player->gfx_nr].menu_image, &src, gfx.screen, &dest, 10001);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (p_nr==bman.p2_nr) {
|
|
|
|
|
|
|
|
/* player 2 */
|
|
|
|
|
|
|
|
dest.x=p.x+MW_PLAYERSCR_X-64;
|
|
|
|
|
|
|
|
dest.y = p.y;
|
|
|
|
|
|
|
|
src.w = dest.w = gfx.players[player->gfx_nr].menu_image->w;
|
|
|
|
|
|
|
|
src.h = dest.h = gfx.players[player->gfx_nr].menu_image->h;
|
|
|
|
|
|
|
|
gfx_blit (gfx.players[player->gfx_nr].menu_image, &src, gfx.screen, &dest, 10001);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
/* net-player */
|
|
|
|
|
|
|
|
dest.x=p.x+35;
|
|
|
|
|
|
|
|
dest.y = p.y + 15;
|
|
|
|
|
|
|
|
src.w = dest.w = gfx.players[player->gfx_nr].small_image->w;
|
|
|
|
|
|
|
|
src.h = dest.h = gfx.players[player->gfx_nr].small_image->h;
|
|
|
|
|
|
|
|
gfx_blit (gfx.players[player->gfx_nr].small_image, &src, gfx.screen, &dest, 10001);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y, player->name, 2, COLOR_yellow, 10002);
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y, player->name, 1, COLOR_yellow, 10002);
|
|
|
|
sprintf (text,"Victorys:%2d(%d)", player->wins, player->points);
|
|
|
|
sprintf (text,"Victorys:%2d(%d)", player->wins, player->points);
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y + font[2].size.y - 4, text, 0, COLOR_white, 10002);
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y + font[2].size.y - 4, text, 0, COLOR_white, 10002);
|
|
|
|
if (debug && PS_IS_used (player->state)) {
|
|
|
|
if (debug && PS_IS_used (player->state)) {
|
|
|
|
sprintf (text, "%s:%s [%d]", player->net.addr.host, player->net.addr.port, player->state);
|
|
|
|
sprintf (text, "%s:%s [%d]", player->net.addr.host, player->net.addr.port, player->state);
|
|
|
|
if (player->net.flags & NETF_firewall)
|
|
|
|
if (player->net.flags & NETF_firewall)
|
|
|
|
sprintf (text,"%s Firewall", text);
|
|
|
|
sprintf (text,"%s FW", text);
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y + font[0].size.y + font[2].size.y - 4, text, 0, COLOR_white, 10002);
|
|
|
|
font_gfxdraw (p.x + GFX_IMGSIZE, p.y + font[0].size.y + font[2].size.y - 4, text, 0, COLOR_white, 10002);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -188,18 +209,20 @@ void mw_clear_playerscreen () {
|
|
|
|
void mw_draw_all_player () {
|
|
|
|
void mw_draw_all_player () {
|
|
|
|
int i,j,h;
|
|
|
|
int i,j,h;
|
|
|
|
int n[MAX_PLAYERS];
|
|
|
|
int n[MAX_PLAYERS];
|
|
|
|
mw_clear_playerscreen ();
|
|
|
|
|
|
|
|
for(i=0;i<MAX_PLAYERS;i++) n[i]=i;
|
|
|
|
for(i=0;i<MAX_PLAYERS;i++) n[i]=i;
|
|
|
|
for(i=0;i<MAX_PLAYERS;i++)
|
|
|
|
for(i=0;i<MAX_PLAYERS;i++)
|
|
|
|
for(j=i;j<MAX_PLAYERS;j++)
|
|
|
|
for(j=i;j<MAX_PLAYERS;j++)
|
|
|
|
if (players[i].wins>players[j].wins) {
|
|
|
|
if (players[i].wins>players[j].wins) {
|
|
|
|
h=n[i];n[i]=n[j];n[j]=h;
|
|
|
|
h=n[i];n[i]=n[j];n[j]=h;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
j=0;
|
|
|
|
for (i = 0; i < MAX_PLAYERS; i++) { /* we do not sort the players */
|
|
|
|
for (i = 0; i < MAX_PLAYERS; i++) { /* we do not sort the players */
|
|
|
|
if (PS_IS_used (players[i].state)) {
|
|
|
|
if (PS_IS_used (players[n[i]].state)) {
|
|
|
|
mw_draw_player (&players[i], n[i]);
|
|
|
|
mw_draw_player (n[i], j);
|
|
|
|
|
|
|
|
j++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
gfx_blitdraw();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|