package model import ( "leafstalk/otherutils/deepcopy" "strconv" "time" "xorm.io/xorm" ) // 1 累计登录天数达[0]天 // 2 主角等级达到[0]级 // 3 激活[0]个天赋 // 4 累计获得[0]金币 // 5 累计消耗[0]钻石 // 6 [0]关卡通过第[0]层[0]次 // 7 主线关卡中击杀[0]个首领 // 8 招募达人:累计招募[0]次 // 9 局内英雄合成[0]次 // 10 英雄升级[0]次 // 11 宝物升级[0]次 // 12 局内强化[0]次 // 13 通关第[0]大章 // 14 获得[0]个神话英雄 // 15 累计购买[0]次体力 // 16 参与合作模式[0]次 // 17 关卡内击杀怪物[0]次 // 18 关卡内刷新[0]次 // 19 观看广告[0]次 // 20 宝物抽卡[0]次 // 21 符文强化[0]次 // 22 符文分解[0]次 // 23 通关主线[] const ( TaskTypeLogin = 1 // (已上报) TaskTypeLevel = 2 //传递主角等级(已上报) TaskTypeTalent = 3 //传递总天赋个数(已上报) TaskTypeGetCoin = 4 //传递变化值 正数(已上报) TaskTypeCostDiamond = 5 //传递变化值 正数(已上报) TaskTypeChapterWave = 6 //(已上报) TaskTypeKillBoss = 7 TaskTypeHeroRecruit = 8 //(已上报) TaskTypeHeroCompose = 9 TaskTypeHeroUpgrade = 10 //(已上报) TaskTypeArtifactUpgrade = 11 //(已上报) TaskTypeStrengthen = 12 TaskTypeChapterPass = 13 //传递总值 第几章节 TaskTypeGetMythicHero = 14 //传递总值 几个神话英雄 (已上报招募和购买) TaskTypeBuyStamina = 15 //传递变化值 购买次数的变化值(已上报) TaskTypeCoop = 16 TaskTypeKillMonster = 17 TaskTypeGameInRefresh = 18 TaskTypeAd = 19 TaskTypeTreasureRecruit = 20 //(已上报) TaskTypeRuneStrengthen = 21 TaskTypeRuneDecompose = 22 //(已上报) TaskTypeChapterLevelPass = 23 TaskTypeAnyHeroLevel = 24 //(已上报) TaskTypeFortLevel = 25 //(已上报) TaskTypeCooperationNormalPass = 26 TaskTypeCooperationHardPass = 27 TaskTypeCooperationNightmarePass = 28 TaskTypeElitePass = 29 TaskTypeAnyMainChapterPass = 30 TaskTypeArenaPass = 31 TaskTypeArenaVictory = 32 TaskTypeInviteEnterGame = 33 ) // type TaskType int64 const ( DailyTask int64 = iota + 1 WeeklyTask PeriodicTask ) type TaskStatus int const ( NotStarted TaskStatus = iota InProgress Completed Claimed ) func NewPlayerTasks() *PlayerTasks { return &PlayerTasks{ DailyTasks: make(map[int64]*TaskProgress), WeeklyTasks: make(map[int64]*TaskProgress), Achievements: make(map[int64]*TaskProgress), DailyActivity: ActivityReward{Progress: 0, DrawStatus: make(map[int64]int64)}, LastDailyRefresh: time.Now().Unix(), LastWeeklyRefresh: time.Now().Unix(), } } type PlayerTasks struct { Id int64 PlayerId int64 `xorm:"BIGINT index 'playerid'"` DailyTasks map[int64]*TaskProgress `xorm:"Text json 'dailyTasks'"` WeeklyTasks map[int64]*TaskProgress `xorm:"Text json 'weeklyTasks'"` DailyActivity ActivityReward `xorm:"Text json 'dailyActivity'"` Achievements map[int64]*TaskProgress `xorm:"Text json 'achievements'"` // 玩家的成就进度 LastDailyRefresh int64 `xorm:"BIGINT 'lastDailyRefresh'"` LastWeeklyRefresh int64 `xorm:"BIGINT 'lastWeeklyRefresh'"` } type TaskProgress struct { TaskID int64 `json:"taskId"` Progress int64 `json:"progress"` Status TaskStatus `json:"status"` Reward [][]int64 `json:"reward,omitempty"` } type ActivityReward struct { Progress int64 `json:"progress"` DrawStatus map[int64]int64 `json:"drawStatus"` } // type TaskReward struct { // ItemID int64 // Amount int64 // } // type Task struct { // ID int64 // Type TaskType // Description string // Goal int64 // Rewards []TaskReward // } func (m PlayerTasks) TableName() string { return "player_tasks" } // 需要保存的数据需确保在这里能复制到new1 中 //func (m *PlayerTasks) DeepCopy() interface{} { // new1 := new(PlayerTasks) // *new1 = *m // // return new1 //} func (m *PlayerTasks) QueryExist(eng *xorm.Engine) (bool, error) { player := new(PlayerTasks) player.PlayerId = m.PlayerId return eng.Exist(player) } func (m *PlayerTasks) UpdateDB(eng *xorm.Engine) (int64, error) { return eng.Where("playerid=?", m.PlayerId).AllCols().Update(m) } func (m *PlayerTasks) GetUniqueKey() string { //return m.UserId return strconv.FormatInt(m.PlayerId, 10) } func CopyPlayerTasks(old *PlayerTasks) *PlayerTasks { new2, err := deepcopy.Copy(old) // if err != nil { return nil } return new2.(*PlayerTasks) } // 任务表-Task exported from 日常任务配置.xlsx type Task struct { Uid int64 `json:"Uid"` // 唯一ID Type int64 `json:"Type"` // 大类 1-日常任务 2--挑战任务 Time int64 `json:"Time"` // 重置周期(天 Des string `json:"Des"` // 任务描述 TaskType int64 `json:"TaskType"` // 任务类型 Value []int64 `json:"Value"` // 任务参数 Reward [][]int64 `json:"Reward"` // 任务奖励 道具ID,数量 } // package model // 日常任务宝箱表-TaskBox exported from 日常任务配置.xlsx type TaskBox struct { Uid int64 `json:"Uid"` // 唯一ID Points int64 `json:"Points"` // 档位 Reward [][]int64 `json:"Reward"` // 奖励 道具ID,数量 } // package model // 任务表-TaskAc exported from 成就任务配置.xlsx type TaskAc struct { Uid int64 `json:"Uid"` // 唯一ID NextId int64 `json:"NextId"` // 下档任务ID Des string `json:"Des"` // 任务描述 TaskType int64 `json:"TaskType"` // 任务类型 Value []int64 `json:"Value"` // 任务参数 Reward [][]int64 `json:"Reward"` // 任务奖励 }