#ifndef PROGRAMCOMMON_BATTLEGROUNDTIMEINFOPARSER_H_ #define PROGRAMCOMMON_BATTLEGROUNDTIMEINFOPARSER_H_ #if _MSC_VER > 1000 #pragma once #endif #include #include #include #include namespace ns_func { enum eBATTLEGROUND_TIMEMODE { eNONE = 0, eCOUNTDOWN_5MINUTES, // ÀüÀå ½ÃÀÛ 5ºÐÀü eOPENED, // ÀüÀå open eTIMEMODE_MAX }; struct BattleGroundTime { typedef util::TimeInfoPerFrame::AcmTmFmt AcmTmFmt; eBATTLEGROUND_TIMEMODE time_mode; }; struct BattleGroundTimeNode : public BattleGroundTime { bool check_event; uint16_t day_flag; AcmTmFmt start_time; AcmTmFmt end_time; ulong string_code; bool IsInRange(AcmTmFmt query_time) const; }; inline bool BattleGroundTimeNode::IsInRange(AcmTmFmt query_time) const { if (start_time <= query_time && query_time < end_time) { return true; } return false; } }; // end of namespace class BattleGroundTimeInfoParser : public util::Singleton, public IParser { public: enum DayFlag { //½ºÅ©¸³Æ® ¿äÀϰª //1:ÀÏ¿äÀÏ, 2:¿ù¿äÀÏ ... 7:Åä¿äÀÏ kMinDay = 0, kMaxDay = 7, }; enum { kOpenTimeMaxCount = 15, kEventTimeModeCounts = 2, k24hours = 24 * 60, }; typedef ns_func::BattleGroundTimeNode BattleGroundTimeNode; BattleGroundTimeInfoParser() : number_of_time_nodes_(0), time_node_array_(NULL) { } ~BattleGroundTimeInfoParser() { } virtual void Release(); virtual BOOL LoadScript(eSCRIPT_CODE scriptCode, BOOL bReload); bool GetCurrentTimeNode(const util::TimeInfoPerFrame& time_info, uint16_t day_flag, ns_func::BattleGroundTimeNode* result_node) const; // °¡Àå 'ÃÖ±Ù' ÇØ´ç time_modeÀÇ ³ëµå¸¦ °¡Á®¿Â´Ù bool GetLatestEventTimeNode(const util::TimeInfoPerFrame& time_info, ns_func::BattleGroundTimeNode* result_node, const ns_func::eBATTLEGROUND_TIMEMODE& time_mode); private: void Unload(); bool _Load(bool reload); void _SetTimeInfo(BattleGroundTimeNode* time_node, const BattleGroundTimeNode::AcmTmFmt input_open_time, const ns_func::eBATTLEGROUND_TIMEMODE time_mode, const DWORD string_code); private: typedef STLX_MULTIMAP OpenTimeTable; int number_of_time_nodes_; BattleGroundTimeNode* time_node_array_; OpenTimeTable open_time_table_; }; #endif //PROGRAMCOMMON_BATTLEGROUNDTIMEINFOPARSER_H_