Esempio n. 1
0
        public void UpdateMaps(MapCache mapcache)
        {
            lock (mapActionQueue)
            {
                if (!dirty)
                {
                    return;
                }

                dirty = false;
                foreach (var mapAction in mapActionQueue)
                {
                    var map = mapcache.FirstOrDefault(x => x.Package?.Name == mapAction.Key && x.Status == MapStatus.Available);
                    if (map != null)
                    {
                        if (mapAction.Value == MapAction.Delete)
                        {
                            Console.WriteLine(mapAction.Key + " was deleted");
                            map.Invalidate();
                        }
                        else
                        {
                            Console.WriteLine(mapAction.Key + " was updated");
                            map.Invalidate();
                            mapcache.LoadMap(mapAction.Key.Replace(package.Name + Path.DirectorySeparatorChar, ""), package, classification, mapGrid, map.Uid);
                        }
                    }
                    else
                    {
                        if (mapAction.Value != MapAction.Delete)
                        {
                            Console.WriteLine(mapAction.Key + " was added");
                            mapcache.LoadMap(mapAction.Key.Replace(package?.Name + Path.DirectorySeparatorChar, ""), package, classification, mapGrid, null);
                        }
                    }
                }

                mapActionQueue.Clear();
            }
        }