#ifndef __Net_Move_H__
#define __Net_Move_H__
#include "PG_Move.h"

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

#pragma unmanaged

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


    static void _PG_Move_LtoC_AddToPartition	( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_DelFromPartition	( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_SetPostion		( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_ObjectMove		( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_DoAction			( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_MoveSpeed			( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_ModelRate			( int Sockid , int Size , void* Data );

    static void _PG_Move_LtoC_EQInfo			( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_FixEQInfo			( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_LookFace			( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_ClientAutoPlot	( int Sockid , int Size , void* Data );
    static void _PG_Move_LtoC_ActionType		( int Sockid , int Size , void* Data );

    static void _PG_Move_LtoC_JumpBegin			( int Sockid , int Size , void* Data );
//    static void _PG_Move_LtoC_JumpEnd        ( int Sockid , int Size , void* Data );
	static void _PG_Move_LtoC_Relation			( int Sockid , int Size , void* Data );

	static void _PG_Move_LtoC_PartyMemberMove	( int Sockid , int Size , void* Data );
	static void	_PG_Move_LtoC_PlayMotion		( int Sockid , int Size , void* Data );

public:
    Net_Move() { This = this; }
    //-------------------------------------------------------------------
    // 資料送出
    //-------------------------------------------------------------------
    static void PlayerMoveObject( int GItemID , float X , float Y , float Z , float Dir , float vX = 0 , float vZ = 0 , ClientMoveTypeENUM Type = EM_ClientMoveType_Normal );
    static void S_DoAction( int GItemID , int ActionID , int TempActionID  );
    static void S_JumpBegin( int GItemID  , float X , float Y , float Z , float Dir , float vX , float vY , float vZ );
//    static void S_JumpEnd( int GItemID  , float X , float Y , float Z , float Dir  );
    //-------------------------------------------------------------------
    //  事件繼承實做
    //-------------------------------------------------------------------
    virtual	void AddToPartition     ( int GItemID , int LGItemID , int DBID , RolePosStruct* Pos , PlayerGraphStruct* GraphObj ) = 0;
    virtual	void DelFromPartition   ( int GItemID  ) = 0;
    virtual	void SetPos             ( int GItemID  , RolePosStruct* Pos ) = 0;
    virtual	void ObjectMove         ( int GItemID  , RolePosStruct* Pos , float vX , float vZ , ClientMoveTypeENUM Type ) = 0;

    virtual	void DoAction           ( int GItemID  , int ActionID , int TempActionID ) = 0;

    virtual	void MoveSpeed          ( int GItemID  , float Speed ) = 0;
    virtual	void ModelRate          ( int GItemID  , float ModelRate ) = 0;

    virtual void EQInfo             ( int GItemID , LookEQInfoStruct&    EQLook ) = 0;
    virtual void FixEQInfo          ( int GItemID , EQWearPosENUM  Pos , int EQ ) = 0;
    virtual void LookFace           ( int GItemID , LookStruct& Look ) = 0;
    virtual void ClientAutoPlot     ( int GItemID , char* AutoPlot ) = 0;
    //角色行為狀態
    virtual void ActionType         ( int GItemID , RoleActionStruct	Action ) = 0;

    virtual void R_JumpBegin		( int GItemID , float X , float Y , float Z , float Dir , float vX , float vY , float vZ ) = 0;
	virtual void R_Relation			( int GItemID , RoleRelationENUM   Relation ) = 0;

	virtual void R_PartyMemberMove	( int DBID , int ZoneID , float X , float Y , float Z ) = 0;

	virtual void PlayMotion			( int iObjID, const char* pszMotion ) = 0;
  //  virtual void R_JumpEnd( int GItemID , float X , float Y , float Z , float Dir ) = 0;
};

#pragma managed
#endif //__Net_Move_H__