/* * LottoConfig.h */ #ifndef _LOTTO_CONFIG_H_ #define _LOTTO_CONFIG_H_ #if _MSC_VER > 1000 #pragma once #endif #ifndef _SCHEDULE_H_ #include "Schedule.h" #endif // ÇÏÀÓ ·Î¶Ç µîÀ§º° ´ç÷±Ý Áö±Þ Á¶°ÇÀ» Ç¥ÇöÇÏ´Â ±¸Á¶Ã¼ struct LottoPrize { // ´ç÷±Ý Á¶°Ç ¼³Á¤ À¯Çü enum PrizeType { TYPE_RATIO // °íÁ¤ ±Ý¾× ´ç÷±Ý Á¦¿Ü ÈÄ Àû¸³¾×¿¡ ºñÀ² Àû¿ë , TYPE_AMOUNT // °íÁ¤ ±Ý¾× }; PrizeType type; // ´ç÷±Ý Á¶°Ç union { double ratio; // ´ç÷±Ý ºñÀ² INT64 amount; // ´ç÷±Ý¾× } value; }; typedef std::vector ReminderList; // ÇÏÀÓ ·Î¶Ç ¼¼ºÎ ¼³Á¤À» ĸ½¶È­Çϴ Ŭ·¡½º class LottoConfig { public: // ¼­¹ö Äڵ忡¼­ ÀϹæÀûÀ¸·Î º¯°æÇϱâ Èûµç Ç׸ñµéÀ» public static »ó¼ö·Î ¼³Á¤ // ¼±Åà °¡´ÉÇÑ ÃÖ¼Ò ¼ýÀÚ static const BYTE MIN_NUMBER = LOTTO_MIN_NUMBER; // ¼±Åà °¡´ÉÇÑ ÃÖ´ë ¼ýÀÚ static const BYTE MAX_NUMBER = LOTTO_MAX_NUMBER; // ÀÀ¸ð/Ãß÷½Ã ¸î °³ÀÇ ¼ýÀÚ¸¦ ¼±ÅÃÇÒ °ÍÀΰ¡ static const int NUM_PICKS = LOTTO_NUM_PICKS; // ÇÑ Ä³¸¯ÅͰ¡ º¸À¯ÇÒ ¼ö ÀÖ´Â º¹±Ç ¿ëÁöÀÇ ÃÖ´ë °¹¼ö static const int MAX_TICKETS = LOTTO_MAX_TICKETS; // ÁøÇà ÁßÀÎ ÇöÀç ȸÂ÷¸¦ Æ÷ÇÔÇØ ÃÖ±Ù ¸î ȸÂ÷ÀÇ ÇÏÀÓ ·Î¶Ç µ¥ÀÌÅͰ¡ °ü¸®µÇ´Â°¡ static const int NUM_RECENT_DRAWS = LOTTO_NUM_RECENT_DRAWS; // ÃÖ´ë ¸î °³ÀÇ ÃÖ±Ù ´ç÷ ¾È³» ÂÊÁö¸¦ Àü¼ÛÇÒ °ÍÀΰ¡ static const int MAX_NOTICE = LOTTO_MAX_NOTICE; public: LottoConfig(); ~LottoConfig(); // ÇÏÀÓ ·Î¶Ç ¼³Á¤À» ÃʱâÈ­ÇÑ´Ù bool Init(); // ÁÖ¾îÁø ÇÏÀÓ ¼Òºñ À¯ÇüÀÌ º¹±Ç ¿ëÁö ȹµæÀ» À§ÇÑ À¯È¿ÇÑ ÁöÃâÀÎÁö ÆÇ´Ü bool IsEffectiveConsumption(eHEIM_CONSUMPTION_TYPE type) const { return ( ((1 << type) & consumptionFlag_) != 0 ); } // ·Î±×ÀÎ ÈÄ º¹±Ç ¿ëÁö 1¸Å¸¦ ȹµæÇϱâ À§ÇÑ ÃÖ¼Ò ÁöÃâ ÇÏÀÓ INT64 GetTicketPrice() const { return ticketPrice_; } // À¯È¿ ÁöÃâÀÇ Àû¸³¾× Àüȯ ºñÀ²(À¯È¿ ÁöÃâÀÇ ¸î %°¡ Àû¸³µÇ´Â°¡) float GetAccumulationRate() const { return accumulationRate_; } // 1µîºÎÅÍ ¸î µî±îÁö°¡ ´ç÷±Ý Áö±Þ ´ë»ó¿¡ Æ÷ÇԵǴ°¡ int GetNumPrizes() const { return numPrizes_; } // ÁÖ¾îÁø µîÀ§¿¡ ÇØ´çÇÏ´Â ´ç÷±Ý Áö±Þ Á¶°ÇÀ» ¾ò´Â´Ù. const LottoPrize* GetPrize(int rank) const; // ´ÙÀ½ Ãß÷ ÀÏÁ¤À» ã´Â´Ù bool ScheduleNextDraw(ScheduleToken& token) const { return schedule_.FindNearestAhead(token); } const ReminderList& GetReminders() const { return reminders_; } private: DWORD consumptionFlag_; // ¾î¶² Á¾·ùÀÇ ÇÏÀÓ ¼Òºñ¸¦ À¯È¿ÇÏ°Ô ÀÎÁ¤ÇÒÁö INT64 ticketPrice_; // º¹±Ç ¿ëÁö °¡°Ý float accumulationRate_; // À¯È¿ ÁöÃâÀÇ Àû¸³¾× Àüȯ ºñÀ² int numPrizes_; // ¸î µî±îÁö ´ç÷±Ý Áö±Þ ´ë»ó¿¡ Æ÷ÇԵǴ°¡ LottoPrize* prizes_; // µîÀ§º° ´ç÷±Þ Áö±Þ Á¶°Ç ¸ñ·Ï Schedule schedule_; // Ãß÷ ÀÏÁ¤ ReminderList reminders_; }; #endif // _LOTTO_CONFIG_H_