1. #pragma once
  2. #include "Packet.h"
  3. /*
  4. * 교환 창 관련
  5. */
  6. class CPythonExchange : public CSingleton<CPythonExchange>
  7. {
  8. public:
  9. enum
  10. {
  11. #ifdef ENABLE_NEW_EXCHANGE_WINDOW
  12. EXCHANGE_ITEM_MAX_NUM = 24,
  13. #else
  14. EXCHANGE_ITEM_MAX_NUM = 36,
  15. #endif
  16. };
  17. typedef struct trade
  18. {
  19. char name[CHARACTER_NAME_MAX_LEN + 1];
  20. DWORD item_vnum[EXCHANGE_ITEM_MAX_NUM];
  21. BYTE item_count[EXCHANGE_ITEM_MAX_NUM];
  22. DWORD item_metin[EXCHANGE_ITEM_MAX_NUM][ITEM_SOCKET_SLOT_MAX_NUM];
  23. TPlayerItemAttribute item_attr[EXCHANGE_ITEM_MAX_NUM][ITEM_ATTRIBUTE_SLOT_MAX_NUM];
  24. BYTE accept;
  25. DWORD elk;
  26. #ifdef ENABLE_NEW_EXCHANGE_WINDOW
  27. DWORD race;
  28. DWORD level;
  29. #endif
  30. } TExchangeData;
  31. public:
  32. CPythonExchange();
  33. virtual ~CPythonExchange();
  34. void Clear();
  35. void Start();
  36. void End();
  37. bool isTrading();
  38. // Interface
  39. void SetSelfName(const char *name);
  40. void SetTargetName(const char *name);
  41. char *GetNameFromSelf();
  42. char *GetNameFromTarget();
  43. void SetElkToTarget(DWORD elk);
  44. void SetElkToSelf(DWORD elk);
  45. DWORD GetElkFromTarget();
  46. DWORD GetElkFromSelf();
  47. #ifdef ENABLE_NEW_EXCHANGE_WINDOW
  48. void SetSelfRace(DWORD race);
  49. void SetTargetRace(DWORD race);
  50. DWORD GetRaceFromSelf();
  51. DWORD GetRaceFromTarget();
  52. void SetSelfLevel(DWORD level);
  53. void SetTargetLevel(DWORD level);
  54. DWORD GetLevelFromSelf();
  55. DWORD GetLevelFromTarget();
  56. #endif
  57. void SetItemToTarget(DWORD pos, DWORD vnum, BYTE count);
  58. void SetItemToSelf(DWORD pos, DWORD vnum, BYTE count);
  59. void SetItemMetinSocketToTarget(int pos, int imetinpos, DWORD vnum);
  60. void SetItemMetinSocketToSelf(int pos, int imetinpos, DWORD vnum);
  61. void SetItemAttributeToTarget(int pos, int iattrpos, BYTE byType, short sValue);
  62. void SetItemAttributeToSelf(int pos, int iattrpos, BYTE byType, short sValue);
  63. void DelItemOfTarget(BYTE pos);
  64. void DelItemOfSelf(BYTE pos);
  65. DWORD GetItemVnumFromTarget(BYTE pos);
  66. DWORD GetItemVnumFromSelf(BYTE pos);
  67. BYTE GetItemCountFromTarget(BYTE pos);
  68. BYTE GetItemCountFromSelf(BYTE pos);
  69. DWORD GetItemMetinSocketFromTarget(BYTE pos, int iMetinSocketPos);
  70. DWORD GetItemMetinSocketFromSelf(BYTE pos, int iMetinSocketPos);
  71. void GetItemAttributeFromTarget(BYTE pos, int iAttrPos, BYTE * pbyType, short * psValue);
  72. void GetItemAttributeFromSelf(BYTE pos, int iAttrPos, BYTE * pbyType, short * psValue);
  73. void SetAcceptToTarget(BYTE Accept);
  74. void SetAcceptToSelf(BYTE Accept);
  75. bool GetAcceptFromTarget();
  76. bool GetAcceptFromSelf();
  77. bool GetElkMode();
  78. void SetElkMode(bool value);
  79. void SetTargetLevel(const char *name);
  80. protected:
  81. bool m_isTrading;
  82. bool m_elk_mode; // 엘크를 클릭해서 교환했을때를 위한 변종임.
  83. TExchangeData m_self;
  84. TExchangeData m_victim;
  85. };