service.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package achieve
  2. import (
  3. "f1-game/internal/data"
  4. "f1-game/internal/enum"
  5. "f1-game/internal/facade"
  6. "f1-game/internal/sessions"
  7. "f1-game/nodes/game/internal/db"
  8. "f1-game/nodes/game/player/quest"
  9. clog "github.com/cherry-game/cherry/logger"
  10. cproto "github.com/cherry-game/cherry/net/proto"
  11. )
  12. type service struct {
  13. facade.PlayerServiceBase[*db.PlayerTable]
  14. }
  15. func Service() *service {
  16. return &service{}
  17. }
  18. func (p *service) OnLogined(playerTable *db.PlayerTable, session *cproto.Session) {
  19. // 不是新创角
  20. if !session.Contains(sessions.IsNewPlayer) {
  21. return
  22. }
  23. // 初始化赛季成就任务
  24. for _, row := range data.QuestAchieveType.List() {
  25. // 不是个人任务 跳过
  26. if row.AchieveType != int32(enum.QuestAchieveType_Personal) {
  27. continue
  28. }
  29. // 累计任务
  30. quest.Service().TriggerOpenGroup(playerTable.PlayerID, row.CumAchieveGroupID)
  31. achievePoolList, found := data.QuestAchievePool.ListByPoolID(row.AchievePool)
  32. if !found {
  33. clog.Warnf("add personal achieve quest fail. playerID:%d, groupID:%d", playerTable.PlayerID, row.CumAchieveGroupID)
  34. continue
  35. }
  36. // 添加成就任务
  37. for _, achievePoolRow := range achievePoolList {
  38. for _, groupID := range achievePoolRow.QuestGroupIDs {
  39. quest.Service().TriggerOpenGroup(playerTable.PlayerID, groupID)
  40. }
  41. }
  42. }
  43. clog.Infof("init personal achieve quest finish. playerID:%d", playerTable.PlayerID)
  44. }