respawn finally working weell

origin
stpohle 22 years ago
parent 5842d80f24
commit 4c84a21b23

@ -1,4 +1,4 @@
/* $Id: single.c,v 1.55 2004/01/27 21:13:45 stpohle Exp $ */ /* $Id: single.c,v 1.56 2004/01/28 18:19:12 stpohle Exp $ */
/* single player */ /* single player */
#include "basic.h" #include "basic.h"
@ -265,7 +265,10 @@ ai_bombpoints (_point pos, int range)
p = pos; p = pos;
for (r = 0; (r < range && (map.field[p.x][p.y].type == FT_nothing || map.field[p.x][p.y].type == FT_tunnel)); r++) { for (r = 0;
(r < range
&& (map.field[p.x][p.y].type == FT_nothing
|| map.field[p.x][p.y].type == FT_tunnel)); r++) {
p.x += m.x; p.x += m.x;
p.y += m.y; p.y += m.y;
} }
@ -375,7 +378,6 @@ ai_findnearbombs (_point pos)
{ {
int d, int d,
res = 0, // result if there is a bomb res = 0, // result if there is a bomb
done = 0; done = 0;
_point m[4]; // direction addition _point m[4]; // direction addition
_point dist[4]; // to check every direction (on three ways) _point dist[4]; // to check every direction (on three ways)
@ -541,8 +543,11 @@ ai_checknewpos (_point pos, int d)
/* delete single players from the game */ /* delete single players from the game */
void single_delete_ai (int num_players) { void
int p, count; single_delete_ai (int num_players)
{
int p,
count;
for (p = 0, count = 0; p < MAX_PLAYERS && count < num_players; p++) { for (p = 0, count = 0; p < MAX_PLAYERS && count < num_players; p++) {
if (PS_IS_aiplayer (players[p].state)) { if (PS_IS_aiplayer (players[p].state)) {
@ -572,7 +577,7 @@ single_create_ai (int num_players)
for (pl = NULL, p = 0; (pl == NULL && p < MAX_PLAYERS); p++) for (pl = NULL, p = 0; (pl == NULL && p < MAX_PLAYERS); p++)
if (!(PS_IS_used (players[p].state))) { if (!(PS_IS_used (players[p].state))) {
pl = &players[p]; pl = &players[p];
sprintf (pl->name, "AIPlayer %d", p+1); sprintf (pl->name, "AIPlayer %d", p + 1);
pl->state |= PSF_used + PSF_alife + PSF_playing + PSF_ai; pl->state |= PSF_used + PSF_alife + PSF_playing + PSF_ai;
pl->net.flags = NETF_firewall; pl->net.flags = NETF_firewall;
sprintf (pl->net.addr.host, "localhost"); sprintf (pl->net.addr.host, "localhost");
@ -648,7 +653,8 @@ single_loop ()
return; return;
for (p = 0; p < MAX_PLAYERS; p++) for (p = 0; p < MAX_PLAYERS; p++)
if (p != bman.p_nr && PS_IS_alife (players[p].state) && PS_IS_aiplayer(players[p].state)) { if (p != bman.p_nr && PS_IS_aiplayer (players[p].state)) {
if (PS_IS_alife (players[p].state)) {
pl = &players[p]; pl = &players[p];
i = ai_checkpos (pl, &plpos); i = ai_checkpos (pl, &plpos);
@ -688,30 +694,39 @@ single_loop ()
} }
} }
if (pl->m == 0 && map.field[(int)pl->pos.x][(int)pl->pos.y].type == FT_tunnel) if (pl->m == 0 && map.field[(int) pl->pos.x][(int) pl->pos.y].type == FT_tunnel)
pl->m = 1; pl->m = 1;
} }
player_ilness_loop (p); player_ilness_loop (p);
player_checkdeath (p);
move_player (p); move_player (p);
} }
else
player_checkdeath (p);
}
}; };
/* singleplayer menü with some options you can make */ /* singleplayer menü with some options you can make */
void void
single_menu () single_menu ()
{ {
int menuselect = 0, i, p, done = 0; int menuselect = 0,
_charlist nrplayerlist[MAX_PLAYERS+1]; i,
p,
done = 0;
_charlist nrplayerlist[MAX_PLAYERS + 1];
_charlist *selnrplayer = &nrplayerlist[bman.ai_players]; _charlist *selnrplayer = &nrplayerlist[bman.ai_players];
/* fill in the nrplayerlist */ /* fill in the nrplayerlist */
if (debug) p = 0; else p = 1; if (debug)
for (i = 0; p < MAX_PLAYERS+1; i++) { p = 0;
else
p = 1;
for (i = 0; p < MAX_PLAYERS + 1; i++) {
sprintf (nrplayerlist[i].text, "%d", p); sprintf (nrplayerlist[i].text, "%d", p);
if (p < MAX_PLAYERS-1) if (p < MAX_PLAYERS - 1)
nrplayerlist[i].next = &nrplayerlist[i+1]; nrplayerlist[i].next = &nrplayerlist[i + 1];
else else
nrplayerlist[i].next = NULL; nrplayerlist[i].next = NULL;
p++; p++;
@ -832,7 +847,9 @@ single_select_player ()
src1.w = dest1.w = gfx.players[newplayer].ani.w; src1.w = dest1.w = gfx.players[newplayer].ani.w;
src1.x = gfx.players[newplayer].ani.w * d; src1.x = gfx.players[newplayer].ani.w * d;
src1.y = gfx.players[newplayer].ani.h * frame; 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.x =
((gfx.res.x - gfx.players[newplayer].ani.w) / 2) + ((gfx.res.x / 2) + 128) -
pos;
dest1.y = y + font[0].size.y + 64; dest1.y = y + font[0].size.y + 64;
} }
else { else {
@ -849,7 +866,9 @@ single_select_player ()
src1.w = dest1.w = gfx.players[newplayer].ani.w; src1.w = dest1.w = gfx.players[newplayer].ani.w;
src1.x = gfx.players[newplayer].ani.w * d; src1.x = gfx.players[newplayer].ani.w * d;
src1.y = gfx.players[newplayer].ani.h * frame; 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.x =
((gfx.res.x - gfx.players[newplayer].ani.w) / 2) - ((gfx.res.x / 2) + 128) +
pos;
dest1.y = y + font[0].size.y + 64; dest1.y = y + font[0].size.y + 64;
} }
@ -860,7 +879,7 @@ single_select_player ()
if (dest1.x + dest1.w > 0) if (dest1.x + dest1.w > 0)
gfx_blit (gfx.players[newplayer].ani.image, &src1, gfx.screen, &dest1, 0); gfx_blit (gfx.players[newplayer].ani.image, &src1, gfx.screen, &dest1, 0);
if (pos > (gfx.res.x / 2)+ 128) { if (pos > (gfx.res.x / 2) + 128) {
selgfx = newplayer; selgfx = newplayer;
newplayer = -1; newplayer = -1;
pos = 0; pos = 0;
@ -918,7 +937,8 @@ single_select_player ()
d = right; d = right;
} }
if ((keys[SDLK_RETURN] ||keys[SDLK_RCTRL] || keys[SDLK_LCTRL]) && (!keypressed) && (event.type = SDL_KEYDOWN) && newplayer == -1) { if ((keys[SDLK_RETURN] || keys[SDLK_RCTRL] || keys[SDLK_LCTRL]) && (!keypressed)
&& (event.type = SDL_KEYDOWN) && newplayer == -1) {
done = 1; done = 1;
keypressed = 1; keypressed = 1;
// d_printf("return pressed - done=1\n"); // d_printf("return pressed - done=1\n");

Loading…
Cancel
Save