#ifndef __ACHIEVEMENT_ACHIEVEMENT_H #define __ACHIEVEMENT_ACHIEVEMENT_H #pragma once #include "AchievementPart.h" #if !defined(_SERVER) //_SCJ_ACSYSTEM_OVERLAP_PARENT class AchievementInfo; #endif //!defined(_SERVER) class Achievement { public: typedef STLX_HASH_MAP ACHIEVEMENT_PART_MAP; typedef ACHIEVEMENT_PART_MAP::iterator ACHIEVEMENT_PART_ITER; typedef std::pair ACHIEVEMENT_PART_RESULT; // Achievement(void); ~Achievement(void); inline ACHIEVEMENT_PART_ITER Begin() { return achievement_part_.begin(); } inline ACHIEVEMENT_PART_ITER End() { return achievement_part_.end(); } void Init(AchievementNotify* notify = NULL); //ÃʱâÈ­ bool InitAchievementPart(WORD location_code); //ÀÔ·ÂµÈ Áö¿ªÀÇ ¸ðµç °ªÀ» ÃʱâÈ­ ÇÑ´Ù. void Serialize( Character_Achievements& achievement_info, ACHIEVEMENT_SERIALIZE eType); //µ¥ÀÌŸ Á÷·ÄÈ­ bool SetAchievementValue(WORD location_code, WORD index_number, BYTE object_index, WORD object_value, ACHIEVEMENT_VALUE_CHANGE_TYPE type); bool SetAchievementValue(Achievement_ParserInfo* achievement_parser_info, BYTE index, WORD value, ACHIEVEMENT_VALUE_CHANGE_TYPE type); //¾÷Àû °ªÀ» º¯°æÇÑ´Ù. WORD AddAccomplishmentRation(WORD location_code, WORD accomplishment_ration); //´Þ¼º·üÀ» Áõ°¡ ½ÃŲ´Ù. bool RewardAchievement(WORD index_number, WORD location_code,bool is_reward); //º¸»ó »óŸ¦ º¯°æÇÑ´Ù. bool Force_RewardAchievement(WORD index_number, WORD location_code,bool is_reward); //º¸»ó ·ÎÁ÷ ºñ±³¾øÀÌ °­Á¦·Î »óŸ¦ º¯°æÇÑ´Ù.(¸¶À̱׷¹À̼ǿ¡ ÇÊ¿ä) bool IsAccomplishment(WORD location_code, WORD index_number); bool IsAccomplishment(Achievement_ParserInfo* achievement_parser_info); //ÇØ´ç ¾÷ÀûÀÌ ´Þ¼ºµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù. //_NA_001990_ACSYSTEM_ADD bool IsAccomplishmentByIndex(WORD index); //À妽º°ªÀ¸·Î ¾÷ÀûÀÌ ¿Ï·áµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù. void InitAccomplishmentRatio(); //¾÷Àû·üÀ» ÃʱâÈ­ ÇÑ´Ù. void AccomplishAchievement(); //´Þ¼º·üÀÌ º¸»óÀÎ ¾÷ÀûÀº ¸ðµÎ º¸»ó ¹Þ±â»óÅ·Π¸¸µç´Ù.(¸¶À̱׷¹À̼ǿ¡ ÇÊ¿ä) #ifdef _SERVER bool CanCollectTreasureBox(WORD location_code); //ÇØ´ç Áö¿ªÀÇ º¸¹° »óÀÚ¸¦ Ç¥½ÃÇØ¾ß ÇÒÁö °áÁ¤ÇÑ´Ù. #endif AchievementPart* GetAchievementPart(WORD location_code); //ÀÔ·ÂµÈ Áö¿ªÀÇ ¾÷Àû ¸Ê À» ±¸ÇÑ´Ù. #if !defined(_SERVER) //_SCJ_ACSYSTEM_OVERLAP_PARENT AchievementInfo* FindAchievementToIndex(WORD index_number); //À妽º·Î AchievementInfo¸¦ ¾ò´Â´Ù. #endif //!defined(_SERVER) private: // CHANGES: f110526.5L, changes to shared pool each AchievementInfo static AchievementPart* AllocPart(); static BOOL FreePart(AchievementPart* delete_pointer); #ifdef _SERVER void AddTreasureConditionInfo(); //º¸¹° »óÀÚ Ã¤Áý º¸À̱⿡ ´ëÇÑ Á¶°Ç Á¤º¸¸¦ Ãß°¡ÇÑ´Ù. #endif void AddAllAchievement(); //Ãʱ⿡ ½ºÅ©¸³Æ®ÀÇ ¸ðµç ¾÷ÀûÀ» µî·ÏÇÑ´Ù. (ºó°ªÀÇ ¾÷Àû) bool SetAchievementValue(Character_Achievement& char_achievement_info); //¾÷ÀûÀÇ °ªÀ» ¼³Á¤ÇÑ´Ù. bool AddAchievement(Achievement_ParserInfo* achievement_parser_info); //¾÷ÀûÀ» Ãß°¡ÇÑ´Ù. // #if !defined(_SERVER) //_SCJ_ACSYSTEM_OVERLAP_PARENT void SetAchievementParentMap(); // ¼±ÇàÄÚµå ¸®½ºÆ®¸¦ ¼ÂÆÃÇÑ´Ù. #endif //!defined(_SERVER) ACHIEVEMENT_PART_MAP achievement_part_; //¾÷ÀûÀÇ Áö¿ª ¸Ê AchievementParser* achievement_parser_; //¾÷Àû ÆÄ¼­ Æ÷ÀÎÅÍ AchievementNotify* notify_; //¾÷ÀûÀÇ º¯°æ»çÇ×À» Å뺸ÇÒ À̺¥Æ® Àü¼Û °´Ã¼ }; #endif //__ACHIEVEMENT_ACHIEVEMENT_H