示例#1
0
        public static SimFilter Cache(string filter, ulong cacheSim, List <ulong> sims)
        {
            Common.DebugNotify("Cache: " + filter + " Count: " + sims.Count + " cacheSim: " + cacheSim);
            SimFilter cFilter = new SimFilter(filter, cacheSim);

            cFilter.Sims = sims;

            Dictionary <ulong, SimFilter> mCache;

            filters.TryGetValue(filter, out mCache);
            if (mCache != null)
            {
                mCache.Remove(cacheSim);
                mCache.Add(cacheSim, cFilter);
                filters[filter] = mCache;
            }
            else
            {
                mCache = new Dictionary <ulong, SimFilter>();
                mCache.Add(cacheSim, cFilter);
                filters.Add(filter, mCache);
            }

            return(cFilter);
        }
示例#2
0
        public static bool DoesAnySimMatchFilter(ulong cacheSim, List <SimDescription> descs, string filter)
        {
            SimFilter cFilter = GetFilter(filter, cacheSim);

            foreach (SimDescription desc in descs)
            {
                if (cFilter.SimMatches(desc.SimDescriptionId))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#3
0
        // this one assumes the filter has already been initalized
        public static SimFilter UpdateFilter(string filter, ulong cacheSim)
        {
            Common.DebugNotify("UpdateFilterInternal: " + filter + " cacheSim: " + cacheSim);

            // updated live
            if (filter.Contains("Attraction"))
            {
                return(new SimFilter(filter, 0));
            }

            Dictionary <ulong, SimFilter> mCache = null;

            filters.TryGetValue(filter, out mCache);

            if (mCache != null)
            {
                if (mCache.ContainsKey(0))
                {
                    Common.DebugNotify("mCache.ContainsKey 0");
                    return(UpdateFilter(filter, cacheSim, false));
                }
                else
                {
                    Common.DebugNotify("mCache doesnt ContainsKey 0");
                    return(UpdateFilter(filter, cacheSim, true));
                }
            }
            else
            {
                if (filter != string.Empty && sGetSingleFilter.Valid)
                {
                    Dictionary <string, bool> result = new Dictionary <string, bool>();
                    result = sGetSingleFilter.Invoke <Dictionary <string, bool> >(new object[] { filter });

                    if (result.Count > 0 && result.ContainsKey(filter))
                    {
                        Common.DebugNotify("GrabFilterHot: " + result[filter]);
                        return(UpdateFilter(filter, cacheSim, result[filter]));
                    }
                }

                // return blank as fail safe
                SimFilter mFilter = new SimFilter(filter, 0);
                return(mFilter);
            }
        }
示例#4
0
        public static SimFilter Cache(string filter, ulong cacheSim, List<ulong> sims)
        {
            Common.DebugNotify("Cache: " + filter + " Count: " + sims.Count + " cacheSim: " + cacheSim);
            SimFilter cFilter = new SimFilter(filter, cacheSim);
            cFilter.Sims = sims;

            Dictionary<ulong, SimFilter> mCache;
            filters.TryGetValue(filter, out mCache);
            if (mCache != null)
            {
                mCache.Remove(cacheSim);
                mCache.Add(cacheSim, cFilter);
                filters[filter] = mCache;
            }
            else
            {
                mCache = new Dictionary<ulong, SimFilter>();
                mCache.Add(cacheSim, cFilter);
                filters.Add(filter, mCache);
            }
            
            return cFilter;
        }
示例#5
0
        // this one assumes the filter has already been initalized
        public static SimFilter UpdateFilter(string filter, ulong cacheSim)
        {
            Common.DebugNotify("UpdateFilterInternal: " + filter + " cacheSim: " + cacheSim);

            Dictionary<ulong, SimFilter> mCache = null;            
            filters.TryGetValue(filter, out mCache);

            if (mCache != null)
            {
                if (mCache.ContainsKey(0))
                {
                    Common.DebugNotify("mCache.ContainsKey 0");
                    return UpdateFilter(filter, cacheSim, false);
                }
                else
                {
                    Common.DebugNotify("mCache doesnt ContainsKey 0");
                    return UpdateFilter(filter, cacheSim, true);
                }
            }
            else
            {
                if (filter != string.Empty && sGetSingleFilter.Valid)
                {
                    Dictionary<string, bool> result = new Dictionary<string, bool>();
                    result = sGetSingleFilter.Invoke<Dictionary<string, bool>>(new object[] { filter });

                    if (result.Count > 0 && result.ContainsKey(filter))
                    {
                        Common.DebugNotify("GrabFilterHot: " + result[filter]);
                        return UpdateFilter(filter, cacheSim, result[filter]);
                    }
                }

                // return blank as fail safe
                SimFilter mFilter = new SimFilter(filter, 0);                
                return mFilter;
            }
        }