mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-18 11:19:10 +00:00
@ -65,9 +65,9 @@ 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 );
|
plNetLinkingMgr::GetInstance()->LinkToAge( link.GetAgeLink(), linkAnim, linkInSfx, linkOutSfx );
|
||||||
}
|
}
|
||||||
|
|
||||||
void pyNetLinkingMgr::LinkToMyPersonalAge()
|
void pyNetLinkingMgr::LinkToMyPersonalAge()
|
||||||
|
@ -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
|
||||||
|
@ -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"),
|
||||||
|
@ -53,11 +53,11 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
//
|
//
|
||||||
// plLinkToAgeMsg
|
// plLinkToAgeMsg
|
||||||
|
|
||||||
plLinkToAgeMsg::plLinkToAgeMsg() : fLinkInAnimName(nil)
|
plLinkToAgeMsg::plLinkToAgeMsg() : fLinkInAnimName(nil), fFlags(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
plLinkToAgeMsg::plLinkToAgeMsg( const plAgeLinkStruct * link ) : fLinkInAnimName(nil)
|
plLinkToAgeMsg::plLinkToAgeMsg( const plAgeLinkStruct * link ) : fLinkInAnimName(nil), fFlags(0)
|
||||||
{
|
{
|
||||||
fAgeLink.CopyFrom( link );
|
fAgeLink.CopyFrom( link );
|
||||||
}
|
}
|
||||||
@ -67,12 +67,22 @@ plLinkToAgeMsg::~plLinkToAgeMsg()
|
|||||||
delete [] fLinkInAnimName;
|
delete [] fLinkInAnimName;
|
||||||
}
|
}
|
||||||
|
|
||||||
// StreamVersion needed for back compatibility.
|
void plLinkToAgeMsg::PlayLinkSfx(bool linkIn, bool linkOut)
|
||||||
uint8_t plLinkToAgeInfo_StreamVersion = 0;
|
{
|
||||||
|
if (linkIn)
|
||||||
|
fFlags &= ~kMuteLinkInSfx;
|
||||||
|
else
|
||||||
|
fFlags |= kMuteLinkInSfx;
|
||||||
|
if (linkOut)
|
||||||
|
fFlags &= ~kMuteLinkOutSfx;
|
||||||
|
else
|
||||||
|
fFlags |= kMuteLinkOutSfx;
|
||||||
|
}
|
||||||
|
|
||||||
void plLinkToAgeMsg::Read(hsStream* stream, hsResMgr* mgr)
|
void plLinkToAgeMsg::Read(hsStream* stream, hsResMgr* mgr)
|
||||||
{
|
{
|
||||||
plMessage::IMsgRead( stream, mgr );
|
plMessage::IMsgRead( stream, mgr );
|
||||||
uint8_t ltaVer = stream->ReadByte();
|
fFlags = stream->ReadByte();
|
||||||
fAgeLink.Read( stream, mgr );
|
fAgeLink.Read( stream, mgr );
|
||||||
fLinkInAnimName = stream->ReadSafeString();
|
fLinkInAnimName = stream->ReadSafeString();
|
||||||
}
|
}
|
||||||
@ -80,7 +90,7 @@ void plLinkToAgeMsg::Read(hsStream* stream, hsResMgr* mgr)
|
|||||||
void plLinkToAgeMsg::Write(hsStream* stream, hsResMgr* mgr)
|
void plLinkToAgeMsg::Write(hsStream* stream, hsResMgr* mgr)
|
||||||
{
|
{
|
||||||
plMessage::IMsgWrite( stream, mgr );
|
plMessage::IMsgWrite( stream, mgr );
|
||||||
stream->WriteByte( plLinkToAgeInfo_StreamVersion );
|
stream->WriteByte( fFlags );
|
||||||
fAgeLink.Write( stream, mgr );
|
fAgeLink.Write( stream, mgr );
|
||||||
stream->WriteSafeString(fLinkInAnimName);
|
stream->WriteSafeString(fLinkInAnimName);
|
||||||
}
|
}
|
||||||
@ -185,6 +195,14 @@ plLinkEffectsTriggerMsg::~plLinkEffectsTriggerMsg()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void plLinkEffectsTriggerMsg::MuteLinkSfx(bool mute)
|
||||||
|
{
|
||||||
|
if (mute)
|
||||||
|
fFlags |= kMuteLinkSfx;
|
||||||
|
else
|
||||||
|
fFlags &= ~kMuteLinkSfx;
|
||||||
|
}
|
||||||
|
|
||||||
void plLinkEffectsTriggerMsg::Read(hsStream* stream, hsResMgr* mgr)
|
void plLinkEffectsTriggerMsg::Read(hsStream* stream, hsResMgr* mgr)
|
||||||
{
|
{
|
||||||
plMessage::IMsgRead( stream, mgr );
|
plMessage::IMsgRead( stream, mgr );
|
||||||
@ -192,11 +210,7 @@ void plLinkEffectsTriggerMsg::Read(hsStream* stream, hsResMgr* mgr)
|
|||||||
fInvisLevel = stream->ReadLE32();
|
fInvisLevel = stream->ReadLE32();
|
||||||
fLeavingAge = stream->ReadBool();
|
fLeavingAge = stream->ReadBool();
|
||||||
fLinkKey = mgr->ReadKey(stream);
|
fLinkKey = mgr->ReadKey(stream);
|
||||||
|
fFlags = stream->ReadLE32();
|
||||||
// This variable is for internal use only. Still read/written for backwards compatability.
|
|
||||||
fEffects = stream->ReadLE32();
|
|
||||||
fEffects = 0;
|
|
||||||
|
|
||||||
fLinkInAnimKey = mgr->ReadKey(stream);
|
fLinkInAnimKey = mgr->ReadKey(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +221,7 @@ void plLinkEffectsTriggerMsg::Write(hsStream* stream, hsResMgr* mgr)
|
|||||||
stream->WriteLE32(fInvisLevel);
|
stream->WriteLE32(fInvisLevel);
|
||||||
stream->WriteBool(fLeavingAge);
|
stream->WriteBool(fLeavingAge);
|
||||||
mgr->WriteKey(stream, fLinkKey);
|
mgr->WriteKey(stream, fLinkKey);
|
||||||
stream->WriteLE32(fEffects);
|
stream->WriteLE32(fFlags);
|
||||||
mgr->WriteKey(stream, fLinkInAnimKey);
|
mgr->WriteKey(stream, fLinkInAnimKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,13 @@ class hsResMgr;
|
|||||||
|
|
||||||
class plLinkToAgeMsg : public plMessage
|
class plLinkToAgeMsg : public plMessage
|
||||||
{
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
kMuteLinkOutSfx = 1<<0,
|
||||||
|
kMuteLinkInSfx = 1<<1,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t fFlags;
|
||||||
plAgeLinkStruct fAgeLink;
|
plAgeLinkStruct fAgeLink;
|
||||||
char* fLinkInAnimName;
|
char* fLinkInAnimName;
|
||||||
|
|
||||||
@ -72,6 +79,10 @@ public:
|
|||||||
plAgeLinkStruct * GetAgeLink() { return &fAgeLink; }
|
plAgeLinkStruct * GetAgeLink() { return &fAgeLink; }
|
||||||
const plAgeLinkStruct * GetAgeLink() const { return &fAgeLink; }
|
const plAgeLinkStruct * GetAgeLink() const { return &fAgeLink; }
|
||||||
|
|
||||||
|
void PlayLinkSfx(bool linkIn = true, bool linkOut = true);
|
||||||
|
bool PlayLinkInSfx() const { return (fFlags & kMuteLinkInSfx) == 0; }
|
||||||
|
bool PlayLinkOutSfx() const { return (fFlags & kMuteLinkOutSfx) == 0; }
|
||||||
|
|
||||||
const char * GetLinkInAnimName() { return fLinkInAnimName; }
|
const char * GetLinkInAnimName() { return fLinkInAnimName; }
|
||||||
void SetLinkInAnimName(const char* name) { delete [] fLinkInAnimName; fLinkInAnimName = hsStrcpy(name); }
|
void SetLinkInAnimName(const char* name) { delete [] fLinkInAnimName; fLinkInAnimName = hsStrcpy(name); }
|
||||||
|
|
||||||
@ -117,12 +128,18 @@ public:
|
|||||||
class plLinkEffectsTriggerMsg : public plMessage
|
class plLinkEffectsTriggerMsg : public plMessage
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
kMuteLinkSfx = 1<<0
|
||||||
|
};
|
||||||
|
|
||||||
bool fLeavingAge;
|
bool fLeavingAge;
|
||||||
plKey fLinkKey;
|
plKey fLinkKey;
|
||||||
plKey fLinkInAnimKey;
|
plKey fLinkInAnimKey;
|
||||||
int fInvisLevel;
|
int fInvisLevel;
|
||||||
|
int fFlags;
|
||||||
public:
|
public:
|
||||||
plLinkEffectsTriggerMsg() : fLeavingAge(true), fLinkKey(nil), fLinkInAnimKey(nil), fEffects(0), fInvisLevel(0) { }
|
plLinkEffectsTriggerMsg() : fLeavingAge(true), fLinkKey(nil), fLinkInAnimKey(nil), fEffects(0), fInvisLevel(0), fFlags(0) { }
|
||||||
~plLinkEffectsTriggerMsg();
|
~plLinkEffectsTriggerMsg();
|
||||||
|
|
||||||
CLASSNAME_REGISTER( plLinkEffectsTriggerMsg );
|
CLASSNAME_REGISTER( plLinkEffectsTriggerMsg );
|
||||||
@ -139,6 +156,9 @@ public:
|
|||||||
|
|
||||||
void SetLinkInAnimKey(plKey &key);
|
void SetLinkInAnimKey(plKey &key);
|
||||||
plKey GetLinkInAnimKey() { return fLinkInAnimKey; }
|
plKey GetLinkInAnimKey() { return fLinkInAnimKey; }
|
||||||
|
|
||||||
|
void MuteLinkSfx(bool mute);
|
||||||
|
bool MuteLinkSfx() const { return (fFlags & kMuteLinkSfx) != 0; }
|
||||||
|
|
||||||
void Read(hsStream* stream, hsResMgr* mgr);
|
void Read(hsStream* stream, hsResMgr* mgr);
|
||||||
void Write(hsStream* stream, hsResMgr* mgr);
|
void Write(hsStream* stream, hsResMgr* mgr);
|
||||||
|
@ -365,6 +365,7 @@ bool plLinkEffectsMgr::MsgReceive(plMessage *msg)
|
|||||||
BCMsg->fLinkKey = linkKey;
|
BCMsg->fLinkKey = linkKey;
|
||||||
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kLeavingAge, pTriggerMsg->IsLeavingAge());
|
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kLeavingAge, pTriggerMsg->IsLeavingAge());
|
||||||
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kSendCallback, true);
|
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kSendCallback, true);
|
||||||
|
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kMute, pTriggerMsg->MuteLinkSfx());
|
||||||
|
|
||||||
// Check if you have a Yeesha book, and mute sound if you don't.
|
// Check if you have a Yeesha book, and mute sound if you don't.
|
||||||
// 'CleftSolved' gets set when you click on the linking panel in the cleft,
|
// 'CleftSolved' gets set when you click on the linking panel in the cleft,
|
||||||
@ -393,7 +394,7 @@ bool plLinkEffectsMgr::MsgReceive(plMessage *msg)
|
|||||||
if ( linkToACA || linkFromACA || linkToStartup || linkFromStartup || linkToFissureDrop || linkToDsntFromShell)
|
if ( linkToACA || linkFromACA || linkToStartup || linkFromStartup || linkToFissureDrop || linkToDsntFromShell)
|
||||||
{
|
{
|
||||||
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kMute);
|
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kMute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
#include "plNetCliAgeJoiner.h"
|
#include "plNetCliAgeJoiner.h"
|
||||||
#include "plNetClientMgr.h"
|
#include "plNetClientMgr.h"
|
||||||
#include "plNetLinkingMgr.h"
|
#include "plNetLinkingMgr.h"
|
||||||
|
#include "plNetObjectDebugger.h"
|
||||||
|
|
||||||
#include "pnSceneObject/plSceneObject.h"
|
#include "pnSceneObject/plSceneObject.h"
|
||||||
#include "pnSceneObject/plCoordinateInterface.h"
|
#include "pnSceneObject/plCoordinateInterface.h"
|
||||||
@ -59,6 +60,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
|
|
||||||
#include "plNetClientComm/plNetClientComm.h"
|
#include "plNetClientComm/plNetClientComm.h"
|
||||||
#include "plAgeLoader/plAgeLoader.h"
|
#include "plAgeLoader/plAgeLoader.h"
|
||||||
|
#include "plAvatar/plArmatureMod.h"
|
||||||
#include "plAvatar/plAvatarMgr.h"
|
#include "plAvatar/plAvatarMgr.h"
|
||||||
#include "plVault/plVault.h"
|
#include "plVault/plVault.h"
|
||||||
|
|
||||||
@ -100,11 +102,13 @@ struct plNCAgeJoiner {
|
|||||||
FNCAgeJoinerCallback callback;
|
FNCAgeJoinerCallback callback;
|
||||||
void * userState;
|
void * userState;
|
||||||
bool complete;
|
bool complete;
|
||||||
|
bool muteLinkSfx;
|
||||||
|
|
||||||
plOperationProgress* progressBar;
|
plOperationProgress* progressBar;
|
||||||
|
|
||||||
plNCAgeJoiner (
|
plNCAgeJoiner (
|
||||||
const NetCommAge & age,
|
const NetCommAge & age,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeJoinerCallback callback,
|
FNCAgeJoinerCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
);
|
);
|
||||||
@ -157,10 +161,12 @@ void AgeVaultDownloadCallback (
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
plNCAgeJoiner::plNCAgeJoiner (
|
plNCAgeJoiner::plNCAgeJoiner (
|
||||||
const NetCommAge & age,
|
const NetCommAge & age,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeJoinerCallback callback,
|
FNCAgeJoinerCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
) : nextOp(kNoOp)
|
) : nextOp(kNoOp)
|
||||||
, age(age)
|
, age(age)
|
||||||
|
, muteLinkSfx(muteSfx)
|
||||||
, callback(callback)
|
, callback(callback)
|
||||||
, userState(userState)
|
, userState(userState)
|
||||||
, complete(false)
|
, complete(false)
|
||||||
@ -354,7 +360,7 @@ void plNCAgeJoiner::ExecNextOp () {
|
|||||||
nc->SetFlagsBit(plNetClientApp::kPlayingGame);
|
nc->SetFlagsBit(plNetClientApp::kPlayingGame);
|
||||||
nc->SetFlagsBit(plNetClientApp::kNeedToSendInitialAgeStateLoadedMsg);
|
nc->SetFlagsBit(plNetClientApp::kNeedToSendInitialAgeStateLoadedMsg);
|
||||||
plAgeLoader::GetInstance()->NotifyAgeLoaded(true);
|
plAgeLoader::GetInstance()->NotifyAgeLoaded(true);
|
||||||
Complete(true, "Age joined");
|
nextOp = kNoOp;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -448,6 +454,36 @@ bool plNCAgeJoiner::MsgReceive (plMessage * msg) {
|
|||||||
nextOp = kDestroyProgressBar;
|
nextOp = kDestroyProgressBar;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//========================================================================
|
||||||
|
// Done loading all states. Time to link in!
|
||||||
|
//========================================================================
|
||||||
|
plInitialAgeStateLoadedMsg * stateMsg = plInitialAgeStateLoadedMsg::ConvertNoRef(msg);
|
||||||
|
if(stateMsg) {
|
||||||
|
plNetObjectDebugger::GetInstance()->LogMsg("OnServerInitComplete");
|
||||||
|
nc->SetFlagsBit(plNetClientApp::kLoadingInitialAgeState, false);
|
||||||
|
|
||||||
|
const plArmatureMod *avMod = plAvatarMgr::GetInstance()->GetLocalAvatar();
|
||||||
|
|
||||||
|
plLinkEffectsTriggerMsg* lem = new plLinkEffectsTriggerMsg();
|
||||||
|
lem->SetLeavingAge(false); // linking in
|
||||||
|
lem->SetLinkKey(nc->GetLocalPlayerKey());
|
||||||
|
plKey animKey = avMod->GetLinkInAnimKey();
|
||||||
|
lem->SetLinkInAnimKey(animKey);
|
||||||
|
|
||||||
|
// indicate if we are invisible
|
||||||
|
if (avMod && avMod->IsInStealthMode() && avMod->GetTarget(0))
|
||||||
|
lem->SetInvisLevel(avMod->GetStealthLevel());
|
||||||
|
|
||||||
|
lem->SetBCastFlag(plMessage::kNetPropagate);
|
||||||
|
lem->MuteLinkSfx(muteLinkSfx);
|
||||||
|
lem->AddReceiver(hsgResMgr::ResMgr()->FindKey(plUoid(kLinkEffectsMgr_KEY)));
|
||||||
|
lem->AddReceiver(hsgResMgr::ResMgr()->FindKey(plUoid(kClient_KEY)));
|
||||||
|
lem->Send();
|
||||||
|
|
||||||
|
Complete(true, "Age joined");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -469,6 +505,7 @@ void plNCAgeJoiner::Update () {
|
|||||||
void NCAgeJoinerCreate (
|
void NCAgeJoinerCreate (
|
||||||
plNCAgeJoiner ** pjoiner,
|
plNCAgeJoiner ** pjoiner,
|
||||||
const NetCommAge & age,
|
const NetCommAge & age,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeJoinerCallback callback,
|
FNCAgeJoinerCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
) {
|
) {
|
||||||
@ -478,6 +515,7 @@ void NCAgeJoinerCreate (
|
|||||||
plNCAgeJoiner * joiner;
|
plNCAgeJoiner * joiner;
|
||||||
*pjoiner = joiner = new plNCAgeJoiner(
|
*pjoiner = joiner = new plNCAgeJoiner(
|
||||||
age,
|
age,
|
||||||
|
muteSfx,
|
||||||
callback,
|
callback,
|
||||||
userState
|
userState
|
||||||
);
|
);
|
||||||
|
@ -85,6 +85,7 @@ typedef void (* FNCAgeJoinerCallback)(
|
|||||||
void NCAgeJoinerCreate (
|
void NCAgeJoinerCreate (
|
||||||
plNCAgeJoiner ** joiner,
|
plNCAgeJoiner ** joiner,
|
||||||
const NetCommAge & age,
|
const NetCommAge & age,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeJoinerCallback callback,
|
FNCAgeJoinerCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
);
|
);
|
||||||
|
@ -81,12 +81,14 @@ struct plNCAgeLeaver {
|
|||||||
|
|
||||||
NextOp nextOp;
|
NextOp nextOp;
|
||||||
bool quitting;
|
bool quitting;
|
||||||
|
bool muteLinkSfx;
|
||||||
bool complete;
|
bool complete;
|
||||||
FNCAgeLeaverCallback callback;
|
FNCAgeLeaverCallback callback;
|
||||||
void * userState;
|
void * userState;
|
||||||
|
|
||||||
plNCAgeLeaver (
|
plNCAgeLeaver (
|
||||||
bool quitting,
|
bool quitting,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeLeaverCallback callback,
|
FNCAgeLeaverCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
);
|
);
|
||||||
@ -109,10 +111,12 @@ struct plNCAgeLeaver {
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
plNCAgeLeaver::plNCAgeLeaver (
|
plNCAgeLeaver::plNCAgeLeaver (
|
||||||
bool quitting,
|
bool quitting,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeLeaverCallback callback,
|
FNCAgeLeaverCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
) : nextOp(kNoOp)
|
) : nextOp(kNoOp)
|
||||||
, quitting(quitting)
|
, quitting(quitting)
|
||||||
|
, muteLinkSfx(muteSfx)
|
||||||
, complete(false)
|
, complete(false)
|
||||||
, callback(callback)
|
, callback(callback)
|
||||||
, userState(userState)
|
, userState(userState)
|
||||||
@ -200,7 +204,13 @@ void plNCAgeLeaver::ExecNextOp () {
|
|||||||
|
|
||||||
//====================================================================
|
//====================================================================
|
||||||
case kLinkOutFX: {
|
case kLinkOutFX: {
|
||||||
nc->StartLinkOutFX();
|
plLinkEffectsTriggerMsg* lem = new plLinkEffectsTriggerMsg();
|
||||||
|
lem->MuteLinkSfx(muteLinkSfx);
|
||||||
|
lem->SetLeavingAge(true);
|
||||||
|
lem->SetLinkKey(nc->GetLocalPlayerKey());
|
||||||
|
lem->SetBCastFlag(plMessage::kNetPropagate);
|
||||||
|
lem->SetBCastFlag(plMessage::kNetForce); // Necessary?
|
||||||
|
lem->Send(hsgResMgr::ResMgr()->FindKey(plUoid(kLinkEffectsMgr_KEY)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -264,6 +274,7 @@ void plNCAgeLeaver::Update () {
|
|||||||
void NCAgeLeaverCreate (
|
void NCAgeLeaverCreate (
|
||||||
plNCAgeLeaver ** pleaver,
|
plNCAgeLeaver ** pleaver,
|
||||||
bool quitting,
|
bool quitting,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeLeaverCallback callback,
|
FNCAgeLeaverCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
) {
|
) {
|
||||||
@ -273,6 +284,7 @@ void NCAgeLeaverCreate (
|
|||||||
plNCAgeLeaver * leaver;
|
plNCAgeLeaver * leaver;
|
||||||
*pleaver = leaver = new plNCAgeLeaver(
|
*pleaver = leaver = new plNCAgeLeaver(
|
||||||
quitting,
|
quitting,
|
||||||
|
muteSfx,
|
||||||
callback,
|
callback,
|
||||||
userState
|
userState
|
||||||
);
|
);
|
||||||
|
@ -85,6 +85,7 @@ typedef void (* FNCAgeLeaverCallback)(
|
|||||||
void NCAgeLeaverCreate (
|
void NCAgeLeaverCreate (
|
||||||
plNCAgeLeaver ** leaver,
|
plNCAgeLeaver ** leaver,
|
||||||
bool quitting,
|
bool quitting,
|
||||||
|
bool muteSfx,
|
||||||
FNCAgeLeaverCallback callback,
|
FNCAgeLeaverCallback callback,
|
||||||
void * userState
|
void * userState
|
||||||
);
|
);
|
||||||
|
@ -437,55 +437,6 @@ void plNetClientMgr::IUnloadNPCs()
|
|||||||
hsAssert(fNPCKeys.empty(), "Still npcs left when linking out");
|
hsAssert(fNPCKeys.empty(), "Still npcs left when linking out");
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// begin linking out sounds and gfx
|
|
||||||
//
|
|
||||||
void plNetClientMgr::StartLinkOutFX()
|
|
||||||
{
|
|
||||||
// send msg to trigger link out effect
|
|
||||||
if (fLocalPlayerKey)
|
|
||||||
{
|
|
||||||
plNetLinkingMgr * lm = plNetLinkingMgr::GetInstance();
|
|
||||||
|
|
||||||
plLinkEffectsTriggerMsg* lem = new plLinkEffectsTriggerMsg();
|
|
||||||
lem->SetLeavingAge(true);
|
|
||||||
lem->SetLinkKey(fLocalPlayerKey);
|
|
||||||
lem->SetBCastFlag(plMessage::kNetPropagate);
|
|
||||||
lem->SetBCastFlag(plMessage::kNetForce); // Necessary?
|
|
||||||
lem->AddReceiver(hsgResMgr::ResMgr()->FindKey(plUoid(kLinkEffectsMgr_KEY)));
|
|
||||||
lem->Send();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// beging linking in sounds snd gfx
|
|
||||||
//
|
|
||||||
void plNetClientMgr::StartLinkInFX()
|
|
||||||
{
|
|
||||||
if (fLocalPlayerKey)
|
|
||||||
{
|
|
||||||
const plArmatureMod *avMod = plAvatarMgr::GetInstance()->GetLocalAvatar();
|
|
||||||
|
|
||||||
plLinkEffectsTriggerMsg* lem = new plLinkEffectsTriggerMsg();
|
|
||||||
lem->SetLeavingAge(false); // linking in
|
|
||||||
lem->SetLinkKey(fLocalPlayerKey);
|
|
||||||
plKey animKey = avMod->GetLinkInAnimKey();
|
|
||||||
lem->SetLinkInAnimKey(animKey);
|
|
||||||
|
|
||||||
// indicate if we are invisible
|
|
||||||
if (avMod && avMod->IsInStealthMode() && avMod->GetTarget(0))
|
|
||||||
{
|
|
||||||
lem->SetInvisLevel(avMod->GetStealthLevel());
|
|
||||||
}
|
|
||||||
|
|
||||||
lem->SetBCastFlag(plMessage::kNetPropagate);
|
|
||||||
|
|
||||||
lem->AddReceiver(hsgResMgr::ResMgr()->FindKey(plUoid(kLinkEffectsMgr_KEY)));
|
|
||||||
lem->AddReceiver(hsgResMgr::ResMgr()->FindKey(plUoid(kClient_KEY)));
|
|
||||||
plgDispatch::MsgSend(lem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// compute the difference between our clock and the server's in unified time
|
// compute the difference between our clock and the server's in unified time
|
||||||
//
|
//
|
||||||
@ -1056,20 +1007,6 @@ bool plNetClientMgr::MsgReceive( plMessage* msg )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
plInitialAgeStateLoadedMsg *stateMsg = plInitialAgeStateLoadedMsg::ConvertNoRef( msg );
|
|
||||||
if( stateMsg != nil )
|
|
||||||
{
|
|
||||||
// done receiving the initial state of the age from the server
|
|
||||||
plNetObjectDebugger::GetInstance()->LogMsg("OnServerInitComplete");
|
|
||||||
|
|
||||||
// delete fProgressBar;
|
|
||||||
// fProgressBar=nil;
|
|
||||||
|
|
||||||
SetFlagsBit(kLoadingInitialAgeState, false);
|
|
||||||
StartLinkInFX();
|
|
||||||
}
|
|
||||||
|
|
||||||
plNetVoiceListMsg* voxList = plNetVoiceListMsg::ConvertNoRef(msg);
|
plNetVoiceListMsg* voxList = plNetVoiceListMsg::ConvertNoRef(msg);
|
||||||
if (voxList)
|
if (voxList)
|
||||||
{
|
{
|
||||||
|
@ -249,9 +249,6 @@ public:
|
|||||||
|
|
||||||
static plNetClientMgr* GetInstance() { return plNetClientMgr::ConvertNoRef(fInstance); }
|
static plNetClientMgr* GetInstance() { return plNetClientMgr::ConvertNoRef(fInstance); }
|
||||||
|
|
||||||
void StartLinkOutFX();
|
|
||||||
void StartLinkInFX();
|
|
||||||
|
|
||||||
bool MsgReceive(plMessage* msg);
|
bool MsgReceive(plMessage* msg);
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
int Init();
|
int Init();
|
||||||
|
@ -100,6 +100,7 @@ struct NlmOpWaitOp : NlmOp {
|
|||||||
|
|
||||||
struct NlmJoinAgeOp : NlmOp {
|
struct NlmJoinAgeOp : NlmOp {
|
||||||
NetCommAge age;
|
NetCommAge age;
|
||||||
|
bool muteSfx;
|
||||||
NlmJoinAgeOp ()
|
NlmJoinAgeOp ()
|
||||||
: NlmOp(kNlmOpJoinAgeOp)
|
: NlmOp(kNlmOpJoinAgeOp)
|
||||||
{ }
|
{ }
|
||||||
@ -107,6 +108,7 @@ struct NlmJoinAgeOp : NlmOp {
|
|||||||
|
|
||||||
struct NlmLeaveAgeOp : NlmOp {
|
struct NlmLeaveAgeOp : NlmOp {
|
||||||
bool quitting;
|
bool quitting;
|
||||||
|
bool muteSfx;
|
||||||
NlmLeaveAgeOp ()
|
NlmLeaveAgeOp ()
|
||||||
: NlmOp(kNlmOpLeaveAgeOp), quitting(false)
|
: NlmOp(kNlmOpLeaveAgeOp), quitting(false)
|
||||||
{ }
|
{ }
|
||||||
@ -237,6 +239,7 @@ void plNetLinkingMgr::ExecNextOp () {
|
|||||||
NCAgeJoinerCreate(
|
NCAgeJoinerCreate(
|
||||||
&s_ageJoiner,
|
&s_ageJoiner,
|
||||||
joinAgeOp->age,
|
joinAgeOp->age,
|
||||||
|
joinAgeOp->muteSfx,
|
||||||
NCAgeJoinerCallback,
|
NCAgeJoinerCallback,
|
||||||
waitOp
|
waitOp
|
||||||
);
|
);
|
||||||
@ -258,6 +261,7 @@ void plNetLinkingMgr::ExecNextOp () {
|
|||||||
NCAgeLeaverCreate(
|
NCAgeLeaverCreate(
|
||||||
&s_ageLeaver,
|
&s_ageLeaver,
|
||||||
leaveAgeOp->quitting,
|
leaveAgeOp->quitting,
|
||||||
|
leaveAgeOp->muteSfx,
|
||||||
NCAgeLeaverCallback,
|
NCAgeLeaverCallback,
|
||||||
waitOp
|
waitOp
|
||||||
);
|
);
|
||||||
@ -419,12 +423,14 @@ void plNetLinkingMgr::IDoLink(plLinkToAgeMsg* msg)
|
|||||||
}
|
}
|
||||||
// Queue leave op
|
// Queue leave op
|
||||||
NlmLeaveAgeOp * leaveAgeOp = new NlmLeaveAgeOp;
|
NlmLeaveAgeOp * leaveAgeOp = new NlmLeaveAgeOp;
|
||||||
|
leaveAgeOp->muteSfx = !msg->PlayLinkOutSfx();
|
||||||
QueueOp(leaveAgeOp);
|
QueueOp(leaveAgeOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Queue join op
|
// Queue join op
|
||||||
NlmJoinAgeOp * joinAgeOp = new NlmJoinAgeOp;
|
NlmJoinAgeOp * joinAgeOp = new NlmJoinAgeOp;
|
||||||
joinAgeOp->age.ageInstId = *GetAgeLink()->GetAgeInfo()->GetAgeInstanceGuid();
|
joinAgeOp->age.ageInstId = *GetAgeLink()->GetAgeInfo()->GetAgeInstanceGuid();
|
||||||
|
joinAgeOp->muteSfx = !msg->PlayLinkInSfx();
|
||||||
StrCopy(
|
StrCopy(
|
||||||
joinAgeOp->age.ageDatasetName,
|
joinAgeOp->age.ageDatasetName,
|
||||||
GetAgeLink()->GetAgeInfo()->GetAgeFilename(),
|
GetAgeLink()->GetAgeInfo()->GetAgeFilename(),
|
||||||
@ -541,12 +547,12 @@ bool plNetLinkingMgr::IProcessVaultNotifyMsg(plVaultNotifyMsg* msg)
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
bool plNetLinkingMgr::IDispatchMsg( plMessage * msg, uint32_t playerID )
|
bool plNetLinkingMgr::IDispatchMsg( plMessage* msg, 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 ( playerID!=kInvalidPlayerID && playerID!=nc->GetPlayerID() )
|
if ( playerID!=kInvalidPlayerID && playerID!=nc->GetPlayerID() )
|
||||||
{
|
{
|
||||||
msg->SetBCastFlag( plMessage::kNetAllowInterAge );
|
msg->SetBCastFlag( plMessage::kNetAllowInterAge );
|
||||||
@ -557,17 +563,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, bool linkInSfx, bool linkOutSfx, uint32_t playerID )
|
||||||
{
|
{
|
||||||
LinkToAge(link, nil, playerID);
|
LinkToAge(link, nil, linkInSfx, linkOutSfx, playerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, const char* linkAnim, uint32_t playerID )
|
void plNetLinkingMgr::LinkToAge( plAgeLinkStruct * link, const char* linkAnim, bool linkInSfx, bool linkOutSfx, uint32_t playerID )
|
||||||
{
|
{
|
||||||
if ( !fLinkingEnabled )
|
if ( !fLinkingEnabled )
|
||||||
{
|
{
|
||||||
@ -578,6 +584,7 @@ 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);
|
||||||
|
pMsg->PlayLinkSfx(linkInSfx, linkOutSfx);
|
||||||
IDispatchMsg( pMsg, playerID );
|
IDispatchMsg( pMsg, playerID );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +110,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, uint32_t playerID );
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -125,26 +125,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, bool linkInSfx=true, bool linkOutSfx=true, uint32_t playerID=kInvalidPlayerID );
|
||||||
void LinkToAge( plAgeLinkStruct * link, const char* linkAnim, uint32_t playerID=kInvalidPlayerID );
|
void LinkToAge( plAgeLinkStruct * link, const char* linkAnim, bool linkInSfx=true, bool linkOutSfx=true, uint32_t playerID=kInvalidPlayerID );
|
||||||
|
|
||||||
// Link to my last age.
|
// Link to my last age.
|
||||||
void LinkToPrevAge( uint32_t playerID=kInvalidPlayerID );
|
void LinkToPrevAge( uint32_t playerID=kInvalidPlayerID );
|
||||||
|
|
||||||
// Link to my Personal Age
|
// Link to my Personal Age
|
||||||
void LinkToMyPersonalAge( uint32_t playerID=kInvalidPlayerID );
|
void LinkToMyPersonalAge( uint32_t playerID=kInvalidPlayerID );
|
||||||
|
|
||||||
// Link to my Neighborhood Age
|
// Link to my Neighborhood Age
|
||||||
void LinkToMyNeighborhoodAge( uint32_t playerID=kInvalidPlayerID );
|
void LinkToMyNeighborhoodAge( uint32_t playerID=kInvalidPlayerID );
|
||||||
|
|
||||||
// Link a player here.
|
// Link a player here.
|
||||||
void LinkPlayerHere( uint32_t playerID );
|
void LinkPlayerHere( uint32_t playerID );
|
||||||
|
|
||||||
// Link player to specified age
|
// Link player to specified age
|
||||||
void LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID );
|
void LinkPlayerToAge( plAgeLinkStruct * link, uint32_t playerID );
|
||||||
|
|
||||||
// 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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user