#pragma once #ifdef _NA_20100307_BETAKEY_SYSTEM class BetaKeyInfo { public: enum {DIVIDE_DIGIT = 1, IMPOSSIBILE_BETAKEY = 999999}; BetaKeyInfo() : betkey_(0), ability_key_(0), unique_key_(0) { } //ÄÁÅÙÃ÷ÀÇ º£Å¸Å°°¡ ³ªÀÇ º£Å¸Å°¿¡ Æ÷ÇԵǾîÀÖ´ÂÁö °Ë»çÇÑ´Ù. bool CanAbilityBetaKey(UINT32 ability_key) const { if((ability_key_ & ability_key) && ability_key != IMPOSSIBILE_BETAKEY) { return true; } return false; } //ÄÁÅÙÃ÷ÀÇ º£Å¸Å°·Î ÇØ´ç ÄÁÅÙÃ÷¸¦ »ç¿ëÇÒ¼ö ÀÖ´ÂÁö °Ë»çÇÑ´Ù. bool CanAbilityContent(UINT32 ability_key) const { //0 °ªÀº ¹èŸŰ¿Í °ü°è ¾ø´Â ÄÁÅÙÃ÷ ÀÌ´Ù. (º£Å¸Å°¿Í °ü°è¾øÀÌ »ç¿ë°¡´ÉÇÏ´Ù.) if(((ability_key_ & ability_key) || ability_key == 0) && ability_key != IMPOSSIBILE_BETAKEY) { return true; } return false; } BETAKEY GetBetaKey() const { return betkey_; } public: // NOTE: this operators are unadvisable because of implicit conversion. // referenced by Decision sect., 'Operator overloading', google coding style. void operator=(UINT64 beta_key) { betkey_ = beta_key; ability_key_ = static_cast(beta_key / DIVIDE_DIGIT); //»óÀ§ 6ÀÚ¸®¸¸ unique_key_ = static_cast(beta_key % DIVIDE_DIGIT); //ÇÏÀ§ 8ÀÚ¸®¸¸ } void operator=(char* beta_key) { betkey_ = _atoi64(beta_key); ability_key_ = static_cast(betkey_ / DIVIDE_DIGIT); //»óÀ§ 6ÀÚ¸®¸¸ unique_key_ = static_cast(betkey_ % DIVIDE_DIGIT); //ÇÏÀ§ 8ÀÚ¸®¸¸ } private: BETAKEY betkey_; //12 ÀÚ¸®ÀÇ º£Å¸Å°°¡ µé¾î¿Â´Ù. UINT32 ability_key_; //¾ÕÀÇ 6ÀÚ¸®´Â »ç¿ëÀÚ°¡ °¡Áø º£Å¸Å°°¡ ¾î´À ±â´ÉÀ» »ç¿ëÇÒ¼ö ÀÖ´ÂÁö °Ë»çÇÔ´Ù. UINT32 unique_key_; //µÚÀÇ 8ÀÚ¸®´Â À¯ÀϼºÀ» º¸ÀåÇϱâ À§ÇÑ °ªÀ¸·Î »ç¿ëµÈ´Ù. }; #endif //_NA_20100307_BETAKEY_SYSTEM