1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-17 02:51:27 +00:00

Mute the linking sound on client kicks

This commit is really quite awesome in that you can now propagate any
plLinkToAgeMsg that will mute the link out, link in sounds, or both. Some
garbage fields were repurposed for this functionality. The messages were
passed correctly on Cyan's MOULa server.

Conflicts:

	Sources/Plasma/PubUtilLib/plMessage/plLinkToAgeMsg.h
	Sources/Plasma/PubUtilLib/plNetClient/plLinkEffectsMgr.cpp
	Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h
	Sources/Plasma/PubUtilLib/plNetClient/plNetLinkingMgr.cpp
This commit is contained in:
2012-06-12 17:50:45 -04:00
parent 33d26ce29f
commit af1db55f67
10 changed files with 109 additions and 82 deletions

View File

@ -365,6 +365,7 @@ bool plLinkEffectsMgr::MsgReceive(plMessage *msg)
BCMsg->fLinkKey = linkKey;
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kLeavingAge, pTriggerMsg->IsLeavingAge());
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.
// '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)
{
BCMsg->SetLinkFlag(plLinkEffectBCMsg::kMute);
}
}
}
}

View File

@ -50,6 +50,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "plNetCliAgeJoiner.h"
#include "plNetClientMgr.h"
#include "plNetLinkingMgr.h"
#include "plNetObjectDebugger.h"
#include "pnSceneObject/plSceneObject.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 "plAgeLoader/plAgeLoader.h"
#include "plAvatar/plArmatureMod.h"
#include "plAvatar/plAvatarMgr.h"
#include "plVault/plVault.h"
@ -100,11 +102,13 @@ struct plNCAgeJoiner {
FNCAgeJoinerCallback callback;
void * userState;
bool complete;
bool muteLinkSfx;
plOperationProgress* progressBar;
plNCAgeJoiner (
const NetCommAge & age,
bool muteSfx,
FNCAgeJoinerCallback callback,
void * userState
);
@ -157,10 +161,12 @@ void AgeVaultDownloadCallback (
//============================================================================
plNCAgeJoiner::plNCAgeJoiner (
const NetCommAge & age,
bool muteSfx,
FNCAgeJoinerCallback callback,
void * userState
) : nextOp(kNoOp)
, age(age)
, muteLinkSfx(muteSfx)
, callback(callback)
, userState(userState)
, complete(false)
@ -354,7 +360,7 @@ void plNCAgeJoiner::ExecNextOp () {
nc->SetFlagsBit(plNetClientApp::kPlayingGame);
nc->SetFlagsBit(plNetClientApp::kNeedToSendInitialAgeStateLoadedMsg);
plAgeLoader::GetInstance()->NotifyAgeLoaded(true);
Complete(true, "Age joined");
nextOp = kNoOp;
}
break;
@ -448,6 +454,36 @@ bool plNCAgeJoiner::MsgReceive (plMessage * msg) {
nextOp = kDestroyProgressBar;
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;
}
@ -469,6 +505,7 @@ void plNCAgeJoiner::Update () {
void NCAgeJoinerCreate (
plNCAgeJoiner ** pjoiner,
const NetCommAge & age,
bool muteSfx,
FNCAgeJoinerCallback callback,
void * userState
) {
@ -478,6 +515,7 @@ void NCAgeJoinerCreate (
plNCAgeJoiner * joiner;
*pjoiner = joiner = new plNCAgeJoiner(
age,
muteSfx,
callback,
userState
);

View File

@ -85,6 +85,7 @@ typedef void (* FNCAgeJoinerCallback)(
void NCAgeJoinerCreate (
plNCAgeJoiner ** joiner,
const NetCommAge & age,
bool muteSfx,
FNCAgeJoinerCallback callback,
void * userState
);

View File

@ -81,12 +81,14 @@ struct plNCAgeLeaver {
NextOp nextOp;
bool quitting;
bool muteLinkSfx;
bool complete;
FNCAgeLeaverCallback callback;
void * userState;
plNCAgeLeaver (
bool quitting,
bool muteSfx,
FNCAgeLeaverCallback callback,
void * userState
);
@ -109,10 +111,12 @@ struct plNCAgeLeaver {
//============================================================================
plNCAgeLeaver::plNCAgeLeaver (
bool quitting,
bool muteSfx,
FNCAgeLeaverCallback callback,
void * userState
) : nextOp(kNoOp)
, quitting(quitting)
, muteLinkSfx(muteSfx)
, complete(false)
, callback(callback)
, userState(userState)
@ -200,7 +204,13 @@ void plNCAgeLeaver::ExecNextOp () {
//====================================================================
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;
@ -264,6 +274,7 @@ void plNCAgeLeaver::Update () {
void NCAgeLeaverCreate (
plNCAgeLeaver ** pleaver,
bool quitting,
bool muteSfx,
FNCAgeLeaverCallback callback,
void * userState
) {
@ -273,6 +284,7 @@ void NCAgeLeaverCreate (
plNCAgeLeaver * leaver;
*pleaver = leaver = new plNCAgeLeaver(
quitting,
muteSfx,
callback,
userState
);

View File

@ -85,6 +85,7 @@ typedef void (* FNCAgeLeaverCallback)(
void NCAgeLeaverCreate (
plNCAgeLeaver ** leaver,
bool quitting,
bool muteSfx,
FNCAgeLeaverCallback callback,
void * userState
);

View File

@ -437,55 +437,6 @@ void plNetClientMgr::IUnloadNPCs()
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
//
@ -1056,20 +1007,6 @@ bool plNetClientMgr::MsgReceive( plMessage* msg )
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);
if (voxList)
{

View File

@ -249,9 +249,6 @@ public:
static plNetClientMgr* GetInstance() { return plNetClientMgr::ConvertNoRef(fInstance); }
void StartLinkOutFX();
void StartLinkInFX();
bool MsgReceive(plMessage* msg);
void Shutdown();
int Init();

View File

@ -100,6 +100,7 @@ struct NlmOpWaitOp : NlmOp {
struct NlmJoinAgeOp : NlmOp {
NetCommAge age;
bool muteSfx;
NlmJoinAgeOp ()
: NlmOp(kNlmOpJoinAgeOp)
{ }
@ -107,6 +108,7 @@ struct NlmJoinAgeOp : NlmOp {
struct NlmLeaveAgeOp : NlmOp {
bool quitting;
bool muteSfx;
NlmLeaveAgeOp ()
: NlmOp(kNlmOpLeaveAgeOp), quitting(false)
{ }
@ -237,6 +239,7 @@ void plNetLinkingMgr::ExecNextOp () {
NCAgeJoinerCreate(
&s_ageJoiner,
joinAgeOp->age,
joinAgeOp->muteSfx,
NCAgeJoinerCallback,
waitOp
);
@ -258,6 +261,7 @@ void plNetLinkingMgr::ExecNextOp () {
NCAgeLeaverCreate(
&s_ageLeaver,
leaveAgeOp->quitting,
leaveAgeOp->muteSfx,
NCAgeLeaverCallback,
waitOp
);
@ -419,12 +423,14 @@ void plNetLinkingMgr::IDoLink(plLinkToAgeMsg* msg)
}
// Queue leave op
NlmLeaveAgeOp * leaveAgeOp = new NlmLeaveAgeOp;
leaveAgeOp->muteSfx = !msg->PlayLinkOutSfx();
QueueOp(leaveAgeOp);
}
// Queue join op
NlmJoinAgeOp * joinAgeOp = new NlmJoinAgeOp;
joinAgeOp->age.ageInstId = *GetAgeLink()->GetAgeInfo()->GetAgeInstanceGuid();
joinAgeOp->muteSfx = !msg->PlayLinkInSfx();
StrCopy(
joinAgeOp->age.ageDatasetName,
GetAgeLink()->GetAgeInfo()->GetAgeFilename(),