CSCommon: MQuestDropTable.h 소스 파일

MAIET

MQuestDropTable.h

00001 #ifndef _MQUESTDROPTABLE_H
00002 #define _MQUESTDROPTABLE_H
00003 
00004 #include "MQuestConst.h"
00005 
00007 enum MQuestDropItemType
00008 {
00009     QDIT_NA         = 0,    
00010     QDIT_WORLDITEM  = 1,    
00011     QDIT_QUESTITEM          
00012 };
00013 
00015 struct MQuestDropItem
00016 {
00017     MQuestDropItemType  nDropItemType;
00018     int                 nID;
00019 
00020     MQuestDropItem() : nDropItemType(QDIT_NA), nID(0) { }
00021 };
00022 
00023 #define MAX_DROPTABLE_PERCENT       100     
00024 
00025 
00026 class MQuestDropSet
00027 {
00028 private:
00029     int                     m_nID;
00030     char                    m_szName[16];
00031     MQuestDropItem          m_DropItemSet[MAX_QL+1][MAX_DROPTABLE_PERCENT];
00032     int                     m_nTop[MAX_QL+1];
00033     set<int>                m_QuestItems;           // 이 세트가 가지고 있는 퀘스트 아이템 세트 - 클라이언트가 사용하려고 만듦
00034 public:
00036     MQuestDropSet()
00037     {
00038         m_nID = 0;
00039         m_szName[0] = 0;
00040         memset(m_DropItemSet, 0, sizeof(m_DropItemSet));
00041         for (int i = 0; i <= MAX_QL; i++)
00042         {
00043             m_nTop[i] = 0;
00044         }
00045     }
00046     int GetID() { return m_nID; }                                   
00047     const char* GetName() { return m_szName; }                      
00048     void SetID(int nID) { m_nID = nID; }                            
00049     void SetName(const char* szName) { strcpy(m_szName, szName); }  
00050 
00051 
00052 
00053 
00054     void AddItem(MQuestDropItem* pItem, int nQL, int nRatePercent);
00058     bool Roll(MQuestDropItem& outDropItem, int nQL);
00059 
00060     set<int>& GetQuestItems() { return m_QuestItems; }              
00061 };
00062 
00063 
00065 class MQuestDropTable : public map<int, MQuestDropSet*>
00066 {
00067 private:
00068     void ParseDropSet(MXmlElement& element);
00069     void ParseDropItemID(MQuestDropItem* pItem, const char* szAttrValue);
00070     void Clear();
00071 public:
00072     MQuestDropTable();                                                  
00073     ~MQuestDropTable();                                                 
00074 
00075     bool ReadXml(const char* szFileName);                               
00076     bool ReadXml(MZFileSystem* pFileSystem,const char* szFileName);     
00077 
00078 
00079 
00080 
00081     bool Roll(MQuestDropItem& outDropItem, int nDropTableID, int nQL);
00082     MQuestDropSet* Find(int nDropTableID);                              
00083 };
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 #endif


MAIET entertainment