//MapGridPacket
        private static void HandlePacket(MapGridPacket packet)
        {
            Globals.MapGridWidth  = packet.Grid.GetLength(0);
            Globals.MapGridHeight = packet.Grid.GetLength(1);
            var clearKnownMaps = packet.ClearKnownMaps;

            Globals.MapGrid = new Guid[Globals.MapGridWidth, Globals.MapGridHeight];
            if (clearKnownMaps)
            {
                foreach (var map in MapInstance.Lookup.Values.ToArray())
                {
                    ((MapInstance)map).Dispose();
                }
            }

            Globals.NeedsMaps = true;
            Globals.GridMaps.Clear();
            for (var x = 0; x < Globals.MapGridWidth; x++)
            {
                for (var y = 0; y < Globals.MapGridHeight; y++)
                {
                    Globals.MapGrid[x, y] = packet.Grid[x, y];
                    if (Globals.MapGrid[x, y] != Guid.Empty)
                    {
                        Globals.GridMaps.Add(Globals.MapGrid[x, y]);
                        if (MapInstance.MapRequests.ContainsKey(Globals.MapGrid[x, y]))
                        {
                            MapInstance.MapRequests[Globals.MapGrid[x, y]] = Globals.System.GetTimeMs() + 2000;
                        }
                        else
                        {
                            MapInstance.MapRequests.Add(Globals.MapGrid[x, y], Globals.System.GetTimeMs() + 2000);
                        }
                    }
                }
            }

            if (Globals.Me != null)
            {
                Globals.Me.FetchNewMaps();
            }

            Graphics.GridSwitched = true;
        }
示例#2
0
 //MapGridPacket
 private static void HandlePacket(MapGridPacket packet)
 {
     if (Globals.MapGrid != null)
     {
         Globals.MapGrid.Load(packet.EditorGrid);
         if (Globals.CurrentMap != null && Globals.MapGrid != null && Globals.MapGrid.Loaded)
         {
             for (var y = Globals.CurrentMap.MapGridY + 1; y >= Globals.CurrentMap.MapGridY - 1; y--)
             {
                 for (var x = Globals.CurrentMap.MapGridX - 1; x <= Globals.CurrentMap.MapGridX + 1; x++)
                 {
                     if (x >= 0 && x < Globals.MapGrid.GridWidth && y >= 0 && y < Globals.MapGrid.GridHeight)
                     {
                         var needMap = MapInstance.Get(Globals.MapGrid.Grid[x, y].MapId);
                         if (needMap == null && Globals.MapGrid.Grid[x, y].MapId != Guid.Empty)
                         {
                             PacketSender.SendNeedMap(Globals.MapGrid.Grid[x, y].MapId);
                         }
                     }
                 }
             }
         }
     }
 }