Пример #1
0
        // translate real to fake, taking into account guid hints.
        // if no hint is present, first fake is used
        public int GetFake(string prop, int cat, int id)
        {
            if (cat == (int)CategoryNo.ao_none || id <= 0)
            {
                return(id);
            }
            List <int> candidates;
            var        realpair = new RealPair(cat, id);

            if (baseprefix != null)
            {
                prop = baseprefix + prop;
                if (items.TryGetValue(prop, out Item item) && idMap.real2fake.TryGetValue(realpair, out candidates))
                {
                    var match = candidates.FirstOrDefault((x) => idMap.fake2real[x].Distribution2 == item.guid);
                    if (match != 0)
                    {
                        return(match);
                    }
                }
            }
            // nothing found via our guid mappings, so default to a first fake we encounter
            if (idMap.real2fake.TryGetValue(realpair, out candidates))
            {
                return(candidates.FirstOrDefault());
            }
            if (cat != 0 && id != 0)
            {
                if (settings.enableSpam && baseprefix != null)
                {
                    print($"WARNING: {prop} cat={(CategoryNo)cat}({cat}) id={id} not found.");
                }
            }
            return(id);
        }
Пример #2
0
        public int NewFake(int cat, int realid, ListInfoBase data)
        {
            var        realpair = new RealPair(cat, realid);
            List <int> fakeids;

            if (!real2fake.TryGetValue(realpair, out fakeids))
            {
                fakeids = real2fake[realpair] = new List <int>();
            }
            foreach (var item in fakeids)
            {
                if (fake2real[item].Distribution2 == data.Distribution2)
                {
                    return(item);
                }
            }
            int fakeid = --counter;

            fakeids.Add(fakeid);
            fake2real[fakeid] = data;
            return(fakeid);
        }