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

//英雄基础信息
message HeroInfoReq {
  string heroId = 1; //英雄唯一ID
}
message HeroInfoResp { DBHero base = 1; }

//英雄列表
message HeroListReq {}

message HeroListResp { repeated DBHero list = 1; }

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

message ItemData {
  int32 itemId = 2; //物品Id
  int32 amount = 3; //数量
}

// 卡牌升级
message HeroStrengthenUplvReq {
  string heroObjID = 1; // 英雄对象ID
  string expCardID = 2; // 经验卡对象ID
  int32 amount = 3;     // 消耗经验卡数量}
}

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

message CostCardData {
  string costCardObj = 1; // 对象ID
  int32 amount = 2;       // 数量
}
// 卡牌升星
message HeroStrengthenUpStarReq {
  string heroObjID = 1;               // 英雄对象ID
  repeated CostCardData hero = 2;     // 消耗卡牌对象ID
  repeated CostCardData heroRace = 3; // 消耗种族卡牌对象ID
}

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

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

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

// 共鸣英雄
message HeroResonanceReq {
  string heroObjID = 1; // 英雄对象ID
  repeated string costObjID = 2; // 消耗对象
}

message HeroResonanceResp {
  DBHero hero = 1;       // 英雄对象
  int32 energy = 2;      // 共鸣成功 获得的能量点数
  DBHero upStarCard = 3; //共鸣成功 获得的升星卡
}

// 重置共鸣属性
message HeroResonanceResetReq {
  string heroObjID = 1; // 英雄对象ID
}

message HeroResonanceResetResp {
  DBHero hero = 1;  // 英雄对象
  int32 energy = 2; // 能量点数
}

// 使用能量点数
message HeroResonanceUseEnergyReq {
  string heroObjID = 1; // 英雄对象ID
  int32 useEnergy = 2;  // 使用的能量点数
  int32 useType = 3;    // 使用的类型 （攻击、血量、防御）
}

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

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

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

//抽卡
message HeroChoukaReq { repeated int32 heroIds = 1; }

message HeroChoukaResp { repeated DBHero heroes = 1; }

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

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

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