Browse Source

Expose to python

Adam Johnson 12 years ago
parent
commit
07ddec2f79
  1. 10
      Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.cpp
  2. 2
      Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.h
  3. 10
      Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgrGlue.cpp
  4. 40
      Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.cpp
  5. 35
      Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.h

10
Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.cpp

@ -65,9 +65,15 @@ void pyNetLinkingMgr::SetEnabled( bool b ) const
plNetLinkingMgr::GetInstance()->SetEnabled( b ); plNetLinkingMgr::GetInstance()->SetEnabled( b );
} }
void pyNetLinkingMgr::LinkToAge( pyAgeLinkStruct & link, const char* linkAnim ) void pyNetLinkingMgr::LinkToAge( pyAgeLinkStruct & link, const char* linkAnim, bool linkInSfx, bool linkOutSfx )
{ {
plNetLinkingMgr::GetInstance()->LinkToAge( link.GetAgeLink(), linkAnim ); uint32_t sfx = plNetLinkingMgr::kPlayNone;
if (linkInSfx)
hsSetBits(sfx, plNetLinkingMgr::kPlayLinkIn);
if (linkOutSfx)
hsSetBits(sfx, plNetLinkingMgr::kPlayLinkOut);
plNetLinkingMgr::GetInstance()->LinkToAge( link.GetAgeLink(), linkAnim, (plNetLinkingMgr::LinkSfx)sfx );
} }
void pyNetLinkingMgr::LinkToMyPersonalAge() void pyNetLinkingMgr::LinkToMyPersonalAge()

2
Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgr.h

@ -80,7 +80,7 @@ public:
void SetEnabled( bool b ) const; void SetEnabled( bool b ) const;
// Link to a public instance. PLS will load balance. // Link to a public instance. PLS will load balance.
void LinkToAge( pyAgeLinkStruct & link, const char* linkAnim ); void LinkToAge( pyAgeLinkStruct & link, const char* linkAnim, bool linkInSfx, bool linkOutSfx );
// Link to my Personal Age // Link to my Personal Age
void LinkToMyPersonalAge(); void LinkToMyPersonalAge();
// link to my personal age with the YeehsaBook // link to my personal age with the YeehsaBook

10
Sources/Plasma/FeatureLib/pfPython/pyNetLinkingMgrGlue.cpp

@ -79,11 +79,13 @@ PYTHON_METHOD_DEFINITION(ptNetLinkingMgr, setEnabled, args)
PYTHON_RETURN_NONE; PYTHON_RETURN_NONE;
} }
PYTHON_METHOD_DEFINITION(ptNetLinkingMgr, linkToAge, args) PYTHON_METHOD_DEFINITION_WKEY(ptNetLinkingMgr, linkToAge, args, kwargs)
{ {
char* kwlist[] = { "ageLink", "anim", "linkInSfx", "linkOutSfx", nullptr };
PyObject* ageLinkObj = NULL; PyObject* ageLinkObj = NULL;
char* linkAnim = NULL; char* linkAnim = NULL;
if (!PyArg_ParseTuple(args, "O|s", &ageLinkObj, &linkAnim)) bool linkInSfx, linkOutSfx = true;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|sbb", kwlist, &ageLinkObj, &linkAnim, &linkInSfx, &linkOutSfx))
{ {
PyErr_SetString(PyExc_TypeError, "linkToAge expects a ptAgeLinkStruct and an optional link anim name"); PyErr_SetString(PyExc_TypeError, "linkToAge expects a ptAgeLinkStruct and an optional link anim name");
PYTHON_RETURN_ERROR; PYTHON_RETURN_ERROR;
@ -94,7 +96,7 @@ PYTHON_METHOD_DEFINITION(ptNetLinkingMgr, linkToAge, args)
PYTHON_RETURN_ERROR; PYTHON_RETURN_ERROR;
} }
pyAgeLinkStruct* ageLink = pyAgeLinkStruct::ConvertFrom(ageLinkObj); pyAgeLinkStruct* ageLink = pyAgeLinkStruct::ConvertFrom(ageLinkObj);
self->fThis->LinkToAge(*ageLink, linkAnim); self->fThis->LinkToAge(*ageLink, linkAnim, linkInSfx, linkOutSfx);
PYTHON_RETURN_NONE; PYTHON_RETURN_NONE;
} }
@ -158,7 +160,7 @@ PYTHON_METHOD_DEFINITION_NOARGS(ptNetLinkingMgr, getPrevAgeLink)
PYTHON_START_METHODS_TABLE(ptNetLinkingMgr) PYTHON_START_METHODS_TABLE(ptNetLinkingMgr)
PYTHON_METHOD_NOARGS(ptNetLinkingMgr, isEnabled, "True if linking is enabled."), PYTHON_METHOD_NOARGS(ptNetLinkingMgr, isEnabled, "True if linking is enabled."),
PYTHON_METHOD(ptNetLinkingMgr, setEnabled, "Params: enable\nEnable/Disable linking."), PYTHON_METHOD(ptNetLinkingMgr, setEnabled, "Params: enable\nEnable/Disable linking."),
PYTHON_METHOD(ptNetLinkingMgr, linkToAge, "Params: ageLink, linkAnim\nLinks to ageLink (ptAgeLinkStruct, string)"), PYTHON_METHOD_WKEY(ptNetLinkingMgr, linkToAge, "Params: ageLink, linkAnim\nLinks to ageLink (ptAgeLinkStruct, string)"),
PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyPersonalAge, "Link to my Personal Age"), PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyPersonalAge, "Link to my Personal Age"),
PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyPersonalAgeWithYeeshaBook, "Link to my Personal Age with the YeeshaBook"), PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyPersonalAgeWithYeeshaBook, "Link to my Personal Age with the YeeshaBook"),
PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyNeighborhoodAge, "Link to my Neighborhood Age"), PYTHON_BASIC_METHOD(ptNetLinkingMgr, linkToMyNeighborhoodAge, "Link to my Neighborhood Age"),

40
Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.cpp

@ -547,12 +547,14 @@ bool plNetLinkingMgr::IProcessVaultNotifyMsg(plVaultNotifyMsg* msg)
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
bool plNetLinkingMgr::IDispatchMsg( plMessage * msg, uint32_t playerID ) bool plNetLinkingMgr::IDispatchMsg( plMessage* msg, LinkSfx sfx, uint32_t playerID )
{ {
plNetClientMgr * nc = plNetClientMgr::GetInstance(); plNetClientMgr * nc = plNetClientMgr::GetInstance();
msg->AddReceiver( plNetClientMgr::GetInstance()->GetKey() ); msg->AddReceiver( plNetClientMgr::GetInstance()->GetKey() );
plLinkToAgeMsg* linkToAge = plLinkToAgeMsg::ConvertNoRef(msg);
if (linkToAge)
linkToAge->PlayLinkSfx(hsTestBits(sfx, kPlayLinkIn), hsTestBits(sfx, kPlayLinkOut));
if ( playerID!=kInvalidPlayerID && playerID!=nc->GetPlayerID() ) if ( playerID!=kInvalidPlayerID && playerID!=nc->GetPlayerID() )
{ {
msg->SetBCastFlag( plMessage::kNetAllowInterAge ); msg->SetBCastFlag( plMessage::kNetAllowInterAge );
@ -563,17 +565,17 @@ bool plNetLinkingMgr::IDispatchMsg( plMessage * msg, uint32_t playerID )
msg->AddNetReceiver( playerID ); msg->AddNetReceiver( playerID );
} }
return ( msg->Send()!=0 ); return msg->Send();
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, uint32_t playerID ) void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, LinkSfx sfx, uint32_t playerID )
{ {
LinkToAge(link, nil, playerID); LinkToAge(link, nil, sfx, playerID);
} }
void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, const char* linkAnim, uint32_t playerID ) void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, const char* linkAnim, LinkSfx sfx, uint32_t playerID )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -584,11 +586,11 @@ void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, const char* linkAnim, u
plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( link ); plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( link );
if (linkAnim) if (linkAnim)
pMsg->SetLinkInAnimName(linkAnim); pMsg->SetLinkInAnimName(linkAnim);
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, sfx, playerID );
} }
// link myself back to my last age // link myself back to my last age
void plNetLinkingMgr::LinkToPrevAge( uint32_t playerID ) void plNetLinkingMgr::LinkToPrevAge( LinkSfx sfx, uint32_t playerID )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -599,7 +601,7 @@ void plNetLinkingMgr::LinkToPrevAge( uint32_t playerID )
if (GetPrevAgeLink()->GetAgeInfo()->HasAgeFilename()) if (GetPrevAgeLink()->GetAgeInfo()->HasAgeFilename())
{ {
plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( GetPrevAgeLink() ); plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( GetPrevAgeLink() );
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, sfx, playerID );
} }
else else
{ {
@ -607,7 +609,7 @@ void plNetLinkingMgr::LinkToPrevAge( uint32_t playerID )
} }
} }
void plNetLinkingMgr::LinkToMyPersonalAge( uint32_t playerID ) void plNetLinkingMgr::LinkToMyPersonalAge( LinkSfx sfx, uint32_t playerID )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -625,10 +627,10 @@ void plNetLinkingMgr::LinkToMyPersonalAge( uint32_t playerID )
link.SetSpawnPoint(hutSpawnPoint); link.SetSpawnPoint(hutSpawnPoint);
plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( &link ); plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( &link );
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, sfx, playerID );
} }
void plNetLinkingMgr::LinkToMyNeighborhoodAge( uint32_t playerID ) void plNetLinkingMgr::LinkToMyNeighborhoodAge( LinkSfx sfx, uint32_t playerID )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -644,10 +646,10 @@ void plNetLinkingMgr::LinkToMyNeighborhoodAge( uint32_t playerID )
link.SetLinkingRules( plNetCommon::LinkingRules::kOwnedBook ); link.SetLinkingRules( plNetCommon::LinkingRules::kOwnedBook );
plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( &link ); plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( &link );
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, sfx, playerID );
} }
void plNetLinkingMgr::LinkPlayerHere( uint32_t playerID ) void plNetLinkingMgr::LinkPlayerHere( uint32_t playerID, LinkSfx sfx )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -659,10 +661,10 @@ void plNetLinkingMgr::LinkPlayerHere( uint32_t playerID )
// send the player our current age info so they can link here. // send the player our current age info so they can link here.
plAgeLinkStruct link; plAgeLinkStruct link;
link.GetAgeInfo()->CopyFrom( GetAgeLink()->GetAgeInfo() ); link.GetAgeInfo()->CopyFrom( GetAgeLink()->GetAgeInfo() );
LinkPlayerToAge( &link, playerID ); LinkPlayerToAge( &link, playerID, sfx );
} }
void plNetLinkingMgr::LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID ) void plNetLinkingMgr::LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID, LinkSfx sfx )
{ {
if ( !fLinkingEnabled ) if ( !fLinkingEnabled )
{ {
@ -674,7 +676,7 @@ void plNetLinkingMgr::LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID
// send the player the age link so they can link there. // send the player the age link so they can link there.
link->SetLinkingRules( plNetCommon::LinkingRules::kBasicLink ); link->SetLinkingRules( plNetCommon::LinkingRules::kBasicLink );
plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( link ); plLinkToAgeMsg* pMsg = new plLinkToAgeMsg( link );
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, sfx, playerID );
} }
// //
@ -693,7 +695,7 @@ void plNetLinkingMgr::LinkPlayerToPrevAge( uint32_t playerID )
plLinkingMgrMsg* pMsg = new plLinkingMgrMsg(); plLinkingMgrMsg* pMsg = new plLinkingMgrMsg();
pMsg->SetCmd( kLinkPlayerToPrevAge); pMsg->SetCmd( kLinkPlayerToPrevAge);
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, kPlayBoth, playerID );
} }
void plNetLinkingMgr::LinkToPlayersAge( uint32_t playerID ) void plNetLinkingMgr::LinkToPlayersAge( uint32_t playerID )
@ -709,7 +711,7 @@ void plNetLinkingMgr::LinkToPlayersAge( uint32_t playerID )
plLinkingMgrMsg* pMsg = new plLinkingMgrMsg(); plLinkingMgrMsg* pMsg = new plLinkingMgrMsg();
pMsg->SetCmd( kLinkPlayerHere ); pMsg->SetCmd( kLinkPlayerHere );
pMsg->GetArgs()->AddInt( 0, NetCommGetPlayer()->playerInt ); // send them our id. pMsg->GetArgs()->AddInt( 0, NetCommGetPlayer()->playerInt ); // send them our id.
IDispatchMsg( pMsg, playerID ); IDispatchMsg( pMsg, kPlayBoth, playerID );
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

35
Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.h

@ -55,6 +55,16 @@ struct plNCAgeLeaver;
class plNetLinkingMgr class plNetLinkingMgr
{ {
public:
enum LinkSfx
{
kPlayNone = 0,
kPlayLinkIn = 1<<0,
kPlayLinkOut = 1<<1,
kPlayBoth = (kPlayLinkIn | kPlayLinkOut)
};
private:
static void NCAgeJoinerCallback ( static void NCAgeJoinerCallback (
plNCAgeJoiner * joiner, plNCAgeJoiner * joiner,
unsigned type, unsigned type,
@ -110,7 +120,7 @@ class plNetLinkingMgr
void IDoLink(plLinkToAgeMsg* link); void IDoLink(plLinkToAgeMsg* link);
bool IProcessVaultNotifyMsg(plVaultNotifyMsg* msg); bool IProcessVaultNotifyMsg(plVaultNotifyMsg* msg);
bool IDispatchMsg( plMessage * msg, uint32_t playerID ); bool IDispatchMsg( plMessage* msg, LinkSfx sfx, uint32_t playerID );
public: public:
@ -125,26 +135,35 @@ public:
bool Linking () const { return !fLinkedIn && !fLinkingEnabled; } bool Linking () const { return !fLinkedIn && !fLinkingEnabled; }
// Link to an age. // Link to an age.
void LinkToAge( plAgeLinkStruct * link, uint32_t playerID=kInvalidPlayerID ); void LinkToAge( plAgeLinkStruct * link, LinkSfx sfx=kPlayBoth, uint32_t playerID=kInvalidPlayerID );
void LinkToAge( plAgeLinkStruct * link, const char* linkAnim, uint32_t playerID=kInvalidPlayerID ); void LinkToAge( plAgeLinkStruct * link, const char* linkAnim, LinkSfx sfx=kPlayBoth, uint32_t playerID=kInvalidPlayerID );
// Link to my last age. // Link to my last age.
void LinkToPrevAge( uint32_t playerID=kInvalidPlayerID ); void LinkToPrevAge( LinkSfx sfx=kPlayBoth, uint32_t playerID=kInvalidPlayerID );
// Link to my Personal Age // Link to my Personal Age
void LinkToMyPersonalAge( uint32_t playerID=kInvalidPlayerID ); void LinkToMyPersonalAge( LinkSfx sfx=kPlayBoth, uint32_t playerID=kInvalidPlayerID );
// Link to my Neighborhood Age // Link to my Neighborhood Age
void LinkToMyNeighborhoodAge( uint32_t playerID=kInvalidPlayerID ); void LinkToMyNeighborhoodAge( LinkSfx sfx=kPlayBoth, uint32_t playerID=kInvalidPlayerID );
// Link a player here. // Link a player here.
void LinkPlayerHere( uint32_t playerID ); void LinkPlayerHere( uint32_t playerID, LinkSfx sfx=kPlayBoth );
// Link player to specified age // Link player to specified age
void LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID ); void LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID, LinkSfx sfx=kPlayBoth );
// Link player back to his last age // Link player back to his last age
void LinkPlayerToPrevAge( uint32_t playerID ); void LinkPlayerToPrevAge( uint32_t playerID );
// Link us to a players age. // Link us to a players age.
void LinkToPlayersAge( uint32_t playerID ); void LinkToPlayersAge( uint32_t playerID );
// Offer a link to player. // Offer a link to player.
void OfferLinkToPlayer( const plAgeLinkStruct * info, uint32_t playerID, plKey replyKey ); void OfferLinkToPlayer( const plAgeLinkStruct * info, uint32_t playerID, plKey replyKey );
void OfferLinkToPlayer( const plAgeInfoStruct * info, uint32_t playerID ); void OfferLinkToPlayer( const plAgeInfoStruct * info, uint32_t playerID );
void OfferLinkToPlayer( const plAgeLinkStruct * info, uint32_t playerID ); void OfferLinkToPlayer( const plAgeLinkStruct * info, uint32_t playerID );
// Leave the current age // Leave the current age
void LeaveAge (bool quitting); void LeaveAge (bool quitting);

Loading…
Cancel
Save