#ifndef __Net_GSrvConnect_H__
#define __Net_GSrvConnect_H__

#include "../../MainProc/NetGlobal.h"
#include "PG_CliConnect.h"

#pragma unmanaged

class Net_GSrvConnect : public CNetGlobal
{
    
protected:
    //-------------------------------------------------------------------
    static Net_GSrvConnect* This;
    static bool _Init();
    static bool _Release();

    static void _PG_CliConnect_LtoC_PlayerItemID		( int Sockid , int Size , void* Data );
    static void _PG_CliConnect_LtoC_ZoneInfo			( int Sockid , int Size , void* Data );
    static void _PG_CliConnect_LtoC_PlayerData			( int Sockid , int Size , void* Data );
    static void _PG_CliConnect_LtoC_PrepareChangeZone	( int Sockid , int Size , void* Data );
    static void _PG_CliConnect_LtoC_ChangeZoneOK		( int Sockid , int Size , void* Data );

    static void _PG_CliConnect_LtoC_ModifyNPCInfo		( int Sockid , int Size , void* Data );
	static void _PG_CliConnect_LtoC_GetNPCMoveInfoResult( int Sockid , int Size , void* Data );
public:
    Net_GSrvConnect( ){ This = this; };
    //-------------------------------------------------------------------
    // 資料送出
    //-------------------------------------------------------------------
    static void Logout();

	//修改NPC資料
    static void ModyNPC( ModifyNPCInfo*  Info );

	//儲存NPC移動資料
	static void SaveNPCMoveInfo( int GItemID , vector<NPC_MoveBaseStruct>& List );
    //-------------------------------------------------------------------
    //  事件繼承實做
    //-------------------------------------------------------------------
    virtual void PlayerItemID           ( int GItemID ) = 0;
    virtual void ZoneInfo               ( int GSrvNetID , int ZoneID , int GSrvID , int MapID ) = 0;
    virtual void PlayerData             ( BaseRoleData *BaseRole ) = 0;
    virtual void PrepareChangeZone      () = 0;
    virtual void ChangeZoneOK           () = 0;
    virtual void R_ModyNPC              ( ModifyNPCInfo*  Info ) = 0;

	//回應 npc 路徑資訊
	virtual void R_GetNPCMoveInfoResult	( int GItemID , vector<NPC_MoveBaseStruct>& List ) = 0;
};

#pragma managed
#endif //__Net_GSrvConnect_H__