diff --git a/src/configuration.c b/src/configuration.c index 0b5d677..52185fe 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -1,4 +1,4 @@ -/* $Id: configuration.c,v 1.61 2004/06/13 12:05:19 stpohle Exp $ +/* $Id: configuration.c,v 1.62 2004/06/13 23:34:10 stpohle Exp $ * configuration */ #include @@ -469,8 +469,7 @@ config_video () {"640x480", NULL}, {"800x600", NULL}, {"1024x768", NULL}, - {"1280x1024", NULL}, - {"1600x1200", NULL} + {"1280x1024", NULL} }; _charlist screenbpp[] = { {"16", NULL}, @@ -484,7 +483,7 @@ config_video () _menu *menu; /* set all pointers in this array */ - charlist_fillarraypointer (screenres, 5); + charlist_fillarraypointer (screenres, 4); charlist_fillarraypointer (screenbpp, 3); /* select the current settings */ diff --git a/src/single.c b/src/single.c index 70e03bf..7cb8f17 100644 --- a/src/single.c +++ b/src/single.c @@ -1,4 +1,4 @@ -/* $Id: single.c,v 1.65 2004/06/13 12:03:26 stpohle Exp $ */ +/* $Id: single.c,v 1.66 2004/06/13 23:34:10 stpohle Exp $ */ /* single player */ #include "basic.h" @@ -556,8 +556,6 @@ single_create_ai (int num_players) i = 0; _player *pl; - d_printf ("single_create_ai : number of ai players %d\n", num_players); - for (count = 0; count < num_players; count++) { /* find free players */ for (pl = NULL, p = 0; (pl == NULL && p < MAX_PLAYERS); p++) @@ -592,6 +590,9 @@ single_playergame (int second_player, int ai_players) int p, done = 0; + bman.p_nr = -1; + bman.p2_nr = -1; + /* delete player from the game */ for (p = 0; p < MAX_PLAYERS; p++) { players[p].points = 0; @@ -599,6 +600,7 @@ single_playergame (int second_player, int ai_players) players[p].state = 0; players[p].gfx_nr = -1; players[p].gfx = NULL; + memset (&players[p].net, 0x0, sizeof (_net_player)); } for (bman.p_nr = -1, p = 0; (bman.p_nr == -1 && p < MAX_PLAYERS); p++) @@ -612,15 +614,18 @@ single_playergame (int second_player, int ai_players) strncpy (players[bman.p_nr].name, bman.playername, LEN_PLAYERNAME); gfx_load_players (32, 32); - playermenu_selgfx (bman.p_nr); - if (players[bman.p_nr].gfx_nr == -1) - return; + do { + playermenu_selgfx (bman.p_nr); + } while (players[bman.p_nr].gfx_nr == -1); + players[bman.p_nr].state = PSF_used + PSF_alife + PSF_playing; strncpy (players[bman.p_nr].name, bman.playername, LEN_PLAYERNAME); if (second_player) { player2_join (); - playermenu_selgfx (bman.p2_nr); + do { + playermenu_selgfx (bman.p2_nr); + } while (players[bman.p2_nr].gfx_nr == -1); } gfx_free_players (); @@ -748,7 +753,7 @@ single_menu () menu_create_bool (menu, "Use Second Player", 160, 90, 210, &second_player, 5); - menu_create_button (menu, "Map Options", 180, 160, 150, 6); + menu_create_button (menu, "Map Options", 180, 160, 150, 7); menu_create_button (menu, "Main Menu", 30, 220, 150, 1); menu_create_button (menu, "Start", 220, 220, 150, 2); @@ -765,7 +770,7 @@ single_menu () pl2name = NULL; } if (pl2name == NULL && second_player) - pl2name = menu_create_entry (menu,"Player 2:",150,120, 230, &bman.player2name, LEN_PLAYERNAME, MENU_entrytext, 4); + pl2name = menu_create_entry (menu,"Player 2:",150,120, 230, &bman.player2name, LEN_PLAYERNAME, MENU_entrytext, 6); second_playerold = second_player; aiplayer->changed = 1; @@ -777,223 +782,21 @@ single_menu () done = menu_event_loop (menu, &event, eventstate); - if (done && menu->focus->id == 6) { + if (done && menu->focus->id == 7) { done = 0; mapmenu (); } + if (done && menu->focus->id == 3) + done = 0; + s_calctimesync (); } while (!done); - if (menu->focus->id == 2) { - bman.ai_players = selnrplayer - &nrplayerlist[0]; - single_playergame (second_player, bman.ai_players); - } + bman.ai_players = selnrplayer - &nrplayerlist[0]; - menu_delete (menu); -}; - - - - -/* single player selection - return value the gfx of the player or -1 for escape */ -int -single_select_player () -{ - int selgfx = 0, - done = 0, - x, - y, - keypressed = 0, - frame = 0, - d = 0, - dto = 2, - newplayer = -1, - pos = 0, - i; - SDL_Rect dest, - src; - char text[255]; - SDL_Event event; - Uint8 *keys; - Uint32 timeloop1; - - menu_displaytext ("Loading..", "Please Wait"); - - dest.x = dest.y = 0; - dest.w = gfx.res.x; - dest.h = gfx.res.y; - - gfx_load_players (64, 64); - gfx_blitupdaterectclear (); - - draw_logo (); - - strcpy (text, "Select your Player"); - x = (gfx.res.x - (font[2].size.x * strlen (text)) - 64) / 2; - y = (gfx.res.y - font[2].size.y - 64 - 128) / 2; - font_gfxdrawbold (x, y, text, 2, COLOR_gray, 3, 10000); - font_gfxdrawbold (x, y, text, 2, COLOR_brown, 2, 10000); - font_gfxdraw (x, y, text, 2, COLOR_yellow, 10000); - - while (!done) { - - /* draw selected player */ - frame++; - if (frame >= gfx.players[selgfx].ani.frames) { - frame = 0; - if (dto-- <= 0 && newplayer == -1) { - dto = 5; - if (d == up) - d = left; - else if (d == left) - d = down; - else if (d == down) - d = right; - else - d = up; - } - } - - if (newplayer != -1) { - SDL_Rect dest1, - src1; - - pos += 8; - - if (d == left) { - /* image 1 */ - src.h = dest.h = gfx.players[selgfx].ani.h; - src.w = dest.w = gfx.players[selgfx].ani.w; - src.x = gfx.players[selgfx].ani.w * d; - src.y = gfx.players[selgfx].ani.h * frame; - dest.x = ((gfx.res.x - gfx.players[selgfx].ani.w) / 2) - pos; - dest.y = y + font[0].size.y + 64; - - /* image 2 */ - src1.h = dest1.h = gfx.players[newplayer].ani.h; - src1.w = dest1.w = gfx.players[newplayer].ani.w; - src1.x = gfx.players[newplayer].ani.w * d; - src1.y = gfx.players[newplayer].ani.h * frame; - dest1.x = - ((gfx.res.x - gfx.players[newplayer].ani.w) / 2) + ((gfx.res.x / 2) + 128) - - pos; - dest1.y = y + font[0].size.y + 64; - } - else { - /* image 1 */ - src.h = dest.h = gfx.players[selgfx].ani.h; - src.w = dest.w = gfx.players[selgfx].ani.w; - src.x = gfx.players[selgfx].ani.w * d; - src.y = gfx.players[selgfx].ani.h * frame; - dest.x = ((gfx.res.x - gfx.players[selgfx].ani.w) / 2) + pos; - dest.y = y + font[0].size.y + 64; - - /* image 2 */ - src1.h = dest1.h = gfx.players[newplayer].ani.h; - src1.w = dest1.w = gfx.players[newplayer].ani.w; - src1.x = gfx.players[newplayer].ani.w * d; - src1.y = gfx.players[newplayer].ani.h * frame; - dest1.x = - ((gfx.res.x - gfx.players[newplayer].ani.w) / 2) - ((gfx.res.x / 2) + 128) + - pos; - dest1.y = y + font[0].size.y + 64; - } - - redraw_logo (0, y + font[0].size.y + 64, gfx.res.x, 128); - - if (dest.x + dest.w > 0) - gfx_blit (gfx.players[selgfx].ani.image, &src, gfx.screen, &dest, 0); - if (dest1.x + dest1.w > 0) - gfx_blit (gfx.players[newplayer].ani.image, &src1, gfx.screen, &dest1, 0); - - if (pos > (gfx.res.x / 2) + 128) { - selgfx = newplayer; - newplayer = -1; - pos = 0; - frame = 0; - d = down; - dto = 5; - } - frame++; - } - else { - src.h = dest.h = gfx.players[selgfx].ani.h; - src.w = dest.w = gfx.players[selgfx].ani.w; - src.x = gfx.players[selgfx].ani.w * d; - src.y = gfx.players[selgfx].ani.h * frame; - dest.x = (gfx.res.x - gfx.players[selgfx].ani.w) / 2; - dest.y = y + font[0].size.y + 64; - redraw_logo (dest.x, dest.y, dest.w, dest.h); - gfx_blit (gfx.players[selgfx].ani.image, &src, gfx.screen, &dest, 0); - } - - gfx_blitdraw (); - - /* do the keyboard handling */ - if (SDL_PollEvent (&event) != 0) - switch (event.type) { - case (SDL_QUIT): - bman.state = GS_quit; - bman.p_nr = -1; - done = 1; - selgfx = -1; - } - - keys = SDL_GetKeyState (NULL); - - if (keys[SDLK_ESCAPE] && event.type == SDL_KEYDOWN) { - /* we want to quit */ - done = 1; - bman.p_nr = -1; - keypressed = 1; - bman.state = GS_startup; - selgfx = -1; - } - - if (keys[SDLK_LEFT] && (!keypressed) && newplayer == -1) { - newplayer = selgfx - 1; - if (newplayer < 0) - newplayer = MAX_PLAYERS - 1; - d = left; - } - - if (keys[SDLK_RIGHT] && (!keypressed) && newplayer == -1) { - newplayer = selgfx + 1; - if (newplayer >= MAX_PLAYERS) - newplayer = 0; - d = right; - } - - if ((keys[SDLK_RETURN] || keys[SDLK_RCTRL] || keys[SDLK_LCTRL]) && (!keypressed) - && (event.type = SDL_KEYDOWN) && newplayer == -1) { - done = 1; - keypressed = 1; - // d_printf("return pressed - done=1\n"); - } - if (event.type == SDL_KEYUP) - keypressed = 0; - else if (event.type == SDL_KEYDOWN) - keypressed = 1; - - // calculate time sync. - timeloop1 = SDL_GetTicks (); - - if (newplayer != -1) - i = 17; - else - i = 25; - - while (timeloop1 - timestamp >= 0 && timeloop1 - timestamp < i) { - s_delay (i - (timeloop1 - timestamp) - 1); - timeloop1 = SDL_GetTicks (); - } - - timestamp = timeloop1; - } - - gfx_free_players (); + if (menu->focus->id == 2) + single_playergame (second_player, bman.ai_players); - return selgfx; + menu_delete (menu); };