// 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); }
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); }