// 如果使用此注释，则使用proto3; 否则使用proto2
syntax = "proto3";

// 生成包名（服务器用）
option java_package = "com.game.fight.proto";
// 生成类名（服务器用）
option java_outer_classname = "FightProto";

// -------------------------------------Bean-------------------------------------

// 一场战斗日志Bean
message FightLogInfo{
	fixed64 logId = 1;// 日志唯一id
	bool isWin = 2;// 挑战者是否胜利
	int32 fightType = 3;// 战斗类型，1=pve关卡boss战斗，2=pvp好友切磋，3=pvp竞技场
	FighterPlayerInfo challenge = 4;// 挑战者英雄（玩家本人）
	repeated FighterPetInfo challengePetList = 5;// 挑战者宠物列表
	FighterPlayerInfo toChallenge = 6;// 被挑战者英雄（战斗者id > 0 = pvp : pve）
	repeated FighterPetInfo toChallengePetList = 7;// 被挑战者宠物列表
	repeated VsInfo vsList = 8;// 对战记录
}

// 战斗者玩家消息
message FighterPlayerInfo{
	fixed64 playerId = 1;// 战斗者唯一id(角色唯一id)
	string playerName = 2;// 角色名
	fixed32 fashionBody = 3;// 身体时装
	fixed32 fashionHand = 4;// 手时装
	int32 maxMp = 5;// 最大魔法
	int32 gender = 6;// 性别 0女 1男
}

// 战斗者宠物信息
message FighterPetInfo{
	fixed64 petId = 1;// 战斗者唯一id（宠物唯一id）
	fixed32 configId = 2;// 配置id
	fixed32 suitId = 3;// 套装id
	int32 maxHp = 4; // 最大血量
	int32 image = 5;// 宠物外观参数
	int32 hp = 6;// 当前血量
	int32 sourceType = 7;// 本源类型
}

// 一次回合对战数据
message VsInfo{
	repeated AtkInfo atkList = 1;// 攻击列表
	repeated SpriteInfo spriteList = 2;// 每回合开始所有玩家和存活的宠物的buff状态（其中只有技能属性无效，为0）
}

// 一次出手数据
message AtkInfo{
	bool isCrit = 1;// true=暴击
	SpriteInfo atk = 2;// 本次攻击者
	repeated SpriteInfo friendList = 3;// 攻击者朋友
	repeated SpriteInfo enemyList = 4;// 攻击者敌人
}

// 参战精灵对象
message SpriteInfo{
	fixed64 fighterId = 1;// 战斗者唯一id(玩家唯一id or 宠物唯一id)
	fixed32 skillId = 2;// 释放技能id(0=本轮不出手，1=普攻，其他=技能配置id)
	int32 hp = 3;//当前血量（只记录被直接攻击血量变化，其他从buff扣除）（如果此值和之前生命值对比为0，则表示0伤害，有可能是护盾效果）
	int32 mp = 4;// 当前魔法
	repeated BuffInfo buffList = 5;// 附加buff
}

// 一个buff
message BuffInfo{
	int32 type = 1;// buff类型（技能配置表定义类型）
	int32 value = 2;// buff值（伤害类型的buff，如果值为0，不掉血，比如类型47）
	int32 num = 3;// buff持续时间
}

// -------------------------------------请求消息-------------------------------------

// 请求一场战斗日志 msgId=108101		-----返回消息  msgId=108201
message ReqFightLogInfo{
	fixed64 logId = 1;// 战斗日志唯一id
}

// 请求跨服竞技场战斗录像 msgId=108102		-----返回消息 msgId=108201
message ReqArenaPublicFightLog{
	fixed64 logId = 1;// 战斗日志唯一id
}

// -------------------------------------返回消息-------------------------------------

// 返回一场战斗日志 msgId=108201
message ResFightLogInfo{
	FightLogInfo logInfo = 1;// 战斗日志数据
}

// 返回一场跨服竞技场战斗日志 msgId=108202
message ResArenaPublicFightLog{
	int64 guessPlayerId = 1;// 竞猜玩家id
	FightLogInfo logInfo = 2;// 战斗日志数据
}

