From 8edb72fb8fd96357ad6d413356e397c4f3e98765 Mon Sep 17 00:00:00 2001 From: stpohle Date: Thu, 23 Sep 2004 13:31:50 +0000 Subject: [PATCH] udp_send:: Invalid argument, error fixed. net_delplayer_send had a problem with the local second player, work on the single player --- ChangeLog | 2 +- src/player.c | 4 +- src/playermenu.c | 160 +++++++++++++++++++++++++---------------------- 3 files changed, 89 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75d7fd7..4846a97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -$Id: ChangeLog,v 1.82 2004/09/23 13:21:44 stpohle Exp $ +$Id: ChangeLog,v 1.83 2004/09/23 13:31:50 stpohle Exp $ * NEED TO FIX: Server starts the game soo fast that the client's ignore the gamestat for a running game. diff --git a/src/player.c b/src/player.c index 3eee60b..8ca55c8 100644 --- a/src/player.c +++ b/src/player.c @@ -1,4 +1,4 @@ -/* $Id: player.c,v 1.86 2004/09/12 20:54:25 stpohle Exp $ +/* $Id: player.c,v 1.87 2004/09/23 13:31:51 stpohle Exp $ * player.c - everything what have to do with the player */ #include @@ -1062,7 +1062,7 @@ void player2_add (int pl_nr) { players[pl_nr].gfx = NULL; players[pl_nr].points = 0; players[pl_nr].wins = 0; - players[pl_nr].team_nr = 0; + players[pl_nr].team_nr = -1; d_printf ("player2_add: Local Player Added with pl_nr: %d\n", pl_nr); }; diff --git a/src/playermenu.c b/src/playermenu.c index a264866..71c68b2 100644 --- a/src/playermenu.c +++ b/src/playermenu.c @@ -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 : ________________ | -| Name Lokaler Player 2 : ________________ | -| | -| Button USE Lok. Pl.2 <--- if this is pressed a second local -| Button Add AI Player player will join.. still working on -| | -| List of Connected Players | -| | | Button Kick | -| | | | -| | | Button Info | -| | | | -| | | Button OK | -| +-----------------------+ | -+------------------------------------------------+ ++----------------------------------------------------+ +| List of Players Details | +| |6) | Name: Playername Team | +| | | IP: 10.10.10.10 | +| | | Port: 11000 | +| | | Flags: Firewall, Second Player | +| | | | +| +-------------+ | +| [1) Teammenu ] | +| [2) Add AI ] [3)Add 2. Player] | +| [4)Kick Player] [5) Close ] | ++----------------------------------------------------+ */ void playermenu () { _menu *menu; _menuitem *btn_SecondPlayer; _menuitem *list_PlayerList; + _menuitem *detail_Name; + _menuitem *detail_Addr; + _menuitem *detail_Flags; _charlist playerlist[MAX_PLAYERS + 1]; _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; - for (i = 0; i < MAX_PLAYERS; i++) - if (PS_IS_used(players[i].state)) - sprintf (playerlist[i].text, "%2d. %15s", i+1, players[i].name); - else - sprintf (playerlist[i].text, "%2d. %15s", i+1, ""); - charlist_fillarraypointer (playerlist, MAX_PLAYERS); + /* delete the playerlist */ + playerlist[0].text[0] = 0; + playerlist[0].next = NULL; + + /* create the window */ 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_button (menu, "Add AI Player", 25, 160, 190, 5); + menu_create_label (menu, "Players", 20, 50, 0, COLOR_brown); + 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); - list_PlayerList = menu_create_list (menu, "playerlist", 15, 230, 200, 120, playerlist, &playerlist_sel, 6); + detail_Name = menu_create_label (menu, "Name", 220, 100, 0, COLOR_yellow); + 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) - 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); - menu_create_button (menu, "OK", 240, 320, 150, 1); + if (bman.gametype == GT_team && (GT_SP || GT_MP_PTPM)) + menu_create_button (menu, "Teammenu", -1, 245, 150, 1); /* prepare everything for the menu_loop */ - menu_focus_id (menu, 1); + menu_focus_id (menu, 5); menu->looprunning = 1; menu_draw (menu); /* the menu loop */ do { - for (i = 0; i < MAX_PLAYERS; i++) { - if (PS_IS_used(players[i].state)) - sprintf (playerlist[i].text, "%2d. %15s", i+1, players[i].name); - else - sprintf (playerlist[i].text, "%2d. %15s", i+1, ""); + detail_Name->label[0] = 0; + detail_Addr->label[0] = 0; + detail_Flags->label[0] = 0; + sel_pl_nr = -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; - menu_draw_menuitem (list_PlayerList); - - gfx_blitdraw (); + detail_Name->changed = 1; + detail_Addr->changed = 1; + detail_Flags->changed = 1; + eventstate = SDL_PollEvent (&event); if (bman.sock != -1) network_loop (); menu_draw (menu); + gfx_blitdraw (); done = menu_event_loop (menu, &event, eventstate); + /* * 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) player_delete (bman.p2_nr); else player2_join (); if (IS_LPLAYER2) - sprintf (btn_SecondPlayer->label, "Quit Second Player"); + sprintf (btn_SecondPlayer->label, "Del 2 Player"); else - sprintf (btn_SecondPlayer->label,"Use Second Player"); - - menu_draw_button (btn_SecondPlayer); + sprintf (btn_SecondPlayer->label,"Add 2 Player"); + btn_SecondPlayer->changed = 1; } - if (done == 1 && menu->focus->id == 5) { /* create ai player */ + if (done == 1 && menu->focus->id == 2) { /* create ai player */ single_create_ai (1); done = 0; } - if (done == 1 && menu->focus->id == 6) /* playerlist */ + if (done == 1 && menu->focus->id == 1) { /* Teammenu */ + teammenu (); done = 0; - - if (done == 1 && menu->focus->id == 7) { /* kick player */ - pl_nr = playerlist_sel - &playerlist[0]; - if (pl_nr >= 0 && pl_nr < MAX_PLAYERS && pl_nr != bman.p_servnr) - player_delete (pl_nr); + } + + if (done == 1 && menu->focus->id == 4) { /* kick player */ + if (sel_pl_nr >= 0 && sel_pl_nr < MAX_PLAYERS && sel_pl_nr != bman.p_servnr) + player_delete (sel_pl_nr); else menu_displaymessage ("No", "You can't kick yourself from the game.\n"); done = 0; } - - if (done == 1 && menu->focus->id == 8) { /* player info */ - // playermenu_info (); - done = 0; - } - + s_calctimesync (); - } while ((done == 0 || menu->focus->id != 1) && done != -1); - - if (menu->focus->id == 1 && done == 1) { - /* - * ok button pressed, so save all settings - */ - config_write (); - } + } while ((done == 0 || menu->focus->id != 5) && done != -1); menu_delete (menu); }; @@ -395,8 +409,6 @@ void teammenu () { int done, eventstate, menu_id = 0, last_id = 0, last_selteam = -1; SDL_Event event; - single_create_ai (7); // for debug only - 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.");