|
|
@ -187,7 +187,6 @@ plClient::plClient() |
|
|
|
fLinkEffectsMgr(nil), |
|
|
|
fLinkEffectsMgr(nil), |
|
|
|
fProgressBar(nil), |
|
|
|
fProgressBar(nil), |
|
|
|
fGameGUIMgr(nil), |
|
|
|
fGameGUIMgr(nil), |
|
|
|
fKIGUIGlue(nil), |
|
|
|
|
|
|
|
fWindowActive(false), |
|
|
|
fWindowActive(false), |
|
|
|
fAnimDebugList(nil), |
|
|
|
fAnimDebugList(nil), |
|
|
|
fClampCap(-1), |
|
|
|
fClampCap(-1), |
|
|
@ -252,6 +251,15 @@ plClient::~plClient() |
|
|
|
#include "plGImage/plAVIWriter.h" |
|
|
|
#include "plGImage/plAVIWriter.h" |
|
|
|
#include "pfCharacter/pfMarkerMgr.h" |
|
|
|
#include "pfCharacter/pfMarkerMgr.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename T> |
|
|
|
|
|
|
|
static void IUnRegisterAs(T*& ko, plFixedKeyId id) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (ko) { |
|
|
|
|
|
|
|
ko->UnRegisterAs(id); |
|
|
|
|
|
|
|
ko = nullptr; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool plClient::Shutdown() |
|
|
|
bool plClient::Shutdown() |
|
|
|
{ |
|
|
|
{ |
|
|
|
plSynchEnabler ps(false); // disable dirty state tracking during shutdown
|
|
|
|
plSynchEnabler ps(false); // disable dirty state tracking during shutdown
|
|
|
@ -297,31 +305,13 @@ bool plClient::Shutdown() |
|
|
|
// Take down our GUI control generator
|
|
|
|
// Take down our GUI control generator
|
|
|
|
pfGUICtrlGenerator::Instance().Shutdown(); |
|
|
|
pfGUICtrlGenerator::Instance().Shutdown(); |
|
|
|
|
|
|
|
|
|
|
|
if (plNetClientMgr::GetInstance()) |
|
|
|
if (plNetClientMgr* nc = plNetClientMgr::GetInstance()) |
|
|
|
{
|
|
|
|
nc->Shutdown(); |
|
|
|
plNetClientMgr::GetInstance()->Shutdown(); |
|
|
|
if (plAgeLoader* al = plAgeLoader::GetInstance()) |
|
|
|
plNetClientMgr::GetInstance()->UnRegisterAs(kNetClientMgr_KEY); // deletes NetClientMgr instance
|
|
|
|
al->Shutdown(); |
|
|
|
plNetClientMgr::SetInstance(nil); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (plAgeLoader::GetInstance()) |
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
plAgeLoader::GetInstance()->Shutdown(); |
|
|
|
|
|
|
|
plAgeLoader::GetInstance()->UnRegisterAs(kAgeLoader_KEY); // deletes instance
|
|
|
|
|
|
|
|
plAgeLoader::SetInstance(nil); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (fInputManager) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fInputManager->UnRegisterAs(kInput_KEY); |
|
|
|
|
|
|
|
fInputManager = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( fGameGUIMgr != nil ) |
|
|
|
IUnRegisterAs(fInputManager, kInput_KEY); |
|
|
|
{ |
|
|
|
IUnRegisterAs(fGameGUIMgr, kGameGUIMgr_KEY); |
|
|
|
fGameGUIMgr->UnRegisterAs( kGameGUIMgr_KEY ); |
|
|
|
|
|
|
|
fGameGUIMgr = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < fRooms.Count(); i++) |
|
|
|
for (int i = 0; i < fRooms.Count(); i++) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -346,52 +336,26 @@ bool plClient::Shutdown() |
|
|
|
if (fPageMgr) |
|
|
|
if (fPageMgr) |
|
|
|
fPageMgr->Reset(); |
|
|
|
fPageMgr->Reset(); |
|
|
|
|
|
|
|
|
|
|
|
if( fKIGUIGlue != nil ) |
|
|
|
IUnRegisterAs(fTransitionMgr, kTransitionMgr_KEY); |
|
|
|
{ |
|
|
|
|
|
|
|
fKIGUIGlue->UnRegisterAs( kKIGUIGlue_KEY ); |
|
|
|
|
|
|
|
fKIGUIGlue = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( fTransitionMgr != nil ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fTransitionMgr->UnRegisterAs( kTransitionMgr_KEY ); |
|
|
|
|
|
|
|
fTransitionMgr = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
delete fConsoleEngine; |
|
|
|
delete fConsoleEngine; |
|
|
|
fConsoleEngine = nil; |
|
|
|
fConsoleEngine = nil; |
|
|
|
|
|
|
|
|
|
|
|
if (fLinkEffectsMgr) |
|
|
|
IUnRegisterAs(fLinkEffectsMgr, kLinkEffectsMgr_KEY); |
|
|
|
{ |
|
|
|
|
|
|
|
fLinkEffectsMgr->UnRegisterAs( kLinkEffectsMgr_KEY); |
|
|
|
|
|
|
|
fLinkEffectsMgr=nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
plClothingMgr::DeInit(); |
|
|
|
plClothingMgr::DeInit(); |
|
|
|
|
|
|
|
|
|
|
|
if( fFontCache != nil ) |
|
|
|
IUnRegisterAs(fFontCache, kFontCache_KEY); |
|
|
|
{ |
|
|
|
|
|
|
|
fFontCache->UnRegisterAs( kFontCache_KEY ); |
|
|
|
|
|
|
|
fFontCache = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pfMarkerMgr::Shutdown(); |
|
|
|
pfMarkerMgr::Shutdown(); |
|
|
|
|
|
|
|
|
|
|
|
delete fAnimDebugList; |
|
|
|
delete fAnimDebugList; |
|
|
|
|
|
|
|
|
|
|
|
//#ifndef PLASMA_EXTERNAL_RELEASE
|
|
|
|
IUnRegisterAs(fConsole, kConsoleObject_KEY); |
|
|
|
if( fConsole != nil ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// UnRegisterAs destroys the object for us
|
|
|
|
|
|
|
|
fConsole->UnRegisterAs( kConsoleObject_KEY ); |
|
|
|
|
|
|
|
fConsole = nil; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PythonInterface::finiPython(); |
|
|
|
PythonInterface::finiPython(); |
|
|
|
|
|
|
|
|
|
|
|
if (fNewCamera) |
|
|
|
IUnRegisterAs(fNewCamera, kVirtualCamera1_KEY); |
|
|
|
fNewCamera->UnRegisterAs( kVirtualCamera1_KEY ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// mark the listener for death.
|
|
|
|
// mark the listener for death.
|
|
|
|
// there's no need to keep this around...
|
|
|
|
// there's no need to keep this around...
|
|
|
@ -424,7 +388,6 @@ bool plClient::Shutdown() |
|
|
|
// This will destruct the client. Do it last.
|
|
|
|
// This will destruct the client. Do it last.
|
|
|
|
UnRegisterAs(kClient_KEY); |
|
|
|
UnRegisterAs(kClient_KEY); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1393,73 +1356,6 @@ extern bool gDataServerLocal; |
|
|
|
#include "plQuality.h" |
|
|
|
#include "plQuality.h" |
|
|
|
#include "plLoadMask.h" |
|
|
|
#include "plLoadMask.h" |
|
|
|
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
|
|
class LoginNetClientCommCallback : public plNetClientComm::Callback |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
public: |
|
|
|
|
|
|
|
enum Op {kAuth, kCreatePlayer, kGetPlayerList, kLeave, kDeletePlayer}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LoginNetClientCommCallback() : plNetClientComm::Callback(), fNumCurrentOps(0) |
|
|
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual void OperationStarted( uint32_t context ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fNumCurrentOps++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
virtual void OperationComplete( uint32_t context, int resultCode ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (context == kAuth) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (hsSucceeded(resultCode)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
plClient::GetInstance()->fAuthPassed = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (context == kGetPlayerList) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ( hsSucceeded( resultCode ) ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
uint32_t numPlayers = fCbArgs.GetInt(0); |
|
|
|
|
|
|
|
uint32_t pId = -1; |
|
|
|
|
|
|
|
std::string pName; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (uint32_t i = 0; i < numPlayers; i++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pId = fCbArgs.GetInt((uint16_t)(i*3+1)); |
|
|
|
|
|
|
|
pName = fCbArgs.GetString((uint16_t)(i*3+2)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pName == plClient::GetInstance()->fUsername) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
plClient::GetInstance()->fPlayerID = pId; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (context == kCreatePlayer) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (hsSucceeded(resultCode)) |
|
|
|
|
|
|
|
plClient::GetInstance()->fPlayerID = fCbArgs.GetInt(0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (context == kDeletePlayer) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (hsSucceeded(resultCode)) |
|
|
|
|
|
|
|
plClient::GetInstance()->fPlayerID = -1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fNumCurrentOps--; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool IsActive() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return fNumCurrentOps > 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
|
|
int fNumCurrentOps; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//============================================================================
|
|
|
|
//============================================================================
|
|
|
|
bool plClient::StartInit() |
|
|
|
bool plClient::StartInit() |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1816,11 +1712,6 @@ bool plClient::IUpdate() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool plClient::IDrawProgress() { |
|
|
|
bool plClient::IDrawProgress() { |
|
|
|
// HACK: Don't draw while we're caching some room loads, otherwise the
|
|
|
|
|
|
|
|
// progress bar will jump around while we're calculating the size
|
|
|
|
|
|
|
|
if (fHoldLoadRequests) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Reset our stats
|
|
|
|
// Reset our stats
|
|
|
|
plProfileManager::Instance().BeginFrame(); |
|
|
|
plProfileManager::Instance().BeginFrame(); |
|
|
|
|
|
|
|
|
|
|
|