|
|
|
@ -668,6 +668,45 @@ send_bombdata (_net_addr * addr, int p, int b, _bomb * bomb)
|
|
|
|
|
send_pkg ((struct pkg *) &b_dat, addr);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* recive a request for some tunneldata or receive tunneldata */
|
|
|
|
|
void do_tunneldata (struct pkg_tunneldata *tun_pkg, _net_addr *addr) {
|
|
|
|
|
d_printf ("do_tunneldata: From %d [%s:%s] (Tunnel %d Target [%d,%d])\n", addr->pl_nr, addr->host, addr->port, tun_pkg->tunnel_nr, tun_pkg->target.x, tun_pkg->target.y);
|
|
|
|
|
|
|
|
|
|
if (addr->pl_nr != 0 && GT_MP_PTPM && tun_pkg->target.y == -1 && tun_pkg->target.x == -1) {
|
|
|
|
|
send_tunneldata (addr, tun_pkg->tunnel_nr, map.tunnel[tun_pkg->tunnel_nr].x, map.tunnel[tun_pkg->tunnel_nr].y);
|
|
|
|
|
bman.players[addr->pl_nr].net.net_status = tun_pkg->tunnel_nr;
|
|
|
|
|
bman.players[addr->pl_nr].net.net_istep = 3;
|
|
|
|
|
}
|
|
|
|
|
else if (addr->pl_nr == 0 && tun_pkg->tunnel_nr < GAME_MAX_TUNNELS) {
|
|
|
|
|
if (tun_pkg->target.x >= 0 && tun_pkg->target.x < map.size.x && tun_pkg->target.y >= 0 && tun_pkg->target.y < map.size.y) {
|
|
|
|
|
map.tunnel[tun_pkg->tunnel_nr].x = tun_pkg->target.x;
|
|
|
|
|
map.tunnel[tun_pkg->tunnel_nr].y = tun_pkg->target.y;
|
|
|
|
|
bman.players[bman.p_nr].net.net_status = tun_pkg->tunnel_nr;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
d_printf (" values out of range\n");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* send a tunneldata request (x && y == -1) or send tunneldata */
|
|
|
|
|
void send_tunneldata (_net_addr *addr, int tunnelnr, int x, int y) {
|
|
|
|
|
struct pkg_tunneldata tun_pkg;
|
|
|
|
|
|
|
|
|
|
d_printf ("send_tunneldata (Tunnel %d Target [%d,%d])\n", tunnelnr, x, y);
|
|
|
|
|
|
|
|
|
|
tun_pkg.h.typ = PKG_tunneldata;
|
|
|
|
|
tun_pkg.h.len = sizeof (struct pkg_tunneldata);
|
|
|
|
|
|
|
|
|
|
if ((GT_MP_PTPM && x != -1 && y != -1) || (GT_MP_PTPS && x == -1 && y == -1)) {
|
|
|
|
|
tun_pkg.tunnel_nr = tunnelnr;
|
|
|
|
|
tun_pkg.target.x = x;
|
|
|
|
|
tun_pkg.target.y = y;
|
|
|
|
|
|
|
|
|
|
send_pkg ((struct pkg*) &tun_pkg, addr);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
send_quit (_net_addr * addr, char *plhost, char *plport)
|
|
|
|
@ -1216,6 +1255,9 @@ do_pkg (struct pkg *packet, _net_addr * addr)
|
|
|
|
|
case (PKG_mapinfo):
|
|
|
|
|
do_mapinfo ((struct pkg_mapinfo *) packet, addr);
|
|
|
|
|
break;
|
|
|
|
|
case (PKG_tunneldata):
|
|
|
|
|
do_tunneldata ((struct pkg_tunneldata *) packet, addr);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
send_error (addr, "BomberClone: unknown data packet");
|
|
|
|
|
break;
|
|
|
|
|