Skip to content

Commit

Permalink
Refactor: Added Mobj_ActionFunctionAllowed()
Browse files Browse the repository at this point in the history
Working toward an improved way for the server to allow
the client to perform mobj action functions locally under
some circumstances.
  • Loading branch information
skyjake committed Jan 15, 2012
1 parent 8fd36a7 commit 37189bd
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 27 deletions.
5 changes: 4 additions & 1 deletion doomsday/engine/api/doomsday.h
Expand Up @@ -2,6 +2,9 @@
* @file doomsday.h
* Primary header file for the Doomsday Engine Public API
*
* @todo Break this header file up into group-specific ones.
* Including doomsday.h should include all of the public API headers.
*
* @authors Copyright &copy; 2003-2012 Jaakko Keränen <jaakko.keranen@iki.fi>
* @authors Copyright &copy; 2006-2012 Daniel Swanson <danij@dengine.net>
* @authors Copyright &copy; 2007 Jamie Jones <jamie_jones_au@yahoo.com.au>
Expand Down Expand Up @@ -35,7 +38,7 @@
* - @ref input
* - @ref network
* - @ref resource
* - @ref gl
* - @ref render
*/

#ifndef LIBDENG_EXPORTS_H
Expand Down
16 changes: 15 additions & 1 deletion doomsday/plugins/common/include/mobj.h
Expand Up @@ -28,14 +28,28 @@

#include "g_common.h"

/**
* Handles the stopping of mobj movement. Also stops player walking animation.
*
* @param mo Mobj.
*/
void Mobj_XYMoveStopping(mobj_t* mo);

boolean Mobj_IsPlayerClMobj(mobj_t* thing);
/**
* Checks if @a thing is a clmobj of one of the players.
*/
boolean Mobj_IsPlayerClMobj(mobj_t* mo);

/**
* @param allAround @c false= only look 180 degrees in front.
* @return @c true iff a player was targeted.
*/
boolean Mobj_LookForPlayers(mobj_t* mo, boolean allAround);

/**
* Determines if it is allowed to execute the action function of @a mo.
* @return @c true, if allowed.
*/
boolean Mobj_ActionFunctionAllowed(mobj_t* mo);

#endif // __LIBCOMMON_MOBJ__
23 changes: 13 additions & 10 deletions doomsday/plugins/common/src/mobj.c
Expand Up @@ -62,11 +62,7 @@ static float getFriction(mobj_t* mo)

return P_MobjGetFriction(mo);
}
/**
* Handles the stopping of mobj movement. Also stops player walking animation.
*
* @param mo Mobj.
*/

void Mobj_XYMoveStopping(mobj_t* mo)
{
player_t* player = mo->player;
Expand Down Expand Up @@ -157,16 +153,13 @@ void Mobj_XYMoveStopping(mobj_t* mo)
}
}

/**
* Checks if @a thing is a clmobj of one of the players.
*/
boolean Mobj_IsPlayerClMobj(mobj_t* thing)
boolean Mobj_IsPlayerClMobj(mobj_t* mo)
{
int i;

for(i = 0; i < MAXPLAYERS; i++)
{
if(ClPlayer_ClMobj(i) == thing)
if(ClPlayer_ClMobj(i) == mo)
return true;
}
return false;
Expand Down Expand Up @@ -253,3 +246,13 @@ boolean Mobj_LookForPlayers(mobj_t* mo, boolean allAround)
mo->lastLook = cand;
return foundTarget;
}

boolean Mobj_ActionFunctionAllowed(mobj_t* mo)
{
if(!(mobj->ddFlags & DDMF_REMOTE) || // only for local mobjs
(mobj->flags3 & MF3_CLIENTACTION)) // action functions allowed?
{
return true;
}
return false;
}
7 changes: 2 additions & 5 deletions doomsday/plugins/jdoom/src/p_mobj.c
Expand Up @@ -97,13 +97,10 @@ boolean P_MobjChangeState(mobj_t* mobj, statenum_t state)

mobj->turnTime = false; // $visangle-facetarget

if(!(mobj->ddFlags & DDMF_REMOTE) || // only for local mobjs
(mobj->flags3 & MF3_CLIENTACTION)) // action functions allowed?
if(Mobj_ActionFunctionAllowed(mobj))
{
// Modified handling.
// Call action functions when the state is set.
if(st->action)
st->action(mobj);
if(st->action) st->action(mobj);
}
state = st->nextState;
} while(!mobj->tics);
Expand Down
5 changes: 1 addition & 4 deletions doomsday/plugins/jdoom64/src/p_mobj.c
Expand Up @@ -103,10 +103,7 @@ boolean P_MobjChangeState(mobj_t* mobj, statenum_t state)

mobj->turnTime = false; // $visangle-facetarget

// Modified handling.
// Call action functions when the state is set
if(!(mobj->ddFlags & DDMF_REMOTE) || // only for local mobjs
(mobj->flags3 & MF3_CLIENTACTION)) // action functions allowed?
if(Mobj_ActionFunctionAllowed(mobj))
{
if(st->action) st->action(mobj);
}
Expand Down
5 changes: 2 additions & 3 deletions doomsday/plugins/jheretic/src/p_mobj.c
Expand Up @@ -76,7 +76,7 @@ const terraintype_t* P_MobjGetFloorTerrainType(mobj_t* mo)
return P_PlaneMaterialTerrainType(sec, PLN_FLOOR);
}

/**
/**
* @return @c true, if the mobj is still present.
*/
boolean P_MobjChangeState(mobj_t* mobj, statenum_t state)
Expand All @@ -95,8 +95,7 @@ boolean P_MobjChangeState(mobj_t* mobj, statenum_t state)
mobj->turnTime = false; // $visangle-facetarget.

st = &STATES[state];
if(!(mobj->ddFlags & DDMF_REMOTE) || // only for local mobjs?
(mobj->flags3 & MF3_CLIENTACTION)) // action functions allowed?
if(Mobj_ActionFunctionAllowed(mobj))
{
if(st->action) st->action(mobj); // Call action function.
}
Expand Down
5 changes: 2 additions & 3 deletions doomsday/plugins/jhexen/src/p_mobj.c
Expand Up @@ -111,10 +111,9 @@ boolean P_MobjChangeState(mobj_t *mobj, statenum_t state)
P_MobjSetState(mobj, state);
mobj->turnTime = false; // $visangle-facetarget

st = &STATES[state];
if(!(mobj->ddFlags & DDMF_REMOTE) || // only for local mobjs
(mobj->flags3 & MF3_CLIENTACTION)) // action functions allowed?
if(Mobj_ActionFunctionAllowed(mobj))
{
st = &STATES[state];
if(st->action) st->action(mobj); // Call action function.
}

Expand Down

0 comments on commit 37189bd

Please sign in to comment.