#ifndef GAME_OPTION_ACCESSOR_H_ #define GAME_OPTION_ACCESSOR_H_ #if _MSC_VER > 1000 #pragma once #endif #ifdef _NA_0_20110329_GAMEOPTION_SETTING #include //=============================================================================================== // // class GameOptionAccessor // //=============================================================================================== struct GameOptionEx : public GameOption { enum { data_none = 0, data_loaded = (1 << 0), data_wait = (1 << 1), }; uint user_guid; uint character_guid; uint accessor_guid; uint state; }; // NOTE: f110609.9L, we need to look to ways of improving about interface usage // for example, struct IGameOptionAccessor { virtual void init_gameoptionex(...) = 0; }; // class GameOptionAccessor : public IGameOptionAccessor // class AutoHuntingAccessor : public IGameOptionAccessor // and... it's possible that use composition object also. // //=============================================================================================== // // class GameOptionAccessor // //=============================================================================================== class GameOptionAccessor { public: GameOptionAccessor(); virtual ~GameOptionAccessor(); static void Initialize(); static void Release(); GameOptionEx* Find(User* user); GameOptionEx* Create(User* user); void Delete(User* user); protected: virtual uint get_accessor_key(User* user) const = 0; virtual void init_gameoptionex(User* user, GameOptionEx* OUT gameoptionex) const = 0; private: typedef util::CMemoryPoolFactory GameOptionExPool; static GameOptionExPool gameoptionex_pool_; STLX_HASH_MAP hash_map_; }; //=============================================================================================== // // class // //=============================================================================================== class AutoHuntingAccessor : public GameOptionAccessor { public: AutoHuntingAccessor(); virtual ~AutoHuntingAccessor(); protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT gameoptionex) const; }; class KeyCustomizingAccessor : public GameOptionAccessor { public: KeyCustomizingAccessor(); virtual ~KeyCustomizingAccessor(); protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT gameoptionex) const; }; // °èÁ¤ ´ÜÀ§ »ç¿ëÀÚ °¡À̵å class GuidePerUserAccessor : public GameOptionAccessor { public: GuidePerUserAccessor() {} virtual ~GuidePerUserAccessor() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; // ij¸¯ÅÍ ´ÜÀ§ »ç¿ëÀÚ °¡À̵å class GuidePerCharAccessor : public GameOptionAccessor { public: GuidePerCharAccessor() {} virtual ~GuidePerCharAccessor() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; // ij¸¯ÅÍ ´ÜÀ§ ¾Ë¸²Ã¢ class NoticePerCharAccessor : public GameOptionAccessor { public: NoticePerCharAccessor() {} virtual ~NoticePerCharAccessor() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; // ij¸¯ÅÍ ´ÜÀ§ ´ÜÃàŰ¼¼ÆÃ class CharacterKeyCustomizing : public GameOptionAccessor { public: CharacterKeyCustomizing() {} virtual ~CharacterKeyCustomizing() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; // ¸¶Áö¸·À¸·Î ¼±ÅÃÇß´ø ij¸¯ÅÍ class LastSelectedCharAccessor : public GameOptionAccessor { public: LastSelectedCharAccessor() {} virtual ~LastSelectedCharAccessor() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; #ifdef _NA_007019_20140107_PERK_CHANGE_SYSTEM class PerkListAccessor : public GameOptionAccessor { public: PerkListAccessor() {} virtual ~PerkListAccessor() {} protected: virtual uint get_accessor_key(User* user) const; virtual void init_gameoptionex(User* user, GameOptionEx* OUT option) const; }; #endif // _NA_007019_20140107_PERK_CHANGE_SYSTEM #endif // _NA_0_20110329_GAMEOPTION_SETTING #endif // GAME_OPTION_ACCESSOR_H_