syntax = "proto3";
option go_package = ".;pb";
import "hero_db.proto";
import "comm.proto";

//英雄基础信息
message HeroInfoReq {
  string uid = 1; // uid 查自己不传也可以
  repeated string heroId = 2; //英雄唯一ID
}
message HeroInfoResp {
  string uid = 1; 
  repeated DBHero base = 2;
}

//英雄列表
message HeroListReq {}

message HeroListResp { repeated DBHero list = 1; }

/// 卡牌养成: 强化(卡牌升级、卡牌升星、技能升级)
/// 卡牌养成: 共鸣(共鸣消耗、材料返回、能量点使用)
/// 卡牌养成: 觉醒(英雄觉醒、材料消耗)

message MapStringInt32 {
  string Key = 1;
  int32 Value = 2;
}

// 卡牌升级
message HeroStrengthenUplvReq {
  string heroObjID = 1; // 英雄对象ID
  map<string,int32> item = 2;// key itemid value 数量
}

// 卡牌升级返回
message HeroStrengthenUplvResp {
  DBHero hero = 1; // 英雄对象
}

// 卡牌升星
message HeroStrengthenUpStarReq {
  string heroObjID = 1;               // 英雄对象ID
}

// 卡牌升星返回
message HeroStrengthenUpStarResp {
  DBHero hero = 1; // 英雄对象
}

// 卡牌技能升级
message HeroStrengthenUpSkillReq {
  string heroObjID = 1;   // 英雄对象ID
  repeated string item = 2;// 
}

// 卡牌技能升级返回
message HeroStrengthenUpSkillResp {
  DBHero hero = 1; // 英雄对象
}

// 觉醒
message HeroAwakenReq {
  string heroObjID = 1; // 英雄对象ID
}

// 觉醒返回
message HeroAwakenResp {
  DBHero hero = 1; // 英雄对象
}


//英雄属性推送
message HeroPropertyPush {
  string heroId = 1;                  //英雄唯一ID
  map<string, int32> property = 2;    //基础属性
  map<string, int32> addProperty = 3; //附加属性
}

// 英雄锁定
message HeroLockReq { string heroid = 1; }

// 英雄锁定返回
message HeroLockResp {
  DBHero hero = 1; // 英雄对象
}

// 测试用（获取指定星级等级的英雄）
message HeroGetSpecifiedReq {
  string heroCoinfigID = 1; // 英雄配置ID
  int32 Amount = 2;        // 数量
  int32 star = 3;          // 星级
  int32 lv = 4;            // 等级
}

message HeroGetSpecifiedResp {
  DBHero hero = 1; // 英雄对象
}

// 抽卡
message HeroDrawCardReq { 
  int32 drawType = 1; // 抽卡类型 0 普通
  int32 drawCount = 2;// 抽卡次数
}

message AtnoData{
  repeated UserAtno atno = 1; 
}
message HeroDrawCardResp { 
  repeated AtnoData data = 1;
}

// 英雄变化推送
message HeroChangePush{
  repeated DBHero list = 1;
}

message HeroDrawCardFloorReq { 
}
// 获取抽卡保底次数
message HeroDrawCardFloorResp { 
  int32 star4 = 1;
  int32 star5 = 2;
  int32 onebuy = 3; // 单次购买次数
  int32 tenbuy = 4; // 十连购买次数
}

// 英雄融合
message HeroFusionReq{
  string heroId = 1; // 英雄配置表id
  map<string,int32> heros= 2; // key heroObjID value 数量
}

message HeroFusionResp{
  string heroid = 1; // 获得新英雄
}

// 天赋学习
message HeroTalentListReq { 

}

message HeroTalentListResp { 
  repeated DBHeroTalent telnet = 1;
}

// 天赋学习
message HeroTalentLearnReq { 
  int32 talentID = 1; // 天赋ID
  string objId = 2; // 对象唯一id
  string heroid = 3;  //配置表的英雄id
}

message HeroTalentLearnResp { 
  DBHeroTalent telnet = 1;
  int32 talentID = 2; // 刚学习的天赋ID
}

// 重置天赋
message HeroTalentResetReq { 
  string objId = 1; // 对象唯一id
}

message HeroTalentResetResp { 
  DBHeroTalent telnet = 1;
}

message HeroBuyReq{
  int32 buyType = 1; //类型
  int32 buyCount =2;// 购买的数量
}

message HeroBuyResp{
  bool IsSucc = 1; 
  int32 onebuy = 3; // 单次购买次数
  int32 tenbuy = 4; // 十连购买次数
}

// 首次获得英雄
message HeroFirstGetPush {
  repeated string heroId = 1;                  //英雄id
}