private void DrawNormalLayer(Surface surface, int layerIndex, ScreenSection section) { // Draw each line from left to right. var layer = Map.Layers[layerIndex]; for (var y = section.TileTop; y < section.TileTop + section.TileHeight; y++) { for (var x = section.TileLeft; x < section.TileLeft + section.TileWidth; x++) { var tileIndex = layer.GetTileIndex(x, y); var tile = Map.GetSurfaceForTileId(tileIndex); var position = section.GetTilePosition(x, y); surface.Blit(tile, position); } } }
public void Draw(Surface surface, ScreenSection section) { for (int i = 0; i < Map.Layers.Count; i++) { var layer = Map.Layers[i]; if (layer.Type == LayerType.Collision) { continue; } else if (layer.Type == LayerType.Object) { DrawObjectLayer(surface, i, section); } else { DrawNormalLayer(surface, i, section); } } }
private void DrawObjectLayer(Surface surface, int layerIndex, ScreenSection section) { // Draw the layer line by line, each time asking our delegate to draw its // objects beforehand. int actionLayerIndex = Map.GetActionLayerIndex(layerIndex); var newSection = new ScreenSection(); newSection.TileLeft = section.TileLeft; newSection.TileWidth = section.TileWidth; newSection.TileSize = section.TileSize; newSection.XOffset = section.XOffset; newSection.YOffset = section.YOffset; newSection.TileHeight = 1; for (int i = section.TileTop; i < section.TileTop + section.TileHeight; i++) { newSection.TileTop = i; DrawObjects(surface, actionLayerIndex, newSection); DrawNormalLayer(surface, layerIndex, newSection); } }