diff --git a/ChangeLog b/ChangeLog index 5cc2db5..3aa7ecc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -$Id: ChangeLog,v 1.55 2004/01/25 02:20:56 stpohle Exp $ +$Id: ChangeLog,v 1.56 2004/01/25 14:10:22 stpohle Exp $ - Added: Kick Bombs special @@ -24,6 +24,9 @@ $Id: ChangeLog,v 1.55 2004/01/25 02:20:56 stpohle Exp $ - Changed all Images to PNG. From now on there is alpha blending supported too. +- Added: Game Setting start_bombs, start_range, start_bombs and + bomb_tickingtime. + Version 0.11.0 ============== diff --git a/include/bomberclone.h b/include/bomberclone.h index 58b22b6..418de1e 100644 --- a/include/bomberclone.h +++ b/include/bomberclone.h @@ -1,4 +1,4 @@ -/* $Id: bomberclone.h,v 1.16 2004/01/25 02:21:00 stpohle Exp $ */ +/* $Id: bomberclone.h,v 1.17 2004/01/25 14:10:28 stpohle Exp $ */ /* bomberclone.h */ #ifndef _BOMBERCLONE_H_ @@ -152,6 +152,12 @@ struct { int notifygamemaster; int askplayername; // ask player for name at startup + int start_bombs; // start values + int start_range; + float start_speed; + + float bomb_tickingtime; // time before the bomb explodes + unsigned char ai_players; // number of ai players } typedef _bomberclone; diff --git a/include/map.h b/include/map.h index 991e80d..00c0fa8 100644 --- a/include/map.h +++ b/include/map.h @@ -1,4 +1,4 @@ -/* $Id: map.h,v 1.9 2004/01/07 23:04:31 patty21 Exp $ */ +/* $Id: map.h,v 1.10 2004/01/25 14:10:29 stpohle Exp $ */ /* map.h */ #ifndef _MAP_H_ @@ -61,6 +61,7 @@ extern _map map; // mapmenu.c extern void mapmenu (); extern void mapinfo (); +extern void mapgamesetting (); // map.c extern void map_random (); diff --git a/include/packets.h b/include/packets.h index efa1aab..3dd5198 100644 --- a/include/packets.h +++ b/include/packets.h @@ -250,6 +250,10 @@ struct pkg_mapinfo { unsigned char sp_row; unsigned char size_x; unsigned char size_y; + unsigned char start_bombs; + unsigned char start_range; + char start_speed[8]; // to make sure there will be no difference + char bomb_tickingtime[8]; // to make sure there will be no difference }; diff --git a/src/bomb.c b/src/bomb.c index 554c3e5..fe9deed 100644 --- a/src/bomb.c +++ b/src/bomb.c @@ -1,4 +1,4 @@ -/* $Id: bomb.c,v 1.52 2004/01/07 23:04:31 patty21 Exp $ */ +/* $Id: bomb.c,v 1.53 2004/01/25 14:10:29 stpohle Exp $ */ /* everything what have to do with the bombs */ #include "bomberclone.h" @@ -22,7 +22,7 @@ draw_bomb (_bomb * bomb) return; } - if (bomb->state != BS_trigger || ((bomb->state == BS_trigger) && (bomb->to < BOMB_TIMEOUT))) { + if (bomb->state != BS_trigger || ((bomb->state == BS_trigger) && (bomb->to < bman.bomb_tickingtime))) { /* check the framenumber */ bomb->frame += (timefactor / 3.0); if (bomb->frame < 0 || bomb->frame >= gfx.bomb.frames) @@ -249,7 +249,7 @@ bomb_loop () bomb->to -= timediff; if (bomb->to <= 0.0f) { // bomb did not explode -> resend bombdata if (bomb->state == BS_ticking) - bomb->to = BOMB_TIMEOUT; + bomb->to = bman.bomb_tickingtime; else bomb->to = SPECIAL_TRIGGER_TIMEOUT; net_game_send_bomb (bman.p_nr, i); diff --git a/src/configuration.c b/src/configuration.c index 998e50f..2dbfb6f 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -74,7 +74,12 @@ config_init (int argc, char **argv) map.sp_row = GAME_SPECIAL_ITEMSROW; map.sp_push = GAME_SPECIAL_ITEMSPUSH; map.sp_kick = GAME_SPECIAL_ITEMSKICK; - d_printf ("\n\n ***** Bomberclone Version %s \n\n", VERSION); + + bman.start_bombs = START_BOMBS; + bman.start_speed = START_SPEED; + bman.start_range = START_RANGE; + bman.bomb_tickingtime = BOMB_TIMEOUT; + d_printf ("\n\n ***** Bomberclone Version %s \n\n", VERSION); if (config_read ()) { /* error on reading the config file */ ReadPrgArgs (argc, argv); gfx_init (); @@ -259,6 +264,18 @@ config_read () if (!strcmp (keyword, "sndplaysound")) { snd.playsound = atoi (value); } + if (!strcmp (keyword, "start_bombs")) { + bman.start_bombs = atoi (value); + } + if (!strcmp (keyword, "start_range")) { + bman.start_range = atoi (value); + } + if (!strcmp (keyword, "start_speed")) { + sscanf (value, "%f", &bman.start_speed); + } + if (!strcmp (keyword, "bomb_ticking")) { + sscanf (value, "%f", &bman.bomb_tickingtime); + } } fclose (config); return 0; diff --git a/src/game.c b/src/game.c index 1a7784c..1bf3340 100644 --- a/src/game.c +++ b/src/game.c @@ -1,4 +1,4 @@ -/* $Id: game.c,v 1.68 2004/01/06 02:19:57 stpohle Exp $ +/* $Id: game.c,v 1.69 2004/01/25 14:10:30 stpohle Exp $ game.c - procedures for the game. */ #include @@ -328,9 +328,9 @@ game_start () else players[p].state = 0; - players[p].bombs_n = START_BOMBS; - players[p].range = START_RANGE; - players[p].speed = START_SPEED; + players[p].bombs_n = bman.start_bombs; + players[p].range = bman.start_range; + players[p].speed = bman.start_speed; players[p].special.type = SP_nothing; players[p].m = 0; players[p].old.x = 0; diff --git a/src/mapmenu.c b/src/mapmenu.c index e09e06b..8c6a03c 100644 --- a/src/mapmenu.c +++ b/src/mapmenu.c @@ -1,4 +1,4 @@ -/* $Id: mapmenu.c,v 1.18 2004/01/07 23:04:32 patty21 Exp $ */ +/* $Id: mapmenu.c,v 1.19 2004/01/25 14:10:44 stpohle Exp $ */ /* map/tileset selection menu */ #include "bomberclone.h" @@ -33,7 +33,6 @@ mapmenu () while (menuselect != -1 && bman.state != GS_quit) { menu_new ("Map Options", 420, 400); - // map.map_selection=MAPS_select; switch (map.map_selection) { case (MAPS_select): // Selected Map selmt = charlist_findtext (maptypes, "selected file"); @@ -97,9 +96,9 @@ mapmenu () menu_create_entry ("Row: ", 280, 280, 120, &map.sp_row, 30, MENU_entryint32, 14); menu_create_entry ("Kick: ", 280, 300, 120, &map.sp_kick, 30, MENU_entryint32, 15); - menu_create_entry ("Game Timeout:", -1, 350, 180, &bman.init_timeout, 1200, MENU_entryint32, 16); + menu_create_button ("Game Options", -1, 350, 150, 16); - menu_create_button ("Ok", -1, 380, 150, 0); + menu_create_button ("Ok", -1, 380, 150, 0); menuselect = menu_loop (); menu_delete (); @@ -128,6 +127,9 @@ mapmenu () else strcpy (map.tileset, mapname); break; + + case (16): /* Game Settings */ + mapgamesetting (); } /* map type */ @@ -151,7 +153,7 @@ mapmenu () if (map.size.y > MAX_FIELDSIZE_Y) map.size.y = MAX_FIELDSIZE_Y; - + config_write (); } @@ -315,3 +317,31 @@ mapinfo () #undef WIN_X #undef WIN_Y + + +/* change start settings for the game */ +void mapgamesetting () { + int menuselect = 0; + + while (menuselect != -1 && bman.state != GS_quit) { + menu_new ("Game Options", 420, 400); + + menu_create_label ("Start Values", 25, 50, 0); + menu_create_entry ("Bombs:", 25, 80, 150, &bman.start_bombs, MAX_BOMBS, MENU_entryint32, 1); + menu_create_entry ("Speed:", 25,110, 150, &bman.start_speed, MAX_SPEED, MENU_entryfloat, 2); + menu_create_entry ("Range:", 25,140, 150, &bman.start_range, MAX_RANGE, MENU_entryint32, 3); + + menu_create_label ("Other Values", 200, 50, 0); + menu_create_entry ("Gametime:", 200, 80, 150, &bman.init_timeout, 1200, MENU_entryint32, 4); + + menu_create_label ("Game Parameter", 25, 180, 1); + menu_create_entry ("Bomb Time:", 25, 220, 200, &bman.bomb_tickingtime, 1200, MENU_entryfloat, 5); + + menu_create_button ("Ok", -1, 380, 150, 0); + menuselect = menu_loop (); + menu_delete (); + + if (menuselect == 0) + menuselect = -1; + } +}; diff --git a/src/packets.c b/src/packets.c index 8847046..dea4444 100644 --- a/src/packets.c +++ b/src/packets.c @@ -1213,6 +1213,11 @@ send_mapinfo (_net_addr * addr) map_pkg.sp_trigger = map.sp_trigger; map_pkg.sp_row = map.sp_row; map_pkg.sp_push = map.sp_push; + map_pkg.start_bombs = bman.start_bombs; + map_pkg.start_range = bman.start_range; + sprintf (map_pkg.start_speed, "%6f", bman.start_speed); + sprintf (map_pkg.bomb_tickingtime, "%6f", bman.bomb_tickingtime); + if (map.random_tileset) map_pkg.tileset[0] = 0; else @@ -1253,6 +1258,11 @@ do_mapinfo (struct pkg_mapinfo *map_pkg, _net_addr * addr) map.sp_trigger = map_pkg->sp_trigger; map.sp_push = map_pkg->sp_push; map.sp_row = map_pkg->sp_row; + + bman.start_bombs = map_pkg->start_bombs; + bman.start_range = map_pkg->start_range; + sscanf (map_pkg->start_speed, "%f", &bman.start_speed); + sscanf (map_pkg->bomb_tickingtime, "%f", &bman.bomb_tickingtime); }; diff --git a/src/player.c b/src/player.c index d03d20b..744e6c6 100644 --- a/src/player.c +++ b/src/player.c @@ -1,4 +1,4 @@ -/* $Id: player.c,v 1.65 2004/01/07 23:04:32 patty21 Exp $ +/* $Id: player.c,v 1.66 2004/01/25 14:10:45 stpohle Exp $ * player.c - everything what have to do with the player */ #include @@ -462,7 +462,7 @@ player_drop_bomb (int pl_nr) } else { bomb->state = BS_ticking; - bomb->to = BOMB_TIMEOUT; + bomb->to = bman.bomb_tickingtime; } bomb->mode = BM_normal; bomb->ex_nr = -1; diff --git a/src/special.c b/src/special.c index 5440fde..6e4693e 100644 --- a/src/special.c +++ b/src/special.c @@ -1,4 +1,4 @@ -/* $Id: special.c,v 1.30 2004/01/07 23:04:32 patty21 Exp $ */ +/* $Id: special.c,v 1.31 2004/01/25 14:10:47 stpohle Exp $ */ /* special.c - procedues to control the specials */ #include "bomberclone.h" @@ -76,7 +76,7 @@ special_row (int p_nr) b->ex_nr = -1; b->pos.x = x; b->pos.y = y; - b->to = BOMB_TIMEOUT + t; // 5 Secs * 200 + b->to = bman.bomb_tickingtime + t; // 5 Secs * 200 map.bfield[x][y] = 1; if (GT_MP) { net_game_send_bomb (p_nr, i); @@ -353,8 +353,8 @@ special_clear (int p_nr) bomb = &players[p_nr].bombs[i]; if (bomb->state == BS_trigger) { bomb->state = BS_ticking; - if (bomb->to > BOMB_TIMEOUT) - bomb->to = BOMB_TIMEOUT; + if (bomb->to > bman.bomb_tickingtime) + bomb->to = bman.bomb_tickingtime; } } }