/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
//////////////////////////////////////////////////////////////////////////////
//
// plResManagerHelper - The wonderful helper class that can receive messages
// for the resManager.
//
//// History /////////////////////////////////////////////////////////////////
//
// 6.7.2002 mcn - Created
//
//////////////////////////////////////////////////////////////////////////////
#ifndef _plResManagerHelper_h
#define _plResManagerHelper_h
#include "hsTypes.h"
#include "hsTemplates.h"
#include "plRegistryHelpers.h"
#include "pnKeyedObject/hsKeyedObject.h"
// Defined as a project setting so we can do this right
//#define MCN_RESMGR_DEBUGGING
//// Class Definition ////////////////////////////////////////////////////////
#ifdef MCN_RESMGR_DEBUGGING
class plStatusLog;
class plDebugPrintIterator;
class plResMgrDebugInterface;
#endif
class plResManager;
class plRegistryPageNode;
class plResManagerHelper : public hsKeyedObject
{
protected:
plResManager *fResManager;
static plResManagerHelper *fInstance;
hsBool fInShutdown;
#ifdef MCN_RESMGR_DEBUGGING
friend class plDebugPrintIterator;
friend class plResMgrDebugInterface;
plStatusLog *fDebugScreen;
hsBool fRefreshing, fCurrAgeExpanded;
int fCurrAge;
int fDebugDisplayType;
enum DebugDisplayTypes
{
kSizes = 0,
kPercents,
kBars,
kMaxDisplayType
};
plResMgrDebugInterface *fDebugInput;
#endif
void IUpdateDebugScreen( hsBool force = false );
public:
plResManagerHelper( plResManager *resMgr );
virtual ~plResManagerHelper();
CLASSNAME_REGISTER( plResManagerHelper );
GETINTERFACE_ANY( plResManagerHelper, hsKeyedObject );
virtual hsBool MsgReceive( plMessage *msg );
virtual void Read( hsStream *s, hsResMgr *mgr );
virtual void Write( hsStream *s, hsResMgr *mgr );
void Init( void );
void Shutdown( void );
void LoadAndHoldPageKeys( plRegistryPageNode *page );
void EnableDebugScreen( hsBool enable );
// Please let the res manager handle telling this.
void SetInShutdown(hsBool b) { fInShutdown = b; }
hsBool GetInShutdown() const { return fInShutdown; }
static plResManagerHelper *GetInstance( void ) { return fInstance; }
};
//// Reffer Class ////////////////////////////////////////////////////////////
class plResPageKeyRefList : public plKeyCollector
{
protected:
hsTArray fKeyList;
public:
plResPageKeyRefList() : plKeyCollector( fKeyList ) {}
virtual ~plResPageKeyRefList() { fKeyList.Reset(); }
};
#endif // _plResManagerHelper_h