Advertisement
Guest User

Untitled

a guest
Aug 16th, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.47 KB | None | 0 0
  1. /**
  2.  * \ingroup SHO_GS
  3.  * \file    CEconomy.h
  4.  * \brief   각 존변 경제 데이타 보관,처리
  5.  */
  6. #ifndef __CECONOMY_H
  7. #define __CECONOMY_H
  8. #include "CItem.h"
  9. //-------------------------------------------------------------------------------------------------
  10. struct tagECONOMY {
  11.     // 입력 데이터...
  12.     union {
  13.         struct {
  14. #if defined( __SERVER )
  15.             DWORD   m_dwTown_COUNTER;                   // 카운터 1분에 1씩 감소.       50~100
  16.  
  17.             short   m_nTown_POP_BASE;                   // 기준 인구수.                    100~8000
  18.             short   m_nTown_DEV_BASE;                   // 기준 발전도                 10~100
  19.             short   m_nTown_CONSUM[ MAX_PRICE_TYPE ];   // 아이템별 소비량
  20.  
  21.             short   m_nTownDEV;                         // 마을 발전도
  22.             int     m_iTownPOP;                         // 마을 인구.
  23.             int     m_iTownITEM[ MAX_PRICE_TYPE ];      // 아이템별 보유량               1000~100000
  24.  
  25.             DWORD   m_dwCheckTIME;
  26.             union {
  27.                 struct {
  28.                     BYTE    m_btSave_TOWN_RATE;
  29.                     BYTE    m_btSave_ItemRATE[ MAX_PRICE_TYPE ];
  30.                     short   m_nSave_WorldPROD;
  31.                     short   m_nSave_WorldRATE;
  32.                 } ;
  33.                 BYTE    m_btSave_DATA[ MAX_PRICE_TYPE+sizeof(BYTE)+sizeof(short)*2 ];
  34.             } ;
  35. #endif
  36.             DWORD   m_dwUpdateTIME;
  37.             union {
  38.                 struct {
  39.                     BYTE    m_btTOWN_RATE;                      // 마을 물가                    80~140
  40.                     BYTE    m_btItemRATE[ MAX_PRICE_TYPE ];     // 아이템별 물가              1~127
  41.                     short   m_nCur_WorldPROD;
  42.                     short   m_nCur_WorldRATE;
  43.                 } ;
  44.                 BYTE    m_btCur_DATA[ MAX_PRICE_TYPE+sizeof(BYTE)+sizeof(short)*2 ];
  45.             } ;
  46.         } ;
  47.  
  48.         BYTE    m_pEconomy[ 1 ];
  49.     } ;
  50. } ;
  51.  
  52. /**
  53.  * \ingroup SHO_GS_LIB
  54.  * \class   CEconomy
  55.  * \author  wookSang.Jo
  56.  * \brief   각 존의 경제 데이타 보관및 처리 클래스
  57.  *          초기 존 파일에서 읽어들이거나 DB서버에서 읽어 들인 경제 데이타 클래스 tagECONOMY 상속받음
  58.  */
  59. class CEconomy : public tagECONOMY
  60. {
  61. private:
  62.     int m_iTownCounter;
  63. public :
  64.     // 마을 물가...
  65.     static bool IsEssentialGoods (int iItemTYPE);
  66.  
  67.     CEconomy ();
  68.     ~CEconomy ();
  69.  
  70.     void    Init (void);
  71.  
  72.     void    SetTownRATE (int iValue);
  73.     void    SetItemRATE(int iPriceType, int iValue);
  74.  
  75.     BYTE    Get_TownRATE (void)             { return m_btTOWN_RATE; }
  76.     int     Get_ItemRATE (short nItemTYPE)  { return nItemTYPE < MAX_PRICE_TYPE ? m_btItemRATE[ nItemTYPE ] : -1; }
  77.  
  78.     int     Get_ItemBuyPRICE  (short nItemTYPE, short nItemNO, short nBuySkillVALUE);
  79.     int     Get_ItemSellPRICE (tagITEM &sITEM, short nSellSkillVALUE);
  80.  
  81.     int     Get_EconomyVAR(short nVarIDX)
  82.     {
  83.         switch( nVarIDX ) {
  84.             case 1 :    return Get_TownRATE();
  85. #if defined( __SERVER )
  86.             case 2 :    return m_iTownPOP;
  87.             case 3 :    return m_nTownDEV;
  88. #endif
  89.         }
  90.  
  91. #if defined( __SERVER )
  92.         if ( nVarIDX >= 11 && nVarIDX <= 30 ) {
  93.             if ( nVarIDX <= 20 ) {
  94.                 // 보유량
  95.                 return m_iTownITEM [ MIN_PRICE_TYPE + nVarIDX - 11 ];
  96.             } else {
  97.                 // 물가..
  98.                 return m_btItemRATE[ MIN_PRICE_TYPE + nVarIDX - 21 ];
  99.             }
  100.         }
  101. #endif
  102.         return 0;
  103.     }
  104.  
  105. #if defined( __SERVER )
  106.     #ifdef  __SERVER
  107.     bool    Load (FILE *fp);
  108.     #else
  109.     bool    Load ( CFileSystem* pFileSystem );
  110.     #endif
  111.  
  112.     void    BuyITEM  (tagITEM &sITEM);
  113.     void    SellITEM (tagITEM &sITEM, int iQuantity);
  114.  
  115.     int     Get_TownITEM (short nItemTYPE)  { return nItemTYPE < MAX_PRICE_TYPE ? m_iTownITEM[ nItemTYPE ] : -1; }
  116.  
  117.     bool    Proc (DWORD dwCurTIME);
  118. #endif
  119. } ;
  120.  
  121. extern short Get_WorldRATE ();
  122. extern void  Set_WorldRATE (short nWorldRate);
  123.  
  124. extern short Get_WorldPROD ();                  // 제조시 사용되는 WORLD_PRODUCT
  125. extern void  Set_WorldPROD (short nWorldProd);
  126.  
  127. //-------------------------------------------------------------------------------------------------
  128. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement