/* ====================================================================
 * 파    일 :	CommonNetworkMsgStruct.h
 * 목    적 :	
 * 작 성 자 :	정성대
 * 작 성 일 :	2006.08.29
 *
 * 추가내용 :
 *		추가날짜	작업자	추가내용
 *		2006.08.29	정성대	생성
 *		2006.12.04	이웅주	MSG_ITEM ... 추가
 *		2007.06.21	이법석	규칙 수정.
 * 
 * 주의사항 :
 * =================================================================== */
#pragma once

#include "CommonDefines.h"

#pragma pack(push,1)

struct MSGROOT
{
	char	Category;
	char	Protocol;
};

#define MAX_PACKED_DATA_SIZE	60000

struct MSG_PACKED_DATA : public MSGROOT
{
	int		RealDataSize;
	int		ReceiverNum;
	char	Data[MAX_PACKED_DATA_SIZE];
};

/// 에러 코드
struct MSG_ERROR : public MSGROOT
{
	/// 0 성공 / 나머지 error코드
	int	ErrorCode;
};

/// NM_USER_LOGIN_ACK
struct MSG_IDPASS : public MSGROOT
{
	char uid[MAX_ID_BUFFER_SIZE];	/// 아이디
	char pwd[MAX_PASS_BUFFER_SIZE];	/// 패스워드
};


#define ERROR_DIST_USERINFO_SUCCESS	0	/// 성공
#define ERROR_DIST_USERINFO_ID_PWD	1	/// 실패-ID/PWD
#define ERROR_DIST_USERINFO_SLEVEL	2	/// 실패-보안등급 적용중
#define ERROR_DIST_USERINFO_BLOCK	3	/// 실패-BLOCK 됨
#define ERROR_DIST_USERINFO_EXISTS	4	/// 실패-접속중
#define ERROR_DIST_USERINFO_FAIL	5	/// 실패

struct MSG_DIST_USERINFO : public MSG_ERROR
{	
	unsigned long	connectionIdx;	/// distribute server 유저 connectionidx	
	unsigned long	UserIdx;		/// distribute server 유저 인덱스	
	unsigned long   LoginIdx;		/// 로그인 인덱스 - [070409 추가 곽철중]
};

struct MSG_REQ_SERVERLIST : public MSGROOT
{};
struct MSG_RES_SERVERLIST : public MSGROOT
{
	unsigned long ServerNo;		/// 마지막 사용한 서버번호.
	unsigned long RowCount;
	struct
	{
		long    NumOfServer;
		wchar_t Name[51];
		BYTE    Status;
	} Servers[1];
};

/// 070404 추가 - 곽철중 [채널리스트]
struct MSG_REQ_CHANNELLIST : public MSGROOT
{
	long NumOfServer;
};
struct MSG_RES_CHANNELLIST : public MSGROOT
{
	unsigned long ChannelNo;	/// 마지막 사용한 채널번호 (현재 사용중도 포함)
	unsigned long RowCount;		/// 채널 리스트 수
	struct
	{
		long NumOfChannel;		/// 채널 번호
		BYTE Status;			/// 채널 상태
	} Channels[1];
};

/// 070405 추가 - 곽철중
#define ERROR_COMEIN_GAME_SUCCESS	0 // 성공
#define ERROR_COMEIN_GAME_FAIL		1 // 미등록 서버
#define ERROR_COMEIN_GAME_DB		2 // DB     오류
#define ERROR_COMEIN_GAME_SYSTEM	3 // SYSTEM 오류

struct MSG_REQ_COMEIN_GAME : public MSGROOT
{
	long NumOfServer;
	long NumOfChannel;
	unsigned long CharacterIdx;
};
struct MSG_RES_COMEIN_GAME : public MSG_ERROR
{};

struct MSG_REQ_GAMESRV : public MSGROOT
{
	long LoginIdx;
	long MemberIdx;
};
struct MSG_RES_GAMESRV : public MSG_ERROR
{};

/// 070625 PKH 치트관련
struct MSG_REGENLEVEL : public MSGROOT
{
	unsigned char		mRegenLevel;
};

struct MSG_LEVEL : public MSGROOT
{
	unsigned char		mLevel;
};

struct MSG_SYNC : public MSGROOT
{
	float				mSyncTime;
};

struct MSG_REQ_SRVTOOL_PING : public MSGROOT
{
	unsigned long mToolSendTime;
};

struct MSG_RES_SRVTOOL_PING : public MSGROOT
{
	unsigned long mToolSendTime;
	unsigned long mUserCnt;
	bool mUserIn;
};

struct MSG_REQ_SERVTOOL_CHLIST : public MSGROOT
{
	unsigned long mServerNum;
};

struct MSG_RES_SERVTOOL_CHLIST : public MSGROOT
{
	long mRowCount;
	struct
	{
		long mNumOfChannel;
		char mInetnum[20];
		BYTE mStatus;
	} mChannels[1];
};

struct MSG_RES_SERVTOOL_CHANNEL_INFO : public MSGROOT
{
	unsigned long	mOrderNum;
	wchar_t         mServerName[51];
	DWORD           mServerNum;
	DWORD           mChannelNum;
};

#pragma pack(pop)
