extend_fetter.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package data
  2. import (
  3. "f1-game/internal/enum"
  4. "f1-game/internal/types"
  5. )
  6. // 兵种类型等级配置 key 兵种来源 value [key 等级 value *ArmTypeRow]
  7. var heroFetterMap map[int32]types.Set[int32]
  8. func (p *heroFetterConfig) OnAfterLoad(_ bool) {
  9. tempHeroFetterMap := map[int32]types.Set[int32]{}
  10. for _, row := range p.list {
  11. for _, heroID := range row.HeroIDs {
  12. fetterSet := tempHeroFetterMap[heroID]
  13. if fetterSet == nil {
  14. fetterSet = types.NewSet[int32]()
  15. tempHeroFetterMap[heroID] = fetterSet
  16. }
  17. fetterSet.Add(row.ID)
  18. }
  19. }
  20. heroFetterMap = tempHeroFetterMap
  21. }
  22. // 通过英雄id获取羁绊id列表
  23. func (p *heroFetterConfig) GetFetterIDs(heroID int32) types.Set[int32] {
  24. return heroFetterMap[heroID]
  25. }
  26. // 获取怪物属性
  27. func (p *HeroFetterRow) GetAttrs() types.Attrs {
  28. attrs := types.NewAttrs()
  29. attrs.Set(enum.Attr_Speed, p.Speed)
  30. attrs.Set(enum.Attr_MinAttack, p.MinAttack)
  31. attrs.Set(enum.Attr_MaxAttack, p.MaxAttack)
  32. attrs.Set(enum.Attr_AttackSpeed, p.AttackSpeed)
  33. attrs.Set(enum.Attr_MinDefense, p.MinDefense)
  34. attrs.Set(enum.Attr_MaxDefense, p.MaxDefense)
  35. attrs.Set(enum.Attr_HP, p.Hp)
  36. attrs.Set(enum.Attr_MaxHP, p.Hp)
  37. attrs.Set(enum.Attr_CriticalHitChance, p.CriticalHitChance)
  38. attrs.Set(enum.Attr_CriticalHitResistance, p.CriticalHitResistance)
  39. attrs.Set(enum.Attr_CriticalHitDamage, p.CriticalHitDamage)
  40. attrs.Set(enum.Attr_CriticalHitDamageResistance, p.CriticalHitDamageResistance)
  41. attrs.Set(enum.Attr_Luck, p.Luck)
  42. attrs.Set(enum.Attr_DamageBonus, p.DamageBonus)
  43. attrs.Set(enum.Attr_DamageReduction, p.DamageReduction)
  44. attrs.Set(enum.Attr_SquadAttackBonus, p.SquadAttackBonus)
  45. attrs.Set(enum.Attr_SquadHealthBonus, p.SquadHealthBonus)
  46. return attrs
  47. }