#pragma once

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

//-----------------------------------------------------------------------------------------
// Client -> Local
// 通知Server Client 目前攻擊狀態

struct PG_Attack_CtoL_AttackSignal
{
    GamePGCommandEnum	Command;
    Int32				TargetID;		//攻擊目標
  

    PG_Attack_CtoL_AttackSignal()
    {	Command = EM_PG_Attack_CtoL_AttackSignal;	}
};
//-----------------------------------------------------------------------------------------
// Local -> Client
// 回應要求攻擊結果
enum AttackSignalResultENUM
{
    EM_AttackSignalResult_OK                    ,
    EM_AttackSignalResult_TargetDisAttackAbled  ,   //目標不可攻擊
    EM_AttackSignalResult_TargetNULL            ,   //無此目標

};

struct PG_Attack_LtoC_AttackSignalResult
{
    GamePGCommandEnum	    Command;
    Int32				    TargetID;		//攻擊目標
    AttackSignalResultENUM  Result;

    PG_Attack_LtoC_AttackSignalResult()
    {	Command = EM_PG_Attack_LtoC_AttackSignalResult;	}
};
//-----------------------------------------------------------------------------------------
// Client -> Local
// 通知Server Client 結束戰鬥

struct PG_Attack_CtoL_EndAttackSignal
{
    GamePGCommandEnum	Command;

    PG_Attack_CtoL_EndAttackSignal()
    {	Command = EM_PG_Attack_CtoL_EndAttackSignal;	}
};
//-----------------------------------------------------------------------------------------
// Local -> Client
// 通知周圍的玩家攻擊命中或失敗的訊息

struct PG_Attack_LtoC_AttackResult
{
    GamePGCommandEnum	Command;

    Int32		AttackID;		//攻擊者
    Int32		UnderAttackID;	//被攻擊者
    Int32		DamageHP;		//HP

    ATTACK_DMGTYPE_ENUM	Type;
	AttackHandTypeENUM	HandType;

    PG_Attack_LtoC_AttackResult()
    {	Command = EM_PG_Attack_LtoC_AttackResult;	}
};

//-----------------------------------------------------------------------------------------
// Local -> Client
// HP MP 數值變化時更新( 本身 隊友 範圍 )
struct PG_Attack_LtoC_HPMP
{
    GamePGCommandEnum	Command;

    Int32		ItemID;		//區域ID
    Int32		HP;
    Int32		MP;
    Int32       SP;
	Int32		SP_Sub;

    PG_Attack_LtoC_HPMP()
    {	Command = EM_PG_Attack_LtoC_HPMPSP;	}
};
//-----------------------------------------------------------------------------------------
// Local -> Client 
// 通知 玩家某　MaxHP , MaxMP 的資訊
struct PG_Attack_LtoC_MaxHPMaxMP
{
    GamePGCommandEnum	Command;

    Int32		ItemID;		//區域ID
    Int32		MaxHP;
    Int32		MaxMP;
    Int32		MaxSP;
	Int32		MaxSP_Sub;

    PG_Attack_LtoC_MaxHPMaxMP()
    {	Command = EM_PG_Attack_LtoC_MaxHPMaxMPMaxSP;	}
};

//-----------------------------------------------------------------------------------------
// Local -> Client 
// 通知某物件死亡
struct PG_Attack_LtoC_Dead
{
    GamePGCommandEnum	Command;

    Int32		DeadID;		//區域ID
    Int32		KillerID;	//殺人者
    Int32       Time;
	RolePosStruct       Pos;

    PG_Attack_LtoC_Dead()
    {	Command = EM_PG_Attack_LtoC_Dead;	}
};
//-----------------------------------------------------------------------------------------
// Local -> Client 
// 通知某物件復活
struct PG_Attack_LtoC_Resurrection
{
    GamePGCommandEnum	Command;

    Int32		ItemID;		//區域ID

    PG_Attack_LtoC_Resurrection()
    {	Command = EM_PG_Attack_LtoC_Resurrection;	}
};
//-----------------------------------------------------------------------------------------
//死亡回到重生點(放棄等待復活)
// Client -> Local
struct PG_Attack_CtoL_RequestResurrection
{
    GamePGCommandEnum	Command;

    PG_Attack_CtoL_RequestResurrection()
    {	Command = EM_PG_Attack_CtoL_RequestResurrection;	}
};
//-----------------------------------------------------------------------------------------
/*
struct PG_Attack_CtoL_SetAttackMode
{
    GamePGCommandEnum	Command;
    bool                Result;

    PG_Attack_CtoL_SetAttackMode()
    {	Command = EM_PG_Attack_CtoL_SetAttackMode;	}
};
*/
//-----------------------------------------------------------------------------------------
// L -> C 通知Party成員的HPMPSP資訊
struct PG_Attack_LtoC_PartyMemberHPMPSP
{
	GamePGCommandEnum	Command;	

	int		DBID;
	int		HP,MP,SP,SP_Sub;		

	PG_Attack_LtoC_PartyMemberHPMPSP()
	{	Command = EM_PG_Attack_LtoC_PartyMemberHPMPSP;	};
};
// L -> C 通知Party成員的Max HPMPSP資訊
struct PG_Attack_LtoC_PartyMemberMaxHPMPSP
{
	GamePGCommandEnum	Command;	

	int		DBID;
	int		MaxHP,MaxMP,MaxSP,MaxSP_Sub;		

	PG_Attack_LtoC_PartyMemberMaxHPMPSP()
	{	Command = EM_PG_Attack_LtoC_PartyMemberMaxHPMPSP;	};
};
//-----------------------------------------------------------------------------------------
#pragma managed
