package achieve import ( "f1-game/internal/data" "f1-game/internal/enum" "f1-game/internal/facade" "f1-game/internal/sessions" "f1-game/nodes/game/internal/db" "f1-game/nodes/game/player/quest" clog "github.com/cherry-game/cherry/logger" cproto "github.com/cherry-game/cherry/net/proto" ) type service struct { facade.PlayerServiceBase[*db.PlayerTable] } func Service() *service { return &service{} } func (p *service) OnLogined(playerTable *db.PlayerTable, session *cproto.Session) { // 不是新创角 if !session.Contains(sessions.IsNewPlayer) { return } // 初始化赛季成就任务 for _, row := range data.QuestAchieveType.List() { // 不是个人任务 跳过 if row.AchieveType != int32(enum.QuestAchieveType_Personal) { continue } // 累计任务 quest.Service().TriggerOpenGroup(playerTable.PlayerID, row.CumAchieveGroupID) achievePoolList, found := data.QuestAchievePool.ListByPoolID(row.AchievePool) if !found { clog.Warnf("add personal achieve quest fail. playerID:%d, groupID:%d", playerTable.PlayerID, row.CumAchieveGroupID) continue } // 添加成就任务 for _, achievePoolRow := range achievePoolList { for _, groupID := range achievePoolRow.QuestGroupIDs { quest.Service().TriggerOpenGroup(playerTable.PlayerID, groupID) } } } clog.Infof("init personal achieve quest finish. playerID:%d", playerTable.PlayerID) }