/*==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