service.go 1022 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package leagueAttr
  2. import (
  3. "f1-game/internal/data"
  4. "f1-game/internal/types"
  5. "f1-game/nodes/map/internal/db"
  6. mapFacade "f1-game/nodes/map/internal/facade"
  7. )
  8. func Service() *service {
  9. return &service{}
  10. }
  11. type service struct {
  12. mapFacade.LeagueServiceBase[*db.MapLeagueTable]
  13. }
  14. func (p *service) OnInit(leagueTable *db.MapLeagueTable) {
  15. // 初始化联盟属性
  16. p.UpdateAttrs(leagueTable)
  17. leagueTable.Save2Queue()
  18. }
  19. // 更新联盟属性
  20. func (p *service) UpdateAttrs(leagueTable *db.MapLeagueTable) {
  21. attrs := types.NewAttrs()
  22. // 联盟等级属性
  23. if leagueLevelRow, found := data.LeagueLevel.GetByLevel(leagueTable.LeagueInfo.Level); found {
  24. for k, v := range leagueLevelRow.LevelAttrs {
  25. attrs.Add(k, v)
  26. }
  27. }
  28. // 联盟科技对应等级的属性
  29. for _, tech := range leagueTable.Techs.Techs {
  30. if levelRow, ok := data.LeagueTechLevel.GetByTechIDLevel(tech.TechID, tech.Level); ok {
  31. for k, v := range levelRow.Attrs {
  32. attrs.Add(k, v)
  33. }
  34. }
  35. }
  36. leagueTable.LeagueInfo.Attrs = attrs
  37. }