package data import ( "f1-game/internal/enum" "f1-game/internal/types" ) // 兵种类型等级配置 key 兵种来源 value [key 等级 value *ArmTypeRow] var heroFetterMap map[int32]types.Set[int32] func (p *heroFetterConfig) OnAfterLoad(_ bool) { tempHeroFetterMap := map[int32]types.Set[int32]{} for _, row := range p.list { for _, heroID := range row.HeroIDs { fetterSet := tempHeroFetterMap[heroID] if fetterSet == nil { fetterSet = types.NewSet[int32]() tempHeroFetterMap[heroID] = fetterSet } fetterSet.Add(row.ID) } } heroFetterMap = tempHeroFetterMap } // 通过英雄id获取羁绊id列表 func (p *heroFetterConfig) GetFetterIDs(heroID int32) types.Set[int32] { return heroFetterMap[heroID] } // 获取怪物属性 func (p *HeroFetterRow) GetAttrs() types.Attrs { attrs := types.NewAttrs() attrs.Set(enum.Attr_Speed, p.Speed) attrs.Set(enum.Attr_MinAttack, p.MinAttack) attrs.Set(enum.Attr_MaxAttack, p.MaxAttack) attrs.Set(enum.Attr_AttackSpeed, p.AttackSpeed) attrs.Set(enum.Attr_MinDefense, p.MinDefense) attrs.Set(enum.Attr_MaxDefense, p.MaxDefense) attrs.Set(enum.Attr_HP, p.Hp) attrs.Set(enum.Attr_MaxHP, p.Hp) attrs.Set(enum.Attr_CriticalHitChance, p.CriticalHitChance) attrs.Set(enum.Attr_CriticalHitResistance, p.CriticalHitResistance) attrs.Set(enum.Attr_CriticalHitDamage, p.CriticalHitDamage) attrs.Set(enum.Attr_CriticalHitDamageResistance, p.CriticalHitDamageResistance) attrs.Set(enum.Attr_Luck, p.Luck) attrs.Set(enum.Attr_DamageBonus, p.DamageBonus) attrs.Set(enum.Attr_DamageReduction, p.DamageReduction) attrs.Set(enum.Attr_SquadAttackBonus, p.SquadAttackBonus) attrs.Set(enum.Attr_SquadHealthBonus, p.SquadHealthBonus) return attrs }