private void DrawLayersInOrder(Map map, SpriteBatch spriteBatch, Rectangle viewport) { float layerDepth = 1.0f; float layerDepthDec = 1.0f / (float)map.LayerOrder.Length; foreach (var layer in map.LayerOrder) { switch (layer.LayerType) { case LayerType.TileLayer: map.DrawLayer(spriteBatch, layer.ID, viewport, layerDepth); break; case LayerType.ObjectLayer: map.DrawObjectLayer(spriteBatch, layer.ID, viewport, layerDepth); break; case LayerType.ImageLayer: map.DrawImageLayer(spriteBatch, layer.ID, viewport, layerDepth); break; } layerDepth -= layerDepthDec; } }