service.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. // 联盟建筑增加属性
  37. for _, build := range leagueTable.Builds.Builds {
  38. if mapBuildUpgradeRow, ok := data.MapBuildUpgrade.GetByConfigIDLevel(build.ConfigID, build.Level); ok {
  39. for k, v := range mapBuildUpgradeRow.LeagueBuildAttrs {
  40. attrs.Add(k, v)
  41. }
  42. }
  43. }
  44. leagueTable.LeagueInfo.Attrs = attrs
  45. }