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);
        }
Beispiel #2
0
        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)));
 }