Skip to content

Commit

Permalink
Heretic: Client fixes
Browse files Browse the repository at this point in the history
Fixed clientside mobj thinking (e.g., removing mobjs when they
reach the NULL state) and the Fire action request.
  • Loading branch information
skyjake committed May 7, 2011
1 parent fc6e566 commit 5ae8af6
Show file tree
Hide file tree
Showing 6 changed files with 7 additions and 28 deletions.
1 change: 0 additions & 1 deletion doomsday/plugins/common/include/d_netsv.h
Expand Up @@ -54,7 +54,6 @@ void NetSv_SendPlayerState(int srcPlrNum, int destPlrNum, int flags,
boolean reliable);
void NetSv_SendPlayerState2(int srcPlrNum, int destPlrNum,
int flags, boolean reliable);
void NetSv_PSpriteChange(int plrNum, int state);
void NetSv_Sound(mobj_t *origin, int sound_id, int toPlr); // toPlr=0: broadcast.
void NetSv_SoundAtVolume(mobj_t *origin, int sound_id, int volume,
int toPlr);
Expand Down
10 changes: 0 additions & 10 deletions doomsday/plugins/common/src/d_netsv.c
Expand Up @@ -1225,16 +1225,6 @@ void NetSv_SendPlayerState(int srcPlrNum, int destPlrNum, int flags,
ptr - buffer);
}

void NetSv_PSpriteChange(int plrNum, int state)
{
/* byte buffer[20], *ptr = buffer;
if(IS_CLIENT) return;
WRITE_SHORT(ptr, state);
Net_SendPacket(plrNum, GPT_PSPRITE_STATE, buffer, ptr-buffer); */
}

void NetSv_SendPlayerInfo(int whose, int to_whom)
{
byte buffer[10], *ptr = buffer;
Expand Down
1 change: 0 additions & 1 deletion doomsday/plugins/jdoom/src/p_pspr.c
Expand Up @@ -166,7 +166,6 @@ void P_FireWeapon(player_t *player)
P_MobjChangeState(player->plr->mo, PCLASS_INFO(player->class_)->attackState);
newstate = weaponInfo[player->readyWeapon][player->class_].mode[0].states[WSN_ATTACK];
P_SetPsprite(player, ps_weapon, newstate);
NetSv_PSpriteChange(player - players, newstate);
P_NoiseAlert(player->plr->mo, player->plr->mo);
}

Expand Down
1 change: 0 additions & 1 deletion doomsday/plugins/jdoom64/src/p_pspr.c
Expand Up @@ -167,7 +167,6 @@ void P_FireWeapon(player_t *player)
P_MobjChangeState(player->plr->mo, PCLASS_INFO(player->class_)->attackState);
newstate = weaponInfo[player->readyWeapon][player->class_].mode[0].states[WSN_ATTACK];
P_SetPsprite(player, ps_weapon, newstate);
NetSv_PSpriteChange(player - players, newstate);
P_NoiseAlert(player->plr->mo, player->plr->mo);
}

Expand Down
15 changes: 5 additions & 10 deletions doomsday/plugins/jheretic/src/p_mobj.c
Expand Up @@ -91,18 +91,13 @@ boolean P_MobjChangeState(mobj_t* mobj, statenum_t state)
return false;
}

if(mobj->ddFlags & DDMF_REMOTE)
{
Con_Error("P_MobjChangeState: Can't set Remote state!\n");
}

st = &STATES[state];
P_MobjSetState(mobj, state);

mobj->turnTime = false; // $visangle-facetarget.
if(st->action)
{ // Call action function.
st->action(mobj);
if(!(mobj->ddFlags & DDMF_REMOTE)) // only for local mobjs
{
if(st->action) st->action(mobj); // Call action function.
}

return true;
Expand Down Expand Up @@ -828,8 +823,8 @@ void P_NightmareRespawn(mobj_t* mobj)

void P_MobjThinker(mobj_t *mobj)
{
if(mobj->ddFlags & DDMF_REMOTE)
return; // Remote mobjs are handled separately.
if(IS_CLIENT && !ClMobj_IsValid(mobj))
return; // We should not touch this right now.

if(mobj->type == MT_BLASTERFX1)
{
Expand Down
7 changes: 2 additions & 5 deletions doomsday/plugins/jheretic/src/p_pspr.c
Expand Up @@ -560,7 +560,6 @@ void P_ActivateMorphWeapon(player_t *player)
player->update |= PSF_PENDING_WEAPON | PSF_READY_WEAPON;
player->pSprites[ps_weapon].pos[VY] = WEAPONTOP;
P_SetPsprite(player, ps_weapon, S_BEAKREADY);
NetSv_PSpriteChange(player - players, S_BEAKREADY);
}

void P_PostMorphWeapon(player_t *player, weapontype_t weapon)
Expand Down Expand Up @@ -602,14 +601,15 @@ void P_FireWeapon(player_t *player)
if(!P_CheckAmmo(player))
return;

NetCl_PlayerActionRequest(player, GPA_FIRE, 0);

P_MobjChangeState(player->plr->mo, PCLASS_INFO(player->class_)->attackState);

if(player->refire)
attackState = weaponInfo[player->readyWeapon][player->class_].mode[lvl].states[WSN_ATTACK_HOLD];
else
attackState = weaponInfo[player->readyWeapon][player->class_].mode[lvl].states[WSN_ATTACK];

NetSv_PSpriteChange(player - players, attackState);
P_SetPsprite(player, ps_weapon, attackState);

P_NoiseAlert(player->plr->mo, player->plr->mo);
Expand Down Expand Up @@ -718,12 +718,10 @@ void C_DECL A_BeakReady(player_t *player, pspdef_t *psp)
if(player->powers[PT_WEAPONLEVEL2])
{
P_SetPsprite(player, ps_weapon, S_BEAKATK2_1);
NetSv_PSpriteChange(player - players, S_BEAKATK2_1);
}
else
{
P_SetPsprite(player, ps_weapon, S_BEAKATK1_1);
NetSv_PSpriteChange(player - players, S_BEAKATK1_1);
}
P_NoiseAlert(player->plr->mo, player->plr->mo);
}
Expand Down Expand Up @@ -1643,7 +1641,6 @@ void C_DECL A_FirePhoenixPL2(player_t *player, pspdef_t *psp)
if(--player->flameCount == 0)
{ // Out of flame
P_SetPsprite(player, ps_weapon, S_PHOENIXATK2_4);
NetSv_PSpriteChange(player - players, S_PHOENIXATK2_4);
player->refire = 0;
return;
}
Expand Down

0 comments on commit 5ae8af6

Please sign in to comment.