274 lines
14 KiB
C++
274 lines
14 KiB
C++
|
|
|
|
#pragma once
|
|
|
|
|
|
//#include "SUIWnd.h"
|
|
|
|
|
|
#define FARM_SLOT_CNT 3
|
|
|
|
|
|
class KUIControl3DStatic;
|
|
class KUIControlEdit;
|
|
class SUIDisplayInfo;
|
|
class SGameAvatarEx;
|
|
class KUIControlScrollBase;
|
|
class SUICreatureFarmWnd;
|
|
|
|
|
|
//===============================================================================================================
|
|
// SCreatureAssignState
|
|
//===============================================================================================================
|
|
struct SCreatureAssignState
|
|
{
|
|
SCreatureAssignState();
|
|
|
|
void Clear();
|
|
bool bUse;
|
|
bool bKeep30;
|
|
DWORD keep_elasped_time; // 보관 30일 기간까지 흘러긴 시간
|
|
DWORD duration; // 맡기는 기간
|
|
DWORD duration_elasped; // 맡기는 기간 경과시간
|
|
DWORD elasped_time; // 경과 시간 - 크리처 맡긴 이후 흘러간 시간
|
|
DWORD refresh_time; // 돌보기 할 수 있는 시점까지 남은 시간
|
|
DWORD refresh_elasped_time; // 돌보기 할 수 있는 시점까지 남은 시간 - 돌보기 활성화를 위해 흘러간 시간
|
|
|
|
DWORD temp_keep_elasped_10m; // 정보 갱신을 위한 시간
|
|
};
|
|
|
|
class SCreatureAssignStateMgr
|
|
{
|
|
private:
|
|
SUICreatureFarmWnd* m_pParent;
|
|
BOOL m_bWork;
|
|
SCreatureAssignState m_aAssignState[3];
|
|
|
|
public:
|
|
void SetParent(SUICreatureFarmWnd* pParent);
|
|
void SetWorkFlag(BOOL bWork);
|
|
SCreatureAssignState* GetInfo(int _id) { return &m_aAssignState[_id]; }
|
|
void SetInfo(int _id, bool _bUse, int _duration, int _duration_elasped, int _elasped_time, int _refresh_time, int _refresh_elasped_time);
|
|
void ClearInfo(int _id);
|
|
void ClearInfoAll();
|
|
void CheckState(int _id, DWORD dwFrameTick);
|
|
|
|
virtual void Process( DWORD dwTime );
|
|
|
|
public:
|
|
SCreatureAssignStateMgr();
|
|
virtual ~SCreatureAssignStateMgr();
|
|
};
|
|
|
|
|
|
//===============================================================================================================
|
|
// SUICreatureFarmWnd
|
|
//===============================================================================================================
|
|
class SUICreatureFarmWnd : public SUIWnd
|
|
{
|
|
public:
|
|
struct SAssignData
|
|
{
|
|
SAssignData();
|
|
|
|
SUICreatureFarmWnd::SAssignData& operator = (SUICreatureFarmWnd::SAssignData* p);
|
|
|
|
void Clear();
|
|
BOOL IsEanbleAssign();
|
|
|
|
BOOL bKeep30; // 30일 보관중
|
|
BOOL bUse; // 사용중인지 여부
|
|
int nTicketType; // 티켓 종류
|
|
int nTicketTermType; // 티켓 사용기간
|
|
int nTicketCount; // 티켓 개수
|
|
int nCrackerCount; // 크래커 개수
|
|
std::string strFaceIconFileName; // 얼굴 아이콘 파일 이름
|
|
std::string strTicketIconFileName; // 티켓 아이콘 파일 이름
|
|
std::string strCrackerIconFileName; // 크래커 아이콘 파일 이름
|
|
|
|
int codeCreature; // 크리처 코드 ( DB에 이 코드 번호로 저장되어있다 )
|
|
AR_HANDLE idCard; // 크리처 카드의 디비 아이디
|
|
|
|
int nIndex; // 농장슬롯
|
|
char name[19]; // 이름
|
|
int duration; // 맡기는 기간
|
|
int duration_elasped; // 맡기는 기간 경과시간
|
|
int elasped_time; // 경과 시간 - 크리처 맡긴 이후 흘러간 시간
|
|
int refresh_time; // 돌보기 할 수 있는 시점까지 남은 시간
|
|
int refresh_elasped_time; // 돌보기 할 수 있는 시점까지 남은 시간 - 돌보기 활성화를 위해 흘러간 시간
|
|
char using_cash; //
|
|
char using_cracker; //
|
|
char evolution_grade; // 진화 단계
|
|
int idEvolutionTypeName; // 진화 종류의 이름
|
|
__int64 exp; // 경험치
|
|
|
|
TS_ITEM_BASE_INFO card_info; // 크리처 카드의 아이템 정보
|
|
};
|
|
|
|
public:
|
|
SUICreatureFarmWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo );
|
|
virtual ~SUICreatureFarmWnd();
|
|
|
|
virtual void* Perform( KID id, KArg& msg );
|
|
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
|
|
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
|
|
virtual void Process( DWORD dwTime );
|
|
virtual bool InitData( bool bReload = false );
|
|
virtual bool InitControls( KPoint kPos );
|
|
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
|
|
|
|
void SetAdvertiseState(int _state);
|
|
int GetAdvertiseState() { return m_nAdvertiseState; }
|
|
|
|
public:
|
|
// insert caption funtion
|
|
void InsertCaption_remain_time(const char* pContents); // 맡긴 기간 표시 - 상단
|
|
void InsertCaption_remain_time_slot(int nSlot, const char* pContents); // 맡긴 기간 표시 - 슬롯
|
|
void InsertCaption_cracker(const char* pContents); // 크래커 표시 - 상단
|
|
void InsertCaption_cracker_count(const char* pContents); // 크래커 개수 표시 - 상단
|
|
void InsertCaption_ticket_count(const char* pContents); // 티켓 개수 표시 - 상단
|
|
void InsertCaption_LV_slot(int nSlot, const char* pContentsLV); // 레벨 표시 - 슬롯
|
|
void InsertCaption_current_level(const char* pLVString); // 현재 레벨
|
|
void InsertCaption_start_level(const char* pLVString); // 시작 레벨
|
|
void InsertCaption_goal_level(const char* pLVString); // 목표 레벨
|
|
void InsertCaption_enhance(const char* pEnhanceString); // 강화단계표시
|
|
void InsertCaption_name_slot(int nSlot, const char* name); // 이름 표시 - 슬롯
|
|
void InsertCaption_kind_slot(int nSlot, const char* pKindString); // 종류 표시 - 슬롯
|
|
void InsertCaption_ad(const char* pKindString, const char* pColor); // 광고판
|
|
void InsertCaption_name(const char* pNameString); // 이름
|
|
|
|
public:
|
|
BOOL CalculateEXP_ex_slot(int nSlot, int nSummonID, int nCurrentLevel, int nCreatureCode, int* pSocket, BOOL bUseCracker, int nEvolveType, int nTicketTerm, int nTicketType);
|
|
BOOL CalculateEXP_ex(int nCurrentLevel, int nSummonID, int nCreatureCode, int* pSocket, BOOL bUseCracker, int nEvolveType, int nTicketTerm, int nTicketType ); // 경험치를 계산 적용한다
|
|
BOOL CalculateEXP(int nSlotID); // 경험치를 계산 적용한다
|
|
void SetAdvertise(int _state); // 현재 광고판 상태를 변경한다
|
|
int SelectEmptySlotIndex(); // 현재 비어있는 슬롯의 인덱스를 찾는다
|
|
void ChangeItemSlot(int nTicketType); // 크래커 존재 여부와 티켓의 종류에 따라 슬롯상태를 변경한다
|
|
BOOL SetShowCreature3DModel(AR_HANDLE hCreature, int nEnhance, KUIControl3DStatic* pCtrl); // 크리처 모델을 UI에 보인다
|
|
const char* GetTicketItemIconName(int nSelectSlotID); // 티켓 아이템의 아이콘 파일 이름을 얻는다
|
|
const char* GetCrackerItemIconName(BOOL bCrackerExist); // 크래커 아이템의 아이콘 파일 이름을 얻는다
|
|
|
|
int SetElapsedTime(int nSlotID, DWORD dwTime, BOOL bReset=FALSE);// 시간 설정 - 게이지 컨트롤 갱신시칸다
|
|
void SetCreatureTime(int nSlotID, const char* pContents); // 크리처 맡기기 남은 시간 설정
|
|
|
|
int SetCreatureInfo( void* pPacket ); // 크리처 정보 설정
|
|
int SetCreatureInfo( int nSlotID ); // 크리처 정보 설정
|
|
int SetCreatureInfoDisplay( int nSlotID ); // 크리처 정보 설정
|
|
int SetCreatureSlotState( BOOL bUserCashItem ); // 슬롯 상태 변경한다 - 캐쉬아이템
|
|
void SetCreatureSlotStateEdit( int nSlotID, BOOL bEnable ); // 슬롯 상태 변경한다 - 활성 / 비활성
|
|
void SetCreatureSlotCoverStateEdit( bool bEnable ); // 슬롯 커버 상태 변경한다 - 활성 / 비활성
|
|
|
|
void ClearUIDisplay(); // 현재 크리처 정보 표기를 삭제한다
|
|
int CheckEvolve(int* pSocket, int nID_Evolve_target, int& nOutLevel, int& nOutEvolveType, int& nOutEvolveCreatureID, int& nOutEvolveCreatureNameID, int& nOutOverBreed); // 진화여부 검사
|
|
|
|
int Regain(int nSlotID); // 되찾기
|
|
void PostMsgAtDynamic(SGameMessage* pMsg);
|
|
|
|
BOOL IsEnaleAssin(); // 맡기기가 가능한지 최종 검사함수
|
|
BOOL IsEnaleRegain(); // 되찾기가 가능한지 최종 검사함수
|
|
BOOL IsExistAssignCreature(); // 맡겨진 크리처가 있는지 검사
|
|
|
|
BOOL OnSendPacket_AssignCreature(AR_HANDLE hSelectCreatureCardHandle); // 서버에게 크리처를 맡긴다고 알린다
|
|
BOOL OnSendPacket_RegainCreature(AR_HANDLE hSelectCreatureCardHandle); // 서버에게 크리처를 되찾는다고 알린다
|
|
BOOL OnSendPacket_RequestCreatureFarmInfo(); // 서버에게 크리처농장 정보 요청한다
|
|
BOOL OnSendPacket_Nurse(AR_HANDLE hSelectCreatureCardHandle); // 서버에게 크리처를 돌본다고 알린다
|
|
BOOL OnSendPacket_OpenMarket(); // 서버에게 마켓 창을 열어 달라 요청한다 //2011.06.16 - servantes
|
|
|
|
protected:
|
|
bool isAssignedCreature(int cardHandle) const; /// 2011.03.29 현재 슬롯에 할당되어 있는 넘인지 아닌지 - prodongi
|
|
int GetExpPerHour(int nGrowType, int nTicketType ) ; // nTicketType == 2라면 프리미어
|
|
|
|
private:
|
|
SCreatureAssignStateMgr m_CreatureAssignStateMgr; // 크리처 슬롯 상태 관리자
|
|
|
|
AR_HANDLE m_hCreature_display; // 보여주기용 크리처 핸들
|
|
SGameAvatarEx* m_pDisplayCreature;
|
|
int m_nDisplayCreatureLevel;
|
|
int m_nDisplayCreatureID;
|
|
int m_nDisplayCreatureObjectType;
|
|
int m_nDisplayCreatureContentID;
|
|
BOOL m_bFaceCutSet;
|
|
BOOL m_bCrackerSet;
|
|
int m_nTicketType;
|
|
BOOL m_bEnableAssign;
|
|
int m_nAdvertiseState; // 광고판 상태
|
|
int m_nAdvertiseStateOld; // 광고판 상태
|
|
|
|
private:
|
|
SUIDisplayInfo* m_pDisplayInfo;
|
|
|
|
int m_nSelectCreatureSlot; // 현재 선택한 크리처 슬롯
|
|
AR_HANDLE m_nTicketHandle; // 현재 선택한 티켓 핸들
|
|
AR_HANDLE m_nCrackerHandle; // 현재 선택한 크래커 핸들
|
|
AR_HANDLE m_nSelectCreatureCardHandle; // 현재 선택한 크리처 카드 핸들
|
|
AR_HANDLE m_nOldSelectCreatureCardHandle; // 먼저 선택했던 크리처 카드 핸들
|
|
int m_selectCreatureCurLevel; /// 2011.03.29 현재 선택한 크리처의 레벨
|
|
BOOL m_bEnableCashItem; // 캐쉬아이템 사용 여부
|
|
|
|
SAssignData m_aAssignData[FARM_SLOT_CNT]; // 크리처 맡기기 위한 데이타 / 티켓 종류 / 티켓 사용기간 / 티켓 개수 / 크래커 개수
|
|
|
|
private:
|
|
KUIControlStatic* m_pEdit_Advertise;
|
|
|
|
KUIControl3DStatic* m_p3DStatic_Creature;
|
|
|
|
KUIControlStatic* m_pStatic_SelectSlot;
|
|
KUIControlStatic* m_pStatic_DragNDrop;
|
|
KUIControlStatic* m_pStatic_CurrentLevel;
|
|
KUIControlStatic* m_pStatic_Enhance;
|
|
KUIControlStatic* m_pStatic_StartLevel;
|
|
KUIControlStatic* m_pStatic_GoalLevel;
|
|
KUIControlStatic* m_pStatic_Name;
|
|
KUIControlStatic* m_pStatic_Type;
|
|
KUIControlStatic* m_pStatic_Time;
|
|
KUIControlStatic* m_pStatic_Food;
|
|
KUIControlStatic* m_pStatic_KhrooShopMarkZone;
|
|
|
|
KUIControlStatic* m_pStatic_lbx_select;
|
|
KUIControlStatic* m_pStatic_lbx_cover_txt[FARM_SLOT_CNT-1];
|
|
KUIControlStatic* m_pStatic_lbx_cover[FARM_SLOT_CNT];
|
|
KUIControlIconStatic* m_pIconStatic_mark_khroo[FARM_SLOT_CNT];
|
|
KUIControlStatic* m_pIconStatic_letter_mark_khroo[FARM_SLOT_CNT-1];
|
|
KUIControlButton* m_pBtn_list_item[FARM_SLOT_CNT];
|
|
KUIControlIconStatic* m_pStaticIcon_assign_food[FARM_SLOT_CNT];
|
|
KUIControlIconStatic* m_pStaticIcon_assign_ticket[FARM_SLOT_CNT];
|
|
|
|
KUIControlStatic* m_pStatic_lbx_Level[FARM_SLOT_CNT];
|
|
KUIControlStatic* m_pStatic_lbx_Name[FARM_SLOT_CNT];
|
|
KUIControlStatic* m_pStatic_lbx_Type[FARM_SLOT_CNT];
|
|
KUIControlStatic* m_pStatic_lbx_Time[FARM_SLOT_CNT]; // * 2];
|
|
KUIControlSimpleButton* m_pBtn_lbx_Assign[FARM_SLOT_CNT];
|
|
KUIControlSimpleButton* m_pBtn_Assign;
|
|
KUIControlSimpleButton* m_pBtn_Regain;
|
|
|
|
KUIControlMultiIcon* m_pStaticIcon_card;
|
|
KUIControlIconStatic* m_pStaticIcon_food;
|
|
KUIControlIconStatic* m_pStaticIcon_ticket;
|
|
|
|
KUIControlStatic* m_pStaticIcon_ticket_count;
|
|
KUIControlStatic* m_pStaticIcon_cracker_count;
|
|
};
|
|
|
|
|
|
//===============================================================================================================
|
|
// SUICreatureFarmHelpWnd
|
|
//===============================================================================================================
|
|
class SUICreatureFarmHelpWnd : public SUIWnd
|
|
{
|
|
private:
|
|
SUIDisplayInfo* m_pDisplayInfo;
|
|
KUIControlScrollBase* m_pScrollBar;
|
|
|
|
public:
|
|
SUICreatureFarmHelpWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo );
|
|
|
|
virtual void* Perform( KID id, KArg& msg );
|
|
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
|
|
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
|
|
virtual void Process( DWORD dwTime );
|
|
virtual bool InitData( bool bReload = false );
|
|
virtual bool InitControls( KPoint kPos );
|
|
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
|
|
|
|
};
|