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

// 生成包名（服务器用）
option java_package = "com.game.pet.proto";
// 生成类名（服务器用）
option java_outer_classname = "PetProto";
// 引用apublicBean.proto
import "apublicBean.proto";
// 引用equipMessage.proto
import "equipMessage.proto";

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

// 宠物Bean
message PetInfo{
	fixed64 petId = 1;//宠物唯一id
	fixed32 configId = 2;//龙种配置id
	int32 lv = 3;//当前等级
	int32 exp = 4;//当前经验
	int32 gender = 5;//性别 0=雌 1=雄
	int32 mating = 6;//当前繁衍次数
	int32 matingLimit = 7;//最大繁衍次数
	int32 atkQuality = 8;//攻击品质
	int32 defQuality = 9;//防御品质
	int32 hpQuality = 10;//血量品质
	int32 spdQuality = 11;//速度品质
	int32 atkGrow = 12;// 攻击成长属性
	int32 defGrow = 13;// 防御成长属性
	int32 hpGrow = 14;// 血量成长属性
	int32 spdGrow = 15;// 速度成长属性
	int32 skillCount = 20;// 技能点
	int32 image = 21;// 外观形象参数
	fixed64 nextRegisterTime = 22;// 下一次登记繁衍时间戳
	fixed64 nextApplyTime = 23;// 下一次申请时间戳
	bool isLock = 24;// 是否已锁，true=已锁
	int32 qualityId = 25;// 品质id
	AttAllInfo attInfo = 26;//所有属性
	repeated int32 featureList = 27;//特征id列表
	repeated PetSkillInfo skillList = 28;// 技能列表
	repeated EquipInfo equipList = 29;// 穿戴装备列表
	int32 evoLv = 30;//进化等级
	int32 evoExp = 31;//进化经验
}

// 宠物技能Bean
message PetSkillInfo{
	fixed32 skillId = 1;// 技能配置id 
	int32 exp = 2;// 技能当前经验
	int32 type = 3;// 技能类型 1=专属技能 2=继承技能 3=领悟技能
	int32 upCount = 4;// 已进阶次数
}

//  上阵宠物格子Bean
message PetGridInfo{
	int32 gridId = 1;// 格子唯一id（第一个格子id=0，以此类推）
	fixed64 petId = 2;// 宠物唯一id（0表示没有上阵宠物）
}

// 宠物经验和等级发生变化Bean
message PetLvExpInfo{
	fixed64 petId = 1;//宠物唯一id
	int32 exp = 2;//当前经验
	int32 lv = 3;//当前等级
	int32 atk = 4;//升级后的攻击固定值（客户端判断升级才需要赋值下面的属性，否则节省流量，服务器发送0）
	int32 defense = 5;//升级后的防御固定值（升级才需要赋值，否则节省流量，服务器发送0）
	int32 speed = 6;//升级后的速度固定值（升级才需要赋值，否则节省流量，服务器发送0）
	int32 hp = 7;//升级后的血量固定值（升级才需要赋值，否则节省流量，服务器发送0）
	int32 force = 8;//升级后的战力（升级才需要赋值，否则节省流量，服务器发送0）
	int32 skillCount = 9;// 升级后的技能点（升级才需要赋值，否则节省流量，服务器发送0）
}

// 宠物技能经验和技能等级发生变化Bean
message PetSkillLvExpInfo{
	fixed64 petId = 1;//宠物唯一id
	int32 skillId = 2;//当前技能id
	int32 exp = 3;//当前技能经验
}

// 宠物蛋Bean
message EggInfo{
	fixed64 eggId = 1;// 宠物蛋唯一id
	fixed32 configId = 2;// 宠物蛋配置id
	int64 petId = 3;// 己方宠物唯一id（龙蛋己方父/母信息）
	bool isExist = 4;// 对方宠物是否存在（龙蛋对方方父/母信息，如果这里为false,表示对方宠物已经不在了，下面的数据不用读取）
	int32 toGender = 5;// 对方宠物性别 0=雌 1=雄
	int32 toMating = 6;//对方宠物当前繁衍次数
	int32 toMatingLimit = 7;//对方宠物最大繁衍次数
	int32 toAtk = 8;// 对方宠物攻击品质
	int32 toDef = 9;// 对方宠物防御品质
	int32 toHp = 10;// 对方宠物血量品质
	int32 toSpd = 11;// 对方宠物速度品质
	int32 toImage = 12;// 对方宠物外观形象参数
	int32 toSourceType = 13;// 对方宠物本源类型
	int32 toQualityId = 14;// 品质id
	repeated int32 toFeatureList = 15;// 对方宠物特征id列表
	repeated int32 toSkillList = 16;// 对方宠物技能id列表
}

// 大厅注册登记繁衍信息Bean
message PetRegisterInfo{
	fixed64 playerId = 1;// 玩家id
	string playerName = 2;// 玩家名字
	fixed64 petId = 3;// 宠物id
	int32 configId = 4;// 宠物种类
	int32 toGender = 5;// 对方宠物性别 0=雌 1=雄
	int32 toAtk = 6;// 对方宠物攻击品质
	int32 toDef = 7;// 对方宠物防御品质
	int32 toHp = 8;// 对方宠物血量品质
	int32 toSpd = 9;// 对方宠物速度品质
	int32 toImage = 10;// 对方宠物外观形象参数
	int32 toSourceType = 11;// 对方宠物本源类型
	int32 toQualityId = 12;// 品质id
	int32 toMating = 13;//对方宠物当前繁衍次数
	int32 toMatingLimit = 14;//对方宠物最大繁衍次数
	int32 endTime = 15;// 注册结束时间（秒）
	repeated int32 toFeatureList = 16;// 对方宠物特征id列表
	repeated int32 toSkillList = 17;// 对方宠物技能id列表
}

// 我的申请繁衍信息Bean
message PetMyApplyInfo{
	fixed64 petId = 1;// 宠物id
	PetRegisterInfo registerInfo = 2;// 别人宠物信息
}

// 别人申请繁衍信息Bean
message PetOthersApplyInfo{
	fixed64 playerId = 1;// 玩家id
	string playerName = 2;// 玩家名字
	fixed64 petId = 3;// 宠物id
	int32 configId = 4;// 宠物种类
	int32 toGender = 5;// 对方宠物性别 0=雌 1=雄
	int32 toAtk = 6;// 对方宠物攻击品质
	int32 toDef = 7;// 对方宠物防御品质
	int32 toHp = 8;// 对方宠物血量品质
	int32 toSpd = 9;// 对方宠物速度品质
	int32 toImage = 10;// 对方宠物外观形象参数
	int32 toSourceType = 11;// 对方宠物本源类型
	int32 toQualityId = 12;// 品质id
	int32 toMating = 13;//对方宠物当前繁衍次数
	int32 toMatingLimit = 14;//对方宠物最大繁衍次数
	repeated int32 toFeatureList = 15;// 对方宠物特征id列表
	repeated int32 toSkillList = 16;// 对方宠物技能id列表
}

// 宠物繁衍状态数量Bean
message PetMatingStateNum{
	fixed64 petId = 1;// 宠物唯一id
	int32 num = 2;// 收到的申请数
}

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

// 请求宠物初始创建（创建角色获得初始宠物） msgId=105101		-----返回成功消息msgId=105203
message ReqPetRandomCreate{
	
}

// 请求改变上阵宠物信息 msgId=105102		-----返回成功消息msgId=105202
message ReqPetAlterGrid{
	int32 type = 1;// 改变类型 1=上阵一只宠物 2=卸载一只宠物 3=宠物交换格子 ，列表第一个元素表示请求交换者（不能为空格子），第二个元素表示被交换者（可以为空格子）4=一键上阵
	repeated PetGridInfo gridList = 2;// 请求发生改变的格子（类型1、2列表长度为1，类型3类表长度为2，类型4表示一键上阵）
}

// 请求喂宠物吃干饭 msgId=105103		-----返回成功消息msgId=105204
message ReqPetFeed{
	fixed64 petId = 1;// 喂食的宠物唯一id
	repeated PropInfo propList = 2;//喂食食物列表（注意：只需要发送道具唯一id和数量,客户端做去重后再发送）
}

// 请求宠物合成 msgId=105104		-----返回成功消息msgId=105203
message ReqPetCompound{
	fixed64 propId = 1;// 合成碎片唯一id
}

// 请求喂宠物技能吃干饭（增加技能熟练度） msgId=105105		-----返回成功消息msgId=105205
message ReqPetSkillFeed{
	fixed64 petId = 1;// 增加技能熟练度的宠物唯一id
	repeated PropInfo propList = 2;//喂食食物列表（注意：只需要发送道具唯一id和数量,客户端做去重后再发送）
}

// 请求宠物领悟技能 msgId=105106		-----返回成功消息msgId=105206
message ReqPetStudySkill{
	fixed64 petId = 1;// 宠物唯一id
}

// 请求宠物重置技能 msgId=105107		-----返回成功消息msgId=105207
message ReqPetResetSkill{
	fixed64 petId = 1;// 宠物唯一id
	repeated int32 skillIdList = 2;// 保留技能id列表（注意：不能包含专属技能id）
}

// 请求宠物技能进阶 msgId=105108		-----返回成功消息msgId=105208
message ReqPetSkillUp{
	fixed64 petId = 1;// 宠物唯一id
	int32 skillId = 2;// 进阶技能id
}

// 请求宠物繁衍 msgId=105109		-----返回成功消息msgId=105209
message ReqPetMating {
	fixed64 petId1 = 1;// 宠物唯一id
	fixed64 petId2 = 2;// 宠物唯一id
	fixed64 lockSkillPetId = 3;// 需要锁定的宠物技能id，0表示没有锁定
	repeated int32 lockAttList = 4;// 锁定属性列表,14=攻击 15=防御 16=速度 17=血量
}

// 请求宠物进化吞噬 msgId=105110		-----返回成功消息msgId=105211
message ReqPetEvolve{
	fixed64 petId = 1;// 进化宠物唯一id
	repeated fixed64 bePetIdList = 2;// 消耗宠物id列表
}



// 请求宠物孵化 msgId=105111		-----返回成功消息msgId=105233
message ReqPetHatch{
	fixed64 eggId = 1;// 宠物蛋唯一id
}

// 请求宠物放生 msgId=105119		-----返回成功消息msgId=105218
message ReqPetFree{
	repeated fixed64 petIdList = 1;// 放生宠物唯一id列表
}

// 请求宠物锁操作 msgId=105120		-----返回成功消息msgId=105220
message ReqPetLock{
	fixed64 petId = 1;// 宠物唯一id
}

// 请求宠物快速繁衍 msgId=105121		-----返回成功消息msgId=105221(如果匹配成功，此成功消息返回给双方玩家)
message ReqPetSpeedMating{
	fixed64 petId = 1;// 我方宠物唯一id
}

// 请求宠物繁衍注册手动取消 msgId=105122		-----返回成功消息 给本人返回消息msgId=105222，如果取消此宠物有申请者，那么在取消时，给申请者发送消息msgId=105223
message ReqPetRegisterCancel{
	fixed64 petId = 1;// 我方宠物唯一id
}

// 请求宠物繁衍搜索 msgId=105123		-----返回成功消息msgId=105224
message ReqPetMatingSearch{
	fixed64 petId = 1;// 我方宠物唯一id
	bool isAutoMating = 2;// 是否自动繁衍 true=是
}

// 请求宠物申请繁衍 msgId=105124		-----返回成功消息msgId=105225,被申请放收到消息msgId=102202，code=20002（详细见配置表功能标识）
message ReqPetApplyMating{
	fixed64 petId = 1;// 请求方宠物唯一id
	fixed64 toPetId = 2;// 接收方宠物唯一id
	fixed64 lockSkillPetId = 3;// 锁定我方宠物id，0表示我方没有锁定（为了跟自己繁衍逻辑一致，如果锁定，发送己方宠物id）
	repeated int32 lockAttList = 4;// 锁定属性列表,14=攻击 15=防御 16=速度 17=血量
}

// 请求宠物申请繁衍手动取消 msgId=105125		-----返回成功消息msgId=105225
message ReqPetApplyMatingCancel{
	fixed64 petId = 1;// 请求方宠物唯一id
	fixed64 toPetId = 2;// 接收方宠物唯一id
}

// 请求宠物繁衍登记 msgId=105126		-----返回成功消息msgId=105226
message ReqPetRegister{
	fixed64 petId = 1;// 我方宠物唯一id
	bool isAutoMating = 2;// 是否自动繁衍 true=是
	fixed64 lockSkillPetId = 3;// 锁定我方宠物id，0表示我方没有锁定（为了跟自己繁衍逻辑一致，如果锁定，发送己方宠物id）
	repeated int32 lockAttList = 4;// 锁定属性列表,14=攻击 15=防御 16=速度 17=血量
}

// 请求宠物繁衍市场 msgId=105127		-----返回成功消息msgId=105227
message ReqPetMatingBazaar{
	int32 petType = 1;// 1=功，2=防，3=速，4=血（0=表示全部）
	int32 configId = 2;// 宠物配置id（0=表示全部）
	int32 gender = 3;// 宠物性别（0=表示全部，1=女，2=男）
	bool isAutoMating = 4;// 是否自动繁衍 true=是
	repeated int32 qualityIdList = 5;// 宠物品质id（空列表表示全部）
}

// 请求宠物繁衍数量 msgId=105128		-----返回成功消息msgId=105228
message ReqPetMatingStateNum{
	
}

// 请求宠物申请繁衍目标信息 msgId=105129		-----返回成功消息msgId=105229
message ReqPetMatingApplyTarget{
	fixed64 petId = 1;// 我方宠物唯一id
}

// 请求宠物繁衍申请列表 msgId=105130		-----返回成功消息msgId=105230
message ReqPetMatingApplyList{
	fixed64 petId = 1;// 我方宠物唯一id
}

// 请求宠物繁衍同意 msgId=105131		-----返回成功消息(双方都返回)msgId=105231，其他申请者返回msgId=105223
message ReqPetMatingConsent{
	fixed64 petId = 1;// 我方宠物唯一id
	fixed64 toPetId = 2;// 申请者宠物唯一id
}

// 请求宠物繁衍拒绝申请者 msgId=105132		-----返回成功消息我方返回msgId=105234，被拒绝方返回msgId=105223
message ReqPetMatingReject{
	fixed64 petId = 1;// 我方宠物唯一id
	fixed64 toPetId = 2;// 申请者宠物唯一id
}

// 请求宠物进化升级msgId=105133
message ReqPetEvoLvUp{
	fixed64 petId = 1;// 进化宠物唯一id
}

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

// 返回宠物所有信息（登录成功主动返回）msgId=105201
message ResPetAllInfo{
	repeated PetGridInfo gridList = 1;// 格子列表
	repeated PetInfo petList = 2;// 所有宠物列表
	repeated fixed64 drillPetIdList = 3;// 处于训练中的宠物唯一id列表
	repeated fixed64 expeditionPetIdList = 4;// 远征上阵宠物唯一id列表
}

// 返回宠物格子信息 msgId=105202
message ResPetGridInfo{
	int32 type = 1;// 返回类型 1=增加 3=修改
	repeated PetGridInfo gridList = 2;// 返回增加或者发生改变的格子
}

// 返回单个宠物信息 msgId=105203
message ResPetInfo{
	int32 type = 1;// 返回类型 1=增加 2=删除 3=修改 4=查看
	PetInfo petInfo = 2;// 宠物
}

// 返回宠物等级和经验信息（此消息在宠物经验发生变化就会返回给客户端） msgId=105204
message ResPetLvExpInfo{
	repeated PetLvExpInfo infoList = 1;// 发生变化的宠物列表
}

// 返回宠物技能等级和技能经验信息（此消息在宠物技能经验发生变化就会返回给客户端） msgId=105205
message ResPetSkillLvExpInfo{
	repeated PetSkillLvExpInfo infoList = 1;// 发生变化的宠物列表
}

// 返回宠物领悟技能 msgId=105206
message ResPetStudySkill{
	fixed64 petId = 1;// 宠物唯一id
	int32 skillCount = 2;// 剩余技能点
	PetSkillInfo skill = 3;// 领悟的技能（如果技能id=0，表示领悟失败）
}

// 返回宠物重置技能 msgId=105207
message ResPetResetSkill{
	fixed64 petId = 1;// 宠物唯一id
	int32 skillCount = 2;// 剩余技能点
	repeated PetSkillInfo skillList = 3;// 当前拥有的技能列表
}

// 返回宠物技能进阶 msgId=105208
message ResPetSkillUp{
	fixed64 petId = 1;// 宠物唯一id
	int32 skillId = 2;// 进阶之前的技能id
	PetSkillInfo skill = 3;// 进阶后的技能（如果技能id=0，表示进阶失败）
}

// 返回宠物繁衍 msgId=105209
message ResPetMating{
	fixed64 petId1 = 1;// 宠物1唯一id
	int32 mating1 = 2;// 宠物1当前繁衍次数
	fixed64 petId2 = 3;// 宠物2唯一id
	int32 mating2 = 4;// 宠物2当前繁衍次数
	EggInfo egg = 5;// 宠物蛋信息（需要客户端自己把这个龙蛋数据放入背包）
}

// 返回宠物当前繁衍次数 msgId=105210
message ResPetAddMatingCount{
	fixed64 petId = 1;// 宠物唯一id
	int32 matingCount = 2;// 当前已繁衍次数
}

// 返回宠物进化吞噬 msgId=105211
message ResPetEvolve{
	fixed64 petId = 1;// 进化宠物唯一id
	int32 evoExp = 2;// 总进化经验
	
}

// 返回宠物放生 msgId=105218
message ResPetFree{
	repeated fixed64 petIdList = 1;// 放生宠物唯一id列表
}

// 返回宠物属性更新 msgId=105219
message ResPetUpdateAtt{
	repeated PetAttAllInfo attInfoList = 1;// 宠物属性发生变化的列表
}

// 返回宠物锁操作 msgId=105220
message ResPetLock{
	fixed64 petId = 1;// 宠物唯一id
	bool isLock = 2;// 是否已锁，true=已锁
}

// 返回宠物快速繁衍 msgId=105221
message ResPetSpeedMating{
	fixed64 petId = 1;// 我方宠物唯一id
	int64 nextRegisterTime = 2;// 我方宠物下一次登记繁衍时间戳（未注册登记繁衍值为0，否则此值表示下架时间戳）
	bool isSuccess = 3;// 是否快速匹配成功（如果为true，才去读取下面的数据）
	int32 mating = 4;// 我方当前繁衍次数
	EggInfo eggInfo = 5;// 获得的龙蛋（需要客户端自己把这个龙蛋数据放入背包）
}

// 返回宠物繁衍注册手动取消 msgId=105222
message ResPetRegisterCancel{
	fixed64 petId = 1;// 我方宠物唯一id(客户端收到此消息，表示取消成功，把本地的宠物的下一次注册时间 nextRegisterTime 值设置为0))
}

// 返回宠物繁衍申请被拒绝 msgId=105223
message ResPetMatingApplyBeReject{
	fixed64 petId = 1;// 我方宠物唯一id(客户端收到此消息，表示被拒绝，把本地的宠物的下一次申请时间 nextApplyTime 值设置为0))
}

// 返回宠物繁衍搜索 msgId=105224
message ResPetMatingSearch{
	repeated PetRegisterInfo registerList = 1;// 搜索结果列表(需要客户端自行排序)
}

// 返回宠物申请繁衍 msgId=105225
message ResPetApplyMating{
	fixed64 petId = 1;// 申请繁衍的宠物唯一id
	fixed64 nextApplyTime = 2;// 下一次申请时间戳(此时间大于当前时间，才表示申请成功，做申请成功处理)
}

// 返回宠物繁衍登记 msgId=105226
message ResPetRegister{
	fixed64 petId = 1;// 注册繁衍登记的宠物唯一id
	fixed64 nextRegisterTime = 2;// 下一次登记繁衍时间戳(此时间大于当前时间，才表示登记成功，做登记成功处理)
}

// 返回宠物繁衍市场 msgId=105227
message ResPetMatingBazaar{
	repeated PetRegisterInfo registerList = 1;// 搜索结果列表(需要客户端自行排序)
}

// 返回宠物繁衍数量 msgId=105228
message ResPetMatingStateNum{
	repeated PetMatingStateNum stateList = 1;// 状态数量列表
}

// 返回宠物申请繁衍目标信息 msgId=105229
message ResPetMatingApplyTarget{
	PetMyApplyInfo info = 1;// 申请信息
	int32 lockNum = 2;// 锁定消耗的道具数量
	fixed64 lockSkillPetId = 3;// 锁定我方宠物id，0表示我方没有锁定（为了跟自己繁衍逻辑一致，如果锁定，发送己方宠物id）
	repeated int32 lockAttList = 4;// 锁定属性列表 14=攻击 15=防御 16=速度 17=血量
}

// 返回宠物繁衍申请列表 msgId=105230
message ResPetMatingApplyList{
	fixed64 petId = 1;// 我的宠物唯一id
	int32 lockNum = 2;// 锁定消耗的道具数量
	fixed64 lockSkillPetId = 3;// 锁定我方宠物id，0表示我方没有锁定（为了跟自己繁衍逻辑一致，如果锁定，发送己方宠物id）
	repeated int32 lockAttList = 4;// 锁定属性列表 14=攻击 15=防御 16=速度 17=血量
	repeated PetOthersApplyInfo applyList = 5;// 申请列表
}

// 返回宠物繁衍同意 msgId=105231
message ResPetMatingConsent{
	fixed64 petId = 1;// 我方宠物唯一id（同意者和申请者都会受到此消息，客户端把下一次注册时间nextRegisterTime，和下一次申请时间nextApplyTime，设置为0）
	int32 mating = 2;// 我方当前繁衍次数
	EggInfo eggInfo = 3;// 获得的龙蛋（需要客户端自己把这个龙蛋数据放入背包）
}

// 返回宠物繁衍登记或申请超时 msgId=105232(客户端全局监听)
message ResPetMatingTimeout{
	fixed64 petId = 1;// 我的宠物唯一id(客户端把下一次注册时间nextRegisterTime，和下一次申请时间nextApplyTime，设置为0)
}

// 返回宠物孵化 msgId=105233
message ResPetHatch{
	PetInfo petInfo = 1;// 宠物(客户端自行加入宠物列表)
}

// 返回宠物繁衍拒绝申请者 msgId=105234
message ResPetMatingReject{
	fixed64 petId = 1;// 我方宠物唯一id
	fixed64 toPetId = 2;// 申请者宠物唯一id
}

//返回宠物进化升级 msgId=105235
message ResPetEvoLvUp{
	fixed64 petId = 1;// 进化宠物唯一id
	repeated int32 growAttValue = 2;// 进化后属性(依次为生命、攻击、防御、速度)
	int32 force = 3;// 战力
	int32 evoExp = 4;// 总进化经验
	int32 evoLv = 5;//进化等级
	
}


