public static void Update(GameEngine engine, GameTime gameTime, ClientMap map)
 {
     for (int i = 0; i < map.Width * map.Height; i++)
     {
         MapTileRenderer.Update(engine, gameTime, map[i]);
     }
 }
        public static void Render(GameEngine engine, GraphicsRenderer renderer, ClientMap map, GameTime gameTime)
        {
            Dictionary <int, List <CoreAbstractEntity> > sortedEntities = GetEntitiesByTilePosition(map);

            (ClientMapTile tile, Vector2 position) = GetHighlightedTile(engine, map);

            renderer.Start();
            for (int i = 0; i < map.Width * map.Height; ++i)
            {
                int   tileX = i % map.Width;
                int   tileY = i / map.Width;
                float drawX = tileX * ClientMapTile.TILE_WIDTH;
                float drawY = tileY * ClientMapTile.TILE_HEIGHT;

                MapTileRenderer.Render(engine, renderer, gameTime, map[i], drawX, drawY);
                if (tile != null && tileX == (int)position.X && tileY == (int)position.Y)
                {
                    renderer.Render(AssetRegistry.TILE_SELECTION, drawX, drawY);
                }

                if (sortedEntities.ContainsKey(i))
                {
                    RenderEntities(engine, renderer, gameTime, sortedEntities[i], map[i], drawX, drawY);
                }
            }

            renderer.Finish();
        }