#pragma once

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

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

	static void _PG_Party_ChattoC_Invite		( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_PartyBaseInfo	( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_AddMember		( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_DelMember		( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_FixMember		( int NetID , int Size , void* Data );

	static void _PG_Party_ChattoC_PartyTreasure		( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_PartyTreasureLoot	( int NetID , int Size , void* Data );
	static void _PG_Party_ChattoC_GiveItemInfo		( int NetID , int Size , void* Data );

public:    
    NetCli_Party() { This = this; }

	
	static void S_Invite		( char* Name );
	static void S_Join			( char* LeaderName );
	static void S_KickMember	( char* MemberName );
	static void S_PartyRule		( PartyBaseInfoStruct& PartyInfo );


 	virtual void R_Invite			( char* LeaderName ) = 0;
	virtual void R_PartyBaseInfo	( PartyBaseInfoStruct& Info ) = 0;
	virtual void R_AddMember		( PartyMemberInfoStruct& Member ) = 0;
	virtual void R_DelMember		( PartyMemberInfoStruct& Member ) = 0;
	virtual void R_FixMember		( PartyMemberInfoStruct& Member ) = 0;


	static void	S_LootItem( int ItemVersion );
	static void	S_LootItem_NotNeed( int ItemVersion );
	static void	S_PassItem( int ItemVersion );
	static void S_AssistItem( int ItemVersion , int DBID );

	virtual void R_PartyTreasure( int ItemVersion , PartyItemShareENUM LootType , ItemFieldStruct& Item ,	StaticVector< int , _MAX_PARTY_COUNT_  >&  LootDBID ) = 0;
	virtual void R_PartyTreasureLoot( int ItemVersion ,	int DBID , int LootValue ) = 0;
	virtual void R_GiveItemInfo( int DBID , ItemFieldStruct& Item , int ItemVersion ) = 0;
};

