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