public void UpdateFractionalRelationScore(Hero baseHero, Hero otherHero, SegmentalFractionalScore fractionalScore) { ulong heroTuple = ElegantPairHelper.Pair(baseHero.Id, otherHero.Id); fractionalScore += GetFractionalRelationScore(heroTuple); UpdatePersonalRelation(baseHero, otherHero, ref fractionalScore); SetFractionalRelationScore(heroTuple, fractionalScore); }
internal void InitializeAOHeroRelations() { Dictionary <long, int> nativeRelations = new Dictionary <long, int>(FieldAccessHelper.heroRelationsByRef(FieldAccessHelper.heroRelationsInstanceByRef(CharacterRelationManager.Instance))); Dictionary <ulong, int> heroRelations = new Dictionary <ulong, int>(); foreach (Hero baseHero in Hero.All.Where(h => (h.IsNoble || h.IsWanderer) && h != Hero.MainHero)) { foreach (Hero otherHero in Hero.All.Where(h => (h.IsNoble || h.IsWanderer) && h != baseHero)) { heroRelations.Add(ElegantPairHelper.Pair(baseHero.Id, otherHero.Id), nativeRelations.TryGetValue(MBGUID.GetHash2(baseHero.Id, otherHero.Id), out int relation) ? relation : 0); } } _AOHeroRelations = heroRelations; }
public void SetFractionalRelationScore(Hero baseHero, Hero otherHero, SegmentalFractionalScore fractionalScore) { UpdatePersonalRelation(baseHero, otherHero, ref fractionalScore); SetFractionalRelationScore(ElegantPairHelper.Pair(baseHero.Id, otherHero.Id), fractionalScore); }
public SegmentalFractionalScore GetFractionalRelationScore(Hero baseHero, Hero otherHero) { return(GetFractionalRelationScore(ElegantPairHelper.Pair(baseHero.Id, otherHero.Id))); }