#pragma once
#pragma warning (disable:4949)
#include "../../RoleData/RoleBaseDef.h"
#include "..\NetWakerPGEnum.h"
#pragma unmanaged

//-------------------------------------------------------------------
// 要請
//-------------------------------------------------------------------
// C1 -> Chat C1 要請 C2 
// Chat -> C2 C1 要請 C2
// C2 -> Chat C2 要加入屬於 C1 的 Party
	//1 如果 C1 沒 Party自動產生
	//2 加入 C1 的 Party
// Chat -> Local 更新 Party 結構資訊
// Chat -> Local 加入Party成員
// Chat -> Local 移除Party成員

// Chat -> C 更新 Party 結構資訊
// Chat -> C 加入Party成員
// Chat -> C 移除Party成員

//-------------------------------------------------------------------
// 其他
//-------------------------------------------------------------------
// C -> Chat 踢除 隊伍成員
// C -> Chat 設定隊伍規則
// C -> Chat 設定隊長
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// 邀請
//-------------------------------------------------------------------
// C1 -> Chat C1 邀請 C2 
struct PG_Party_CtoChat_Invite
{
	GamePGCommandEnum	Command;

	StaticString <_MAX_NAMESTRING_LEN_> InviteName;

	PG_Party_CtoChat_Invite()
	{	Command = EM_PG_Party_CtoChat_Invite;	};
};
//-------------------------------------------------------------------
// Chat -> C2 C1 邀請 C2
struct PG_Party_ChattoC_Invite
{
	GamePGCommandEnum	Command;

	StaticString <_MAX_NAMESTRING_LEN_> LeaderName;

	PG_Party_ChattoC_Invite()
	{	Command = EM_PG_Party_ChattoC_Invite;	};
};
//-------------------------------------------------------------------
// C2 -> Chat C2 要加入屬於 C1 的 Party
	//1 如果 C1 沒 Party自動產生
	//2 加入 C1 的 Party
struct PG_Party_CtoChat_Join
{
	GamePGCommandEnum	Command;

	StaticString <_MAX_NAMESTRING_LEN_> LeaderName;

	PG_Party_CtoChat_Join()
	{	Command = EM_PG_Party_CtoChat_Join;	};
};
//-------------------------------------------------------------------
// Chat -> Local 更新 Party 結構資訊 ( 送給所有Server )
struct PG_Party_ChattoL_PartyBaseInfo
{
	GamePGCommandEnum	Command;
	PartyBaseInfoStruct Info;
	

	PG_Party_ChattoL_PartyBaseInfo()
	{	Command = EM_PG_Party_ChattoL_PartyBaseInfo;	};
};
//-------------------------------------------------------------------
// Chat -> Local 加入Party成員( 送給所有Server )
struct PG_Party_ChattoL_AddMember
{
	GamePGCommandEnum	Command;
	int					PartyID;
	PartyMemberInfoStruct NewMember;

	PG_Party_ChattoL_AddMember()
	{	Command = EM_PG_Party_ChattoL_AddMember;	};
};
//-------------------------------------------------------------------
// Chat -> Local 移除Party成員( 送給所有Server )
struct PG_Party_ChattoL_DelMember
{
	GamePGCommandEnum		Command;
	int						PartyID;
	PartyMemberInfoStruct	Member;
//	StaticString <_MAX_NAMESTRING_LEN_> DelMemberName;

	PG_Party_ChattoL_DelMember()
	{	Command = EM_PG_Party_ChattoL_DelMember;	};
};
//-------------------------------------------------------------------
// Chat -> L 更新成員資訊
struct PG_Party_ChattoL_FixMember
{
	GamePGCommandEnum	Command;
	int					PartyID;
	PartyMemberInfoStruct Member;

	PG_Party_ChattoL_FixMember()
	{	Command = EM_PG_Party_ChattoL_FixMember;	};
};
//-------------------------------------------------------------------
// Chat -> C 更新 Party 結構資訊
struct PG_Party_ChattoC_PartyBaseInfo
{
	GamePGCommandEnum	Command;
	PartyBaseInfoStruct Info;


	PG_Party_ChattoC_PartyBaseInfo()
	{	Command = EM_PG_Party_ChattoC_PartyBaseInfo;	};
};
//-------------------------------------------------------------------
// Chat -> C 加入Party成員
struct PG_Party_ChattoC_AddMember
{
	GamePGCommandEnum	Command;
	PartyMemberInfoStruct NewMember;

	PG_Party_ChattoC_AddMember()
	{	Command = EM_PG_Party_ChattoC_AddMember;	};
};
//-------------------------------------------------------------------
// Chat -> C 移除Party成員
struct PG_Party_ChattoC_DelMember
{
	GamePGCommandEnum	Command;
	PartyMemberInfoStruct Member;
	//StaticString <_MAX_NAMESTRING_LEN_> DelMemberName;

	PG_Party_ChattoC_DelMember()
	{	Command = EM_PG_Party_ChattoC_DelMember;	};
};
//-------------------------------------------------------------------
// Chat -> C 更新成員資訊
struct PG_Party_ChattoC_FixMember
{
	GamePGCommandEnum	Command;
	int					PartyID;
	PartyMemberInfoStruct Member;

	PG_Party_ChattoC_FixMember()
	{	Command = EM_PG_Party_ChattoC_FixMember;	};
};
//-------------------------------------------------------------------
// 其他
//-------------------------------------------------------------------
// C -> Chat 踢除 隊伍成員
struct PG_Party_CtoChat_KickMember
{
	GamePGCommandEnum	Command;	
	StaticString <_MAX_NAMESTRING_LEN_> MemberName;

	PG_Party_CtoChat_KickMember()
	{	Command = EM_PG_Party_CtoChat_KickMember;	};
};
//-------------------------------------------------------------------
// C -> Chat 設定隊伍規則
struct PG_Party_CtoChat_PartyRule
{
	GamePGCommandEnum	Command;	
	PartyBaseInfoStruct PartyInfo;

	PG_Party_CtoChat_PartyRule()
	{	Command = EM_PG_Party_CtoChat_PartyRule;	};
};
//-------------------------------------------------------------------
// Party成員相關資訊
//-------------------------------------------------------------------
struct PartyMemberBaseInfo
{
	StaticString <_MAX_NAMESTRING_LEN_> Name;
	int		HP,MP,SP;
	int		MaxHP,MaxMP,MaxSP;
};
struct PG_Party_LtoC_PartyMemberInfo
{
	GamePGCommandEnum	Command;	
	
	PartyMemberBaseInfo Info;

	PG_Party_LtoC_PartyMemberInfo()
	{	Command = EM_PG_Party_LtoC_PartyMemberInfo;	};
};
//-------------------------------------------------------------------
//隊伍戰利品相關封包 ( 測試 )
//-------------------------------------------------------------------
// L -> Chat Party內獲得戰利品
struct PG_Party_LtoChat_PartyTreasure
{
	GamePGCommandEnum	Command;

	int					PartyID;
	ItemFieldStruct		Item;
//	int					LootDBID[ _MAX_PARTY_COUNT_ ];	//有權利的DBID
	StaticVector< int , _MAX_PARTY_COUNT_  > LootDBID;

	PG_Party_LtoChat_PartyTreasure()
	{	Command = EM_PG_Party_LtoChat_PartyTreasure;	};
};
//-------------------------------------------------------------------
// Chat -> C Party內獲得戰利品
struct PG_Party_ChattoC_PartyTreasure
{
	GamePGCommandEnum	Command;	
	int					ItemVersion;
	ItemFieldStruct		Item;
//	int					LootDBID[ _MAX_PARTY_COUNT_ ];	//有權利的DBID
	StaticVector< int , _MAX_PARTY_COUNT_  > LootDBID;
	PartyItemShareENUM	LootType;	//模式

	PG_Party_ChattoC_PartyTreasure()
	{	Command = EM_PG_Party_ChattoC_PartyTreasure;	};
};
//-------------------------------------------------------------------
// Chat -> C Party內獲得戰利品
struct PG_Party_ChattoC_PartyTreasureLoot
{
	GamePGCommandEnum	Command;	
	int					ItemVersion;
	int					DBID;		//那個玩家
	int					LootValue;	//0   代表放棄

	PG_Party_ChattoC_PartyTreasureLoot()
	{	Command = EM_PG_Party_ChattoC_PartyTreasureLoot;	};
};
//-------------------------------------------------------------------
enum  PartyTreasureLootTypeENUM
{
	EM_PartyTreasureLootType_Loot	,
	EM_PartyTreasureLootType_Pass	,	

	EM_PartyTreasureLootType_Assist	,	//指定
	EM_PartyTreasureLootType_Loot_NotNeed	,	//非必要
};
// C -> Chat	設定骰子
struct PG_Party_CtoChat_PartyTreasureLoot
{
	GamePGCommandEnum	Command;	
	int					ItemVersion;
	PartyTreasureLootTypeENUM Type;
	int					DBID;			//指定那個玩家(EM_PartyTreasureLootType_Assist 才有效 )

	PG_Party_CtoChat_PartyTreasureLoot()
	{	Command = EM_PG_Party_CtoChat_PartyTreasureLoot;	};
};


//-------------------------------------------------------------------
// Chat -> L 某人得到物品
struct PG_Party_ChattoL_GiveItem
{
	GamePGCommandEnum	Command;	

	int					DBID;
	int					GItemID;
	ItemFieldStruct		Item;	

	PG_Party_ChattoL_GiveItem()
	{	Command = EM_PG_Party_ChattoL_GiveItem;	};
};
//-------------------------------------------------------------------
// Chat -> L 某人得到物品
struct PG_Party_ChattoC_GiveItemInfo
{
	GamePGCommandEnum	Command;	

	int					DBID;
	ItemFieldStruct		Item;	
	int					Version;

	PG_Party_ChattoC_GiveItemInfo()
	{	Command = EM_PG_Party_ChattoC_GiveItemInfo;	};
};
//-------------------------------------------------------------------
#pragma managed
