|
|
@ -1,4 +1,4 @@
|
|
|
|
/* $Id: playermenu.c,v 1.4 2004/09/12 22:12:02 stpohle Exp $
|
|
|
|
/* $Id: playermenu.c,v 1.5 2004/09/23 13:31:51 stpohle Exp $
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
@ -126,130 +126,144 @@ static void playermenu_selgfx_drawplayer (int selgfx, _menu *menu) {
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
|
|
+------------------------------------------------+
|
|
|
|
+----------------------------------------------------+
|
|
|
|
| Name Lokaler Player 1 : ________________ |
|
|
|
|
| List of Players Details |
|
|
|
|
| Name Lokaler Player 2 : ________________ |
|
|
|
|
| |6) | Name: Playername Team |
|
|
|
|
| |
|
|
|
|
| | | IP: 10.10.10.10 |
|
|
|
|
| Button USE Lok. Pl.2 <--- if this is pressed a second local
|
|
|
|
| | | Port: 11000 |
|
|
|
|
| Button Add AI Player player will join.. still working on
|
|
|
|
| | | Flags: Firewall, Second Player |
|
|
|
|
| |
|
|
|
|
| | | |
|
|
|
|
| List of Connected Players |
|
|
|
|
| +-------------+ |
|
|
|
|
| | | Button Kick |
|
|
|
|
| [1) Teammenu ] |
|
|
|
|
| | | |
|
|
|
|
| [2) Add AI ] [3)Add 2. Player] |
|
|
|
|
| | | Button Info |
|
|
|
|
| [4)Kick Player] [5) Close ] |
|
|
|
|
| | | |
|
|
|
|
+----------------------------------------------------+
|
|
|
|
| | | Button OK |
|
|
|
|
|
|
|
|
| +-----------------------+ |
|
|
|
|
|
|
|
|
+------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void playermenu () {
|
|
|
|
void playermenu () {
|
|
|
|
_menu *menu;
|
|
|
|
_menu *menu;
|
|
|
|
_menuitem *btn_SecondPlayer;
|
|
|
|
_menuitem *btn_SecondPlayer;
|
|
|
|
_menuitem *list_PlayerList;
|
|
|
|
_menuitem *list_PlayerList;
|
|
|
|
|
|
|
|
_menuitem *detail_Name;
|
|
|
|
|
|
|
|
_menuitem *detail_Addr;
|
|
|
|
|
|
|
|
_menuitem *detail_Flags;
|
|
|
|
_charlist playerlist[MAX_PLAYERS + 1];
|
|
|
|
_charlist playerlist[MAX_PLAYERS + 1];
|
|
|
|
_charlist *playerlist_sel = &playerlist[0];
|
|
|
|
_charlist *playerlist_sel = &playerlist[0];
|
|
|
|
int i, done = 0, eventstate, pl_nr;
|
|
|
|
int i, done = 0, eventstate, pl_nr, sel_pl_nr;
|
|
|
|
SDL_Event event;
|
|
|
|
SDL_Event event;
|
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < MAX_PLAYERS; i++)
|
|
|
|
/* delete the playerlist */
|
|
|
|
if (PS_IS_used(players[i].state))
|
|
|
|
playerlist[0].text[0] = 0;
|
|
|
|
sprintf (playerlist[i].text, "%2d. %15s", i+1, players[i].name);
|
|
|
|
playerlist[0].next = NULL;
|
|
|
|
else
|
|
|
|
|
|
|
|
sprintf (playerlist[i].text, "%2d. %15s", i+1, "");
|
|
|
|
/* create the window */
|
|
|
|
charlist_fillarraypointer (playerlist, MAX_PLAYERS);
|
|
|
|
|
|
|
|
menu = menu_new ("Playermenu", 400, 350);
|
|
|
|
menu = menu_new ("Playermenu", 400, 350);
|
|
|
|
printf ("called\n");
|
|
|
|
|
|
|
|
menu_create_entry (menu, " Player 1 Name: ", -1, 50, 350, &bman.playername, LEN_PLAYERNAME, MENU_entrytext, 2);
|
|
|
|
|
|
|
|
menu_create_entry (menu, " Player 2 Name: ", -1, 80, 350, &bman.player2name, LEN_PLAYERNAME, MENU_entrytext, 3);
|
|
|
|
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
|
|
|
|
btn_SecondPlayer = menu_create_button (menu, "Quit Second Player", 25, 130, 190, 4);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
btn_SecondPlayer = menu_create_button (menu, "Use Second Player", 25, 130, 190, 4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GT_SP || GT_MP_PTPM)
|
|
|
|
menu_create_label (menu, "Players", 20, 50, 0, COLOR_brown);
|
|
|
|
menu_create_button (menu, "Add AI Player", 25, 160, 190, 5);
|
|
|
|
list_PlayerList = menu_create_list (menu, "playerlist", 15, 70, 170, 160, playerlist, &playerlist_sel, 6);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
menu_create_label (menu, "Details", 240, 50, 0, COLOR_brown);
|
|
|
|
|
|
|
|
|
|
|
|
menu_create_label (menu, "Connected Players", 20, 210, 0, COLOR_brown);
|
|
|
|
detail_Name = menu_create_label (menu, "Name", 220, 100, 0, COLOR_yellow);
|
|
|
|
list_PlayerList = menu_create_list (menu, "playerlist", 15, 230, 200, 120, playerlist, &playerlist_sel, 6);
|
|
|
|
detail_Addr = menu_create_label (menu, "10.10.10.1:6666", 220, 120, 0, COLOR_yellow);
|
|
|
|
|
|
|
|
detail_Flags = menu_create_label (menu, "firewall", 220, 140, 0, COLOR_yellow);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GT_SP || GT_MP_PTPM)
|
|
|
|
|
|
|
|
menu_create_button (menu, "Add AI Player", 20, 280, 150, 2);
|
|
|
|
|
|
|
|
btn_SecondPlayer = menu_create_button (menu, "2 Player", 250, 280, 150, 3);
|
|
|
|
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
|
|
|
|
sprintf (btn_SecondPlayer->label, "Del 2 Player");
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
sprintf (btn_SecondPlayer->label,"Add 2 Player");
|
|
|
|
if (GT_SP || GT_MP_PTPM)
|
|
|
|
if (GT_SP || GT_MP_PTPM)
|
|
|
|
menu_create_button (menu, "Kick Player", 240, 230, 150, 7);
|
|
|
|
menu_create_button (menu, "Kick Player", 20, 315, 150, 4);
|
|
|
|
|
|
|
|
menu_create_button (menu, "Close", 250, 315, 150, 5);
|
|
|
|
|
|
|
|
|
|
|
|
// menu_create_button (menu, "Playerinfo", 240, 275, 150, 8);
|
|
|
|
if (bman.gametype == GT_team && (GT_SP || GT_MP_PTPM))
|
|
|
|
menu_create_button (menu, "OK", 240, 320, 150, 1);
|
|
|
|
menu_create_button (menu, "Teammenu", -1, 245, 150, 1);
|
|
|
|
|
|
|
|
|
|
|
|
/* prepare everything for the menu_loop */
|
|
|
|
/* prepare everything for the menu_loop */
|
|
|
|
menu_focus_id (menu, 1);
|
|
|
|
menu_focus_id (menu, 5);
|
|
|
|
menu->looprunning = 1;
|
|
|
|
menu->looprunning = 1;
|
|
|
|
menu_draw (menu);
|
|
|
|
menu_draw (menu);
|
|
|
|
|
|
|
|
|
|
|
|
/* the menu loop */
|
|
|
|
/* the menu loop */
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
for (i = 0; i < MAX_PLAYERS; i++) {
|
|
|
|
detail_Name->label[0] = 0;
|
|
|
|
if (PS_IS_used(players[i].state))
|
|
|
|
detail_Addr->label[0] = 0;
|
|
|
|
sprintf (playerlist[i].text, "%2d. %15s", i+1, players[i].name);
|
|
|
|
detail_Flags->label[0] = 0;
|
|
|
|
else
|
|
|
|
sel_pl_nr = -1;
|
|
|
|
sprintf (playerlist[i].text, "%2d. %15s", i+1, "");
|
|
|
|
for (i = 0, pl_nr = 0; pl_nr < MAX_PLAYERS; pl_nr++) {
|
|
|
|
|
|
|
|
if (PS_IS_used(players[pl_nr].state)) {
|
|
|
|
|
|
|
|
if (i > 0)
|
|
|
|
|
|
|
|
playerlist[i-1].next = &playerlist[i];
|
|
|
|
|
|
|
|
playerlist[i].next = NULL;
|
|
|
|
|
|
|
|
strncpy (playerlist[i].text, players[pl_nr].name, LEN_PLAYERNAME);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* get detail information */
|
|
|
|
|
|
|
|
if (i == (playerlist_sel - &playerlist[0])) {
|
|
|
|
|
|
|
|
if (players[pl_nr].team_nr >= 0 && players[pl_nr].team_nr < MAX_TEAMS)
|
|
|
|
|
|
|
|
sprintf (detail_Name->label, "%s(%s)", players[pl_nr].name, teams[players[pl_nr].team_nr].name);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
sprintf (detail_Name->label, "%s", players[pl_nr].name);
|
|
|
|
|
|
|
|
sprintf (detail_Addr->label, "%-32s:%s",players[pl_nr].net.addr.host, players[pl_nr].net.addr.port);
|
|
|
|
|
|
|
|
sprintf (detail_Flags->label, "FIX ME");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sel_pl_nr = pl_nr;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i++;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
list_PlayerList->changed = 1;
|
|
|
|
list_PlayerList->changed = 1;
|
|
|
|
menu_draw_menuitem (list_PlayerList);
|
|
|
|
detail_Name->changed = 1;
|
|
|
|
|
|
|
|
detail_Addr->changed = 1;
|
|
|
|
gfx_blitdraw ();
|
|
|
|
detail_Flags->changed = 1;
|
|
|
|
|
|
|
|
|
|
|
|
eventstate = SDL_PollEvent (&event);
|
|
|
|
eventstate = SDL_PollEvent (&event);
|
|
|
|
if (bman.sock != -1)
|
|
|
|
if (bman.sock != -1)
|
|
|
|
network_loop ();
|
|
|
|
network_loop ();
|
|
|
|
|
|
|
|
|
|
|
|
menu_draw (menu);
|
|
|
|
menu_draw (menu);
|
|
|
|
|
|
|
|
gfx_blitdraw ();
|
|
|
|
done = menu_event_loop (menu, &event, eventstate);
|
|
|
|
done = menu_event_loop (menu, &event, eventstate);
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* check if one of the buttons was pressed
|
|
|
|
* check if one of the buttons was pressed
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (done == 1 && menu->focus->id == 4) { /* second local player want to join */
|
|
|
|
if (done == 1 && menu->focus->id == btn_SecondPlayer->id) { /* second local player want to join */
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
player_delete (bman.p2_nr);
|
|
|
|
player_delete (bman.p2_nr);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
player2_join ();
|
|
|
|
player2_join ();
|
|
|
|
|
|
|
|
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
if (IS_LPLAYER2)
|
|
|
|
sprintf (btn_SecondPlayer->label, "Quit Second Player");
|
|
|
|
sprintf (btn_SecondPlayer->label, "Del 2 Player");
|
|
|
|
else
|
|
|
|
else
|
|
|
|
sprintf (btn_SecondPlayer->label,"Use Second Player");
|
|
|
|
sprintf (btn_SecondPlayer->label,"Add 2 Player");
|
|
|
|
|
|
|
|
btn_SecondPlayer->changed = 1;
|
|
|
|
menu_draw_button (btn_SecondPlayer);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (done == 1 && menu->focus->id == 5) { /* create ai player */
|
|
|
|
if (done == 1 && menu->focus->id == 2) { /* create ai player */
|
|
|
|
single_create_ai (1);
|
|
|
|
single_create_ai (1);
|
|
|
|
done = 0;
|
|
|
|
done = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (done == 1 && menu->focus->id == 6) /* playerlist */
|
|
|
|
if (done == 1 && menu->focus->id == 1) { /* Teammenu */
|
|
|
|
|
|
|
|
teammenu ();
|
|
|
|
done = 0;
|
|
|
|
done = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (done == 1 && menu->focus->id == 7) { /* kick player */
|
|
|
|
|
|
|
|
pl_nr = playerlist_sel - &playerlist[0];
|
|
|
|
if (done == 1 && menu->focus->id == 4) { /* kick player */
|
|
|
|
if (pl_nr >= 0 && pl_nr < MAX_PLAYERS && pl_nr != bman.p_servnr)
|
|
|
|
if (sel_pl_nr >= 0 && sel_pl_nr < MAX_PLAYERS && sel_pl_nr != bman.p_servnr)
|
|
|
|
player_delete (pl_nr);
|
|
|
|
player_delete (sel_pl_nr);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
menu_displaymessage ("No", "You can't kick yourself from the game.\n");
|
|
|
|
menu_displaymessage ("No", "You can't kick yourself from the game.\n");
|
|
|
|
done = 0;
|
|
|
|
done = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (done == 1 && menu->focus->id == 8) { /* player info */
|
|
|
|
|
|
|
|
// playermenu_info ();
|
|
|
|
|
|
|
|
done = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s_calctimesync ();
|
|
|
|
s_calctimesync ();
|
|
|
|
} while ((done == 0 || menu->focus->id != 1) && done != -1);
|
|
|
|
} while ((done == 0 || menu->focus->id != 5) && done != -1);
|
|
|
|
|
|
|
|
|
|
|
|
if (menu->focus->id == 1 && done == 1) {
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* ok button pressed, so save all settings
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
config_write ();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
menu_delete (menu);
|
|
|
|
menu_delete (menu);
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -395,8 +409,6 @@ void teammenu () {
|
|
|
|
int done, eventstate, menu_id = 0, last_id = 0, last_selteam = -1;
|
|
|
|
int done, eventstate, menu_id = 0, last_id = 0, last_selteam = -1;
|
|
|
|
SDL_Event event;
|
|
|
|
SDL_Event event;
|
|
|
|
|
|
|
|
|
|
|
|
single_create_ai (7); // for debug only
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
menu = menu_new ("Team Details", 400, 350);
|
|
|
|
menu = menu_new ("Team Details", 400, 350);
|
|
|
|
|
|
|
|
|
|
|
|
menu_create_text (menu, "help1", 10, 70, (250/font[0].size.x), 5, COLOR_gray, "Move the players from one team into the other by selecting them with ENTER.");
|
|
|
|
menu_create_text (menu, "help1", 10, 70, (250/font[0].size.x), 5, COLOR_gray, "Move the players from one team into the other by selecting them with ENTER.");
|
|
|
|