package msg

// HeroRecruit 英雄招募
type HeroRecruit struct {
	PlayerId int64 `json:"userId"`
	Num      int64 `json:"num"`    // 招募倍数 单次招募和10次招募
	IsSkip   int64 `json:"isSkip"` // 是否跳过动画 0否 1是
	Wave     int64 `json:"wave"`   // 第几次招募。 第1次招募需要消耗道具，如果第1次成功招募相应数量可免费进行第2次招募，以此类推第3次、4次...
}

type ResponseHeroRecruit struct {
	ErrCode int              `json:"errCode"`
	Msg     string           `json:"msg,omitempty"`
	Data    *HeroRecruitData `json:"data"`
}

// type HeroConvertData struct {
// 	HeroId    int64   `json:"heroId"`
// 	Materials []int64 `json:"materialId"` // 兑换道具id,数量
// 	Times     int64   `json:"times"`      // 兑换次数
// }

type HeroRecruitData struct {
	Shows     []int64         `json:"shows"`
	Gets      []int64         `json:"gets"`
	Costs     map[int64]int64 `json:"costs"`
	Heros     []*HeroItem     `json:"heros"`
	Treasures []*TreasureItem `json:"treasures"`
	Materials map[int64]int64 `json:"materials"`
	Converts  map[int64]int64 `json:"convert"`  //英雄ID：转化数量
	Score     int64           `json:"score"`    //积分
	Wave      int64           `json:"wave"`     //完成几次招募
	CountNum  int64           `json:"countNum"` //共招募几个道具

	// Step1 [14][2]int64 `json:"step1"` // 第一步：随机14个可招募道具结果 [[道具id,道具数量]]
	// Step3 []*Step3Item `json:"step3"` // 第三步：随机招募获得道具及数量结果 {Step1.index:[2001,1000]}
	// NextFree int64        `json:"nextFree"` // 是否可以免费继续招募 0否 1是
	// Step2    int64        `json:"step2"`    // 第二步：随机招募道具数量结果
}

type Step3Item struct {
	Index int64 `json:"index"` // Step1的下标
	ID    int64 `json:"id"`    // 道具id
	Num   int64 `json:"num"`   // 道具数量
	Flag  int64 `json:"flag"`  // 英雄是否为首次获得 1:获得新英雄  2：获得英雄但进行了转化  0：按Index取结果
}

const (
	FlagNewHero       = 1 // 1:获得新英雄
	FlagTransform     = 2 // 2：获得已有英雄全部进行了转化
	FlagHeroTransform = 3 // 2：获得新英雄并进行了转化
)

// HeroPointRecruit 积分招募
type HeroPointRecruit struct {
	PlayerId int64 `json:"userId"`
}

type ResponseHeroPointRecruit struct {
	ErrCode int                   `json:"errCode"`
	Msg     string                `json:"msg,omitempty"`
	Data    *HeroPointRecruitData `json:"data"`
}

type HeroPointRecruitData struct {
	Costs     map[int64]int64 `json:"costs"`
	Heros     []*HeroItem     `json:"heros"`
	Materials map[int64]int64 `json:"materials"`
	Converts  map[int64]int64 `json:"convert"` //英雄ID：转化数量

	// ID   int64 `json:"id"`   // 道具id
	// Num  int64 `json:"num"`  // 道具数量
	// Flag int64 `json:"flag"` // 英雄是否为首次获得 1:获得新英雄  2：获得英雄但进行了转化  0：按Index取结果
}

// TreasureRecruit 宝物招募
type TreasureRecruit struct {
	PlayerId int64 `json:"userId"`
	Num      int64 `json:"num"` // 招募次数
}

type ResponseTreasureRecruit struct {
	ErrCode int                  `json:"errCode"`
	Msg     string               `json:"msg,omitempty"`
	Data    *TreasureRecruitData `json:"data"`
}

type TreasureRecruitData struct {
	Materials map[int64]int64 `json:"materials"`
	Treausres []*TreasureItem `json:"treausres"`
	Cost      map[int64]int64 `json:"cost"`
}

type TreasureItem struct {
	Id    int64 `json:"id"`
	Level int64 `json:"level"` // 等级
	Star  int64 `json:"star"`  // 星级
}

type HeroItem struct {
	ID    int64 `json:"id"`
	Level int64 `json:"level"`
	Wear  int64 `json:"wear"`
}

// EpigraphRecruit 铭文招募
type EpigraphRecruit struct {
	PlayerId int64 `json:"userId"`
	Num      int64 `json:"num"` // 招募次数
}

type ResponseEpigraphRecruit struct {
	ErrCode int       `json:"errCode"`
	Msg     string    `json:"msg,omitempty"`
	Data    [][]int64 `json:"data"`
}
