mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-31 04:20:42 +00:00
next...
This commit is contained in:
parent
42bbc1e6ce
commit
913253bb0c
4 changed files with 55 additions and 110 deletions
|
@ -950,7 +950,59 @@ int parse(void)
|
|||
else
|
||||
{
|
||||
// I am not convinced this is even remotely smart to be executed from here...
|
||||
P_ResetPlayer(g_p);
|
||||
pickrandomspot(g_p);
|
||||
g_sp->x = hittype[g_i].bposx = ps[g_p].bobposx = ps[g_p].oposx = ps[g_p].posx;
|
||||
g_sp->y = hittype[g_i].bposy = ps[g_p].bobposy = ps[g_p].oposy = ps[g_p].posy;
|
||||
g_sp->z = hittype[g_i].bposy = ps[g_p].oposz = ps[g_p].posz;
|
||||
updatesector(ps[g_p].posx, ps[g_p].posy, &ps[g_p].cursectnum);
|
||||
setsprite(ps[g_p].i, ps[g_p].posx, ps[g_p].posy, ps[g_p].posz + PHEIGHT);
|
||||
g_sp->cstat = 257;
|
||||
|
||||
g_sp->shade = -12;
|
||||
g_sp->clipdist = 64;
|
||||
g_sp->xrepeat = 42;
|
||||
g_sp->yrepeat = 36;
|
||||
g_sp->owner = g_i;
|
||||
g_sp->xoffset = 0;
|
||||
g_sp->pal = ps[g_p].palookup;
|
||||
|
||||
ps[g_p].last_extra = g_sp->extra = max_player_health;
|
||||
ps[g_p].wantweaponfire = -1;
|
||||
ps[g_p].sethoriz(100);
|
||||
ps[g_p].on_crane = -1;
|
||||
ps[g_p].frag_ps = g_p;
|
||||
ps[g_p].sethorizoff(0);
|
||||
ps[g_p].opyoff = 0;
|
||||
ps[g_p].wackedbyactor = -1;
|
||||
ps[g_p].shield_amount = max_armour_amount;
|
||||
ps[g_p].dead_flag = 0;
|
||||
ps[g_p].pals.f = 0;
|
||||
ps[g_p].footprintcount = 0;
|
||||
ps[g_p].weapreccnt = 0;
|
||||
ps[g_p].fta = 0;
|
||||
ps[g_p].ftq = 0;
|
||||
ps[g_p].posxv = ps[g_p].posyv = 0;
|
||||
if (!isRR()) ps[g_p].rotscrnang = 0;
|
||||
|
||||
ps[g_p].falling_counter = 0;
|
||||
|
||||
hittype[g_i].extra = -1;
|
||||
hittype[g_i].owner = g_i;
|
||||
|
||||
hittype[g_i].cgg = 0;
|
||||
hittype[g_i].movflag = 0;
|
||||
hittype[g_i].tempang = 0;
|
||||
hittype[g_i].actorstayput = -1;
|
||||
hittype[g_i].dispicnum = 0;
|
||||
hittype[g_i].owner = ps[g_p].i;
|
||||
hittype[g_i].temp_data[4] = 0;
|
||||
|
||||
resetinventory(g_p);
|
||||
resetweapons(g_p);
|
||||
ps[g_p].movement_lock = 0;
|
||||
|
||||
//cameradist = 0;
|
||||
//cameraclock = totalclock;
|
||||
}
|
||||
setpal(&ps[g_p]);
|
||||
break;
|
||||
|
|
|
@ -37,7 +37,7 @@ BEGIN_DUKE_NS
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void pickrandomspot(short snum)
|
||||
void pickrandomspot(int snum)
|
||||
{
|
||||
struct player_struct *p;
|
||||
short i;
|
||||
|
|
|
@ -35,7 +35,7 @@ void G_CacheMapData(void);
|
|||
void G_NewGame(int volumeNum, int levelNum, int skillNum);
|
||||
void G_ResetTimers(uint8_t keepgtics);
|
||||
void G_UpdateScreenArea(void);
|
||||
void P_RandomSpawnPoint(int playerNum);
|
||||
void pickrandomspot(int playerNum);
|
||||
void resetinventory(int playerNum);
|
||||
void P_ResetPlayer(int playerNum);
|
||||
void resetplayerstats(int playerNum);
|
||||
|
|
|
@ -199,118 +199,11 @@ void G_UpdateScreenArea(void)
|
|||
pus = NUMPAGES;
|
||||
}
|
||||
|
||||
void P_RandomSpawnPoint(int playerNum)
|
||||
{
|
||||
DukePlayer_t *const pPlayer = g_player[playerNum].ps;
|
||||
|
||||
int32_t i = playerNum;
|
||||
|
||||
if ((g_netServer || ud.multimode > 1) && !(g_gametypeFlags[ud.coop] & GAMETYPE_FIXEDRESPAWN))
|
||||
{
|
||||
i = krand2() % numplayersprites;
|
||||
|
||||
if (g_gametypeFlags[ud.coop] & GAMETYPE_TDMSPAWN)
|
||||
{
|
||||
uint32_t pdist = -1;
|
||||
for (bssize_t j=0; j<ud.multimode; j++)
|
||||
{
|
||||
if (j != playerNum && g_player[j].ps->team == pPlayer->team && sprite[g_player[j].ps->i].extra > 0)
|
||||
{
|
||||
for (bssize_t k=0; k<numplayersprites; k++)
|
||||
{
|
||||
uint32_t dist = FindDistance2D(g_player[j].ps->pos.x - g_playerSpawnPoints[k].pos.x,
|
||||
g_player[j].ps->pos.y - g_playerSpawnPoints[k].pos.y);
|
||||
|
||||
if (dist < pdist)
|
||||
i = k, pdist = dist;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pPlayer->pos = g_playerSpawnPoints[i].pos;
|
||||
pPlayer->opos = pPlayer->pos;
|
||||
pPlayer->bobpos = *(vec2_t *)&pPlayer->pos;
|
||||
pPlayer->q16ang = fix16_from_int(g_playerSpawnPoints[i].ang);
|
||||
pPlayer->cursectnum = g_playerSpawnPoints[i].sect;
|
||||
|
||||
sprite[pPlayer->i].cstat = 1 + 256;
|
||||
}
|
||||
|
||||
static inline void P_ResetTintFade(DukePlayer_t *const pPlayer)
|
||||
{
|
||||
pPlayer->pals.f = 0;
|
||||
}
|
||||
|
||||
void P_ResetPlayer(int playerNum)
|
||||
{
|
||||
DukePlayer_t *const pPlayer = g_player[playerNum].ps;
|
||||
spritetype *const pSprite = &sprite[pPlayer->i];
|
||||
vec3_t tmpvect = pPlayer->pos;
|
||||
|
||||
tmpvect.z += PHEIGHT;
|
||||
|
||||
P_RandomSpawnPoint(playerNum);
|
||||
|
||||
pPlayer->opos = pPlayer->pos;
|
||||
pPlayer->bobpos = *(vec2_t *)&pPlayer->pos;
|
||||
actor[pPlayer->i].bpos = pPlayer->pos;
|
||||
*(vec3_t *)pSprite = pPlayer->pos;
|
||||
|
||||
updatesector(pPlayer->pos.x, pPlayer->pos.y, &pPlayer->cursectnum);
|
||||
setsprite(pPlayer->i, &tmpvect);
|
||||
|
||||
pSprite->cstat = 257;
|
||||
pSprite->shade = -12;
|
||||
pSprite->clipdist = RR ? 32 : 64;
|
||||
pSprite->xrepeat = RR ? 24 : 42;
|
||||
pSprite->yrepeat = RR ? 17 : 36;
|
||||
pSprite->owner = pPlayer->i;
|
||||
pSprite->xoffset = 0;
|
||||
pSprite->pal = pPlayer->palookup;
|
||||
|
||||
pPlayer->last_extra = pSprite->extra = max_player_health;
|
||||
|
||||
pPlayer->wantweaponfire = -1;
|
||||
pPlayer->q16horiz = F16(100);
|
||||
pPlayer->on_crane = -1;
|
||||
pPlayer->frag_ps = playerNum;
|
||||
pPlayer->q16horizoff = 0;
|
||||
pPlayer->opyoff = 0;
|
||||
pPlayer->wackedbyactor = -1;
|
||||
pPlayer->inv_amount[GET_SHIELD] = max_armour_amount;
|
||||
pPlayer->dead_flag = 0;
|
||||
pPlayer->footprintcount = 0;
|
||||
pPlayer->weapreccnt = 0;
|
||||
pPlayer->fta = 0;
|
||||
pPlayer->ftq = 0;
|
||||
pPlayer->vel.x = pPlayer->vel.y = 0;
|
||||
if (!RR) pPlayer->rotscrnang = 0;
|
||||
pPlayer->runspeed = dukefriction;
|
||||
pPlayer->falling_counter = 0;
|
||||
|
||||
P_ResetTintFade(pPlayer);
|
||||
|
||||
actor[pPlayer->i].extra = -1;
|
||||
actor[pPlayer->i].owner = pPlayer->i;
|
||||
actor[pPlayer->i].cgg = 0;
|
||||
actor[pPlayer->i].movflag = 0;
|
||||
actor[pPlayer->i].tempang = 0;
|
||||
actor[pPlayer->i].actorstayput = -1;
|
||||
actor[pPlayer->i].dispicnum = 0;
|
||||
actor[pPlayer->i].owner = pPlayer->i;
|
||||
actor[pPlayer->i].t_data[4] = 0;
|
||||
|
||||
resetinventory(playerNum);
|
||||
resetweapons(playerNum);
|
||||
|
||||
//pPlayer->reloading = 0;
|
||||
pPlayer->movement_lock = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static inline int G_CheckExitSprite(int spriteNum) { return ((uint16_t)sprite[spriteNum].lotag == UINT16_MAX && (sprite[spriteNum].cstat & 16)); }
|
||||
|
||||
|
|
Loading…
Reference in a new issue