//============================================================================ bool plNCAgeJoiner::MsgReceive (plMessage * msg) { plNetClientMgr * nc = plNetClientMgr::GetInstance(); plAvatarMgr * am = plAvatarMgr::GetInstance(); plAgeLoader * al = plAgeLoader::GetInstance(); //======================================================================== // Finished updating the age from FileSrv //======================================================================== if (plResPatcherMsg * resMsg = plResPatcherMsg::ConvertNoRef(msg)) { if (resMsg->Success()) { nc->ResetServerTimeOffset(); NetCommLinkToAge( age, this ); LogMsg(kLogPerf, L"AgeJoiner: Next:kNoOp (age updated)"); } else Complete(false, resMsg->GetError()); return true; } //======================================================================== // Connected to age instance //======================================================================== if (plNetCommLinkToAgeMsg * linkToAgeMsg = plNetCommLinkToAgeMsg::ConvertNoRef(msg)) { if (IS_NET_ERROR(linkToAgeMsg->result)) { Complete(false, "LinkToAge failed"); } else if (unsigned ageVaultId = NetCommGetAge()->ageVaultId) { // Download the age vault VaultDownload( L"AgeJoin", ageVaultId, AgeVaultDownloadCallback, this, nil, // FVaultDownloadProgressCallback this ); } else { // not vault to downloaded, just start loading age data LogMsg(kLogPerf, L"AgeJoiner: Next:kLoadAge (no vault)"); nextOp = kLoadAge; } return true; } //======================================================================== // All age data paged in //======================================================================== if (plAgeLoaded2Msg * ageLoaded2Msg = plAgeLoaded2Msg::ConvertNoRef(msg)) { // Exec custom age settings al->ExecPendingAgeFniFiles(); al->ExecPendingAgeCsvFiles(); LogMsg(kLogPerf, L"AgeJoiner: Next:kLoadPlayer"); nextOp = kLoadPlayer; return true; } //======================================================================== // Local avatar loaded //======================================================================== plPlayerPageMsg * playerPageMsg = plPlayerPageMsg::ConvertNoRef(msg); if (playerPageMsg && !playerPageMsg->fUnload && playerPageMsg->fPlayer && playerPageMsg->fLocallyOriginated) { if (NetCommNeedToLoadAvatar()) NetCommSetAvatarLoaded(); LogMsg(kLogPerf, L"AgeJoiner: Next:kPropagatePlayer"); nextOp = kPropagatePlayer; return false; // NetClientMgr must also handle this message } //======================================================================== // Received all SDL states //======================================================================== plNetClientMgrMsg * netClientMgrMsg = plNetClientMgrMsg::ConvertNoRef(msg); if (netClientMgrMsg && netClientMgrMsg->type == plNetClientMgrMsg::kNotifyRcvdAllSDLStates) { LogMsg(kLogPerf, L"AgeJoiner: Next:kEnableClickables"); 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; }
//============================================================================ bool plNCAgeJoiner::MsgReceive (plMessage * msg) { plNetClientMgr * nc = plNetClientMgr::GetInstance(); plAvatarMgr * am = plAvatarMgr::GetInstance(); plAgeLoader * al = plAgeLoader::GetInstance(); //======================================================================== // Finished updating the age from FileSrv //======================================================================== if (plResPatcherMsg * resMsg = plResPatcherMsg::ConvertNoRef(msg)) { if (resMsg->Success()) { nc->ResetServerTimeOffset(); NetCommLinkToAge( age, this ); LogMsg(kLogPerf, L"AgeJoiner: Next:kNoOp (age updated)"); } else Complete(false, resMsg->GetError()); return true; } //======================================================================== // Connected to age instance //======================================================================== if (plNetCommLinkToAgeMsg * linkToAgeMsg = plNetCommLinkToAgeMsg::ConvertNoRef(msg)) { if (IS_NET_ERROR(linkToAgeMsg->result)) { Complete(false, "LinkToAge failed"); } else if (unsigned ageVaultId = NetCommGetAge()->ageVaultId) { // Download the age vault VaultDownload( L"AgeJoin", ageVaultId, AgeVaultDownloadCallback, this, nil, // FVaultDownloadProgressCallback this ); } else { // not vault to downloaded, just start loading age data LogMsg(kLogPerf, L"AgeJoiner: Next:kLoadAge (no vault)"); nextOp = kLoadAge; } return true; } //======================================================================== // All age data paged in //======================================================================== if (plAgeLoaded2Msg * ageLoaded2Msg = plAgeLoaded2Msg::ConvertNoRef(msg)) { // Exec custom age settings al->ExecPendingAgeFniFiles(); al->ExecPendingAgeCsvFiles(); LogMsg(kLogPerf, L"AgeJoiner: Next:kLoadPlayer"); nextOp = kLoadPlayer; return true; } //======================================================================== // Local avatar loaded //======================================================================== plPlayerPageMsg * playerPageMsg = plPlayerPageMsg::ConvertNoRef(msg); if (playerPageMsg && !playerPageMsg->fUnload && playerPageMsg->fPlayer && playerPageMsg->fLocallyOriginated) { if (NetCommNeedToLoadAvatar()) NetCommSetAvatarLoaded(); LogMsg(kLogPerf, L"AgeJoiner: Next:kPropagatePlayer"); nextOp = kPropagatePlayer; return false; // NetClientMgr must also handle this message } //======================================================================== // Received all SDL states //======================================================================== plNetClientMgrMsg * netClientMgrMsg = plNetClientMgrMsg::ConvertNoRef(msg); if (netClientMgrMsg && netClientMgrMsg->type == plNetClientMgrMsg::kNotifyRcvdAllSDLStates) { LogMsg(kLogPerf, L"AgeJoiner: Next:kEnableClickables"); nextOp = kDestroyProgressBar; return true; } return false; }