package msg

import "leafstalk/covenant/model"

// EnterChapter 进入章节
type EnterChapter struct {
	PlayerId int64 `json:"userId"`
	Id       int64 `json:"id"` // 关卡id
	// chapter
	ChapterId int64                       `json:"chapterId"`
	Players   *model.EnterChapterDataItem `json:"players"`
}

type ResponseEnterChapter struct {
	ErrCode int              `json:"errCode"`
	Msg     string           `json:"msg,omitempty"`
	Data    EnterChapterData `json:"data"`
}

type EnterChapterData struct {
	Seed     int64                         `json:"seed"`
	LevelId  int64                         `json:"chapterId"`
	BattleId int64                         `json:"battleId,string"`
	Players  []*model.EnterChapterDataItem `json:"players"`
}

// type EnterChapterDataItem struct {
// 	PlayerId  int64                             `json:"userId"`
// 	HeadId    int64                             `json:"headId"`
// 	FrameId   int64                             `json:"frameId"`
// 	Nick      string                            `json:"nick"`
// 	Heros     map[int64]*Hero                   `json:"heros"`
// 	Fort      *EntryDataFort                    `json:"fort"`
// 	Runes     map[string]*model.BagRune         `json:"runes"`
// 	Treasures map[int64]*model.GrowableTreasure `json:"treasures"`

// 	Resonances []*model.GrowableResonance `json:"resonances"`
// 	Renown     int64                      `json:"renown"`
// 	Arenas     model.ClientArena          `json:"arenas"`
// 	ArenaSkins map[int64]int64            `json:"arenaSkins"`
// 	Legend     *model.LegendCalc          `json:"legend"`
// }

// // 章节结算预览 暂不实现
// type ChapterSettlePreview struct {
// 	PlayerId int64 `json:"userId"`
// 	Id       int64 `json:"id"`      // 关卡id
// 	Wave     int64 `json:"wave"`    //通过波数
// 	Rewards  int64 `json:"rewards"` // 多倍奖励原因 0：无多倍奖励；1：广告
// }
// type ResponseChapterSettlePreview struct {
// 	ErrCode int               `json:"errCode"`
// 	Msg     string            `json:"msg,omitempty"`
// 	Data    ChapterSettleData `json:"data"`
// }

// 章节结算
type ChapterSettle struct {
	PlayerId int64                 `json:"userId"`
	Id       int64                 `json:"id"`              // 关卡id
	Wave     int64                 `json:"wave"`            // 通过波数
	Rewards  int64                 `json:"rewards"`         // 多倍奖励原因 0：无多倍奖励；1：广告
	BattleId int64                 `json:"battleId,string"` // 战斗ID
	FriendId int64                 `json:"friendId"`        // 好友id 以下服务端填充用
	Score    int64                 `json:"score"`           // 积分
	Players  []*model.PersonalItem `json:"players"`         // 参战玩家
}

// type PersonalItem struct {
// 	PlayerID int64  `json:"playerId"`
// 	HeadId   int    `json:"headId"`  // 头像 -1 代表使用 AvatarURL 微信授权头像
// 	FrameId  int    `json:"frameId"` // 头像框
// 	NickName string `json:"nickName"`
// 	Level    int    `json:"level"`
// }

type ResponseChapterSettle struct {
	ErrCode int               `json:"errCode"`
	Msg     string            `json:"msg,omitempty"`
	Data    ChapterSettleData `json:"data"`
}

type ChapterSettleData struct {
	Bundles *model.DropedBundle `json:"bundles"`
	Process *ChapterProcess     `json:"process"`
	// LevelReward *LevelReward        `json:"levelReward"` //升级奖励及等级信息
}

// type LevelReward struct {
// 	Level     int64           `json:"level"`
// 	Exp       int64           `json:"exp"`
// 	Materials map[int64]int64 `json:"materials"`
// }

// ProgressReward 领取关卡奖励
type ProgressReward struct {
	PlayerId int64 `json:"userId"`
	Id       int64 `json:"id"` // 关卡id
}

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

type ProgressRewardData struct {
	Id       int64               `json:"id"` // 关卡id
	Geted    int64               `json:"geted"`
	SubGeted int64               `json:"subGeted"`
	Bundles  *model.DropedBundle `json:"bundles"`
}

// ChapterSummary 章节详情
type ChapterSummary struct {
	PlayerId int64 `json:"userId"`
}

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

// type ChapterSummaryData struct {
// 	PlayerId int64 `json:"userId"`
// }

// 激活水晶
type ActiveCrystal struct {
	PlayerId int64 `json:"userId"`
	Id       int64 `json:"id"` // 水晶id
}

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

// 激活水晶奖励
type ActiveCrystalReward struct {
	PlayerId int64 `json:"userId"`
	Id       int64 `json:"id"` // 水晶id
}

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

type ActiveCrystalRewardData struct {
	Id        int64           `json:"id"` // 水晶id
	Materials map[int64]int64 `json:"materials"`
}

// 章节数据同步  暂不实现
type ChapterSync struct {
	PlayerId int64 `json:"userId"`
}

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

// 邀请联合作战
// C->S
type InviteCoop struct {
	PlayerId int64   `json:"userId"`
	LevelId  int64   `json:"levelId"`
	Friends  []int64 `json:"friends"`
	Code     string  `json:"code"`
}

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

// 通知被邀请方
// S->C
type InviteCoopNotify struct {
	ErrCode int             `json:"errCode"`
	Msg     string          `json:"msg,omitempty"`
	Data    *InviteCoopData `json:"data"`
}

type InviteCoopData struct {
	Invitees []int64            `json:"invitees,omitempty"`
	Inviter  model.PersonalItem `json:"inviter"`
	LevelId  int64              `json:"levelId"`
	Code     string             `json:"code"`
}

// 修改章节通过数、是否通关
type GmUpdateChapter struct {
	MsgId      string          `json:"msgId"`
	PlayerID   int64           `json:"userId"`
	Chapters   map[int64]int64 `json:"chapters"` // {类型:通关到的关卡id}
	OperatorId int64           `json:"operatorId"`
}

type ResponseGmUpdateChapter struct {
	ErrCode int    `json:"errCode"`
	MsgId   string `json:"msgId"`
}
