From c7e95c71b26718234fa581ec1d264ed9fbd0724b Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 23 Nov 2009 18:53:01 +1300 Subject: [PATCH] - SheetSize is configurable. - TerrainRenderer gets to load it's sprites first, meaning we need one less texture. --- OpenRa.Game/Game.cs | 8 ++++---- OpenRa.Game/Graphics/Renderer.cs | 2 ++ OpenRa.Game/Graphics/SheetBuilder.cs | 4 +++- OpenRa.Game/Graphics/TerrainRenderer.cs | 9 +++++---- OpenRa.Game/MainWindow.cs | 2 ++ 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index fecfababe3..9a6e81e44f 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -60,7 +60,10 @@ namespace OpenRa.Game Rules.Map.InitOreDensity(); - viewport = new Viewport(clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer); + controller = new Controller(); + worldRenderer = new WorldRenderer( renderer ); + + viewport = new Viewport( clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer ); world = new World(); treeCache = new TreeCache(Rules.Map); @@ -74,9 +77,6 @@ namespace OpenRa.Game LoadMapBuildings(Rules.AllRules); LoadMapUnits(Rules.AllRules); - controller = new Controller(); - worldRenderer = new WorldRenderer(renderer); - PathFinder = new PathFinder(Rules.Map); soundEngine = new ISoundEngine(); diff --git a/OpenRa.Game/Graphics/Renderer.cs b/OpenRa.Game/Graphics/Renderer.cs index e22fd3de4d..ba9c893c37 100644 --- a/OpenRa.Game/Graphics/Renderer.cs +++ b/OpenRa.Game/Graphics/Renderer.cs @@ -9,6 +9,8 @@ namespace OpenRa.Game.Graphics { class Renderer { + internal static int SheetSize; + readonly GraphicsDevice device; Texture[] palettes; public Shader SpriteShader { get; private set; } /* note: shared shader params */ diff --git a/OpenRa.Game/Graphics/SheetBuilder.cs b/OpenRa.Game/Graphics/SheetBuilder.cs index 21384ad996..e126966d1d 100644 --- a/OpenRa.Game/Graphics/SheetBuilder.cs +++ b/OpenRa.Game/Graphics/SheetBuilder.cs @@ -27,11 +27,13 @@ namespace OpenRa.Game.Graphics public static void ForceNewSheet() { + if( p == Point.Empty ) + return; current = NewSheet(); channel = NextChannel(null); } - static Sheet NewSheet() { return new Sheet(renderer, new Size(512, 512)); } + static Sheet NewSheet() { return new Sheet( renderer, new Size( Renderer.SheetSize, Renderer.SheetSize ) ); } static Renderer renderer; static Sheet current = null; diff --git a/OpenRa.Game/Graphics/TerrainRenderer.cs b/OpenRa.Game/Graphics/TerrainRenderer.cs index cbdfb344bc..5840daaf9e 100644 --- a/OpenRa.Game/Graphics/TerrainRenderer.cs +++ b/OpenRa.Game/Graphics/TerrainRenderer.cs @@ -20,10 +20,9 @@ namespace OpenRa.Game.Graphics { this.renderer = renderer; this.map = map; - overlayRenderer = new OverlayRenderer( renderer, map ); - - Size tileSize = new Size( Game.CellSize, Game.CellSize ); + Size tileSize = new Size( Game.CellSize, Game.CellSize ); + SheetBuilder.ForceNewSheet(); var tileMapping = new Cache( @@ -49,7 +48,9 @@ namespace OpenRa.Game.Graphics vertexBuffer.SetData( vertices ); indexBuffer = new IndexBuffer( renderer.Device, indices.Length ); - indexBuffer.SetData( indices ); + indexBuffer.SetData( indices ); + + overlayRenderer = new OverlayRenderer( renderer, map ); } public void Draw( Viewport viewport ) diff --git a/OpenRa.Game/MainWindow.cs b/OpenRa.Game/MainWindow.cs index 957eccef2d..58f48352cc 100755 --- a/OpenRa.Game/MainWindow.cs +++ b/OpenRa.Game/MainWindow.cs @@ -57,6 +57,8 @@ namespace OpenRa.Game Game.NetworkHost = settings.GetValue( "host", "" ); Game.NetworkPort = int.Parse( settings.GetValue( "port", "0" ) ); + Renderer.SheetSize = int.Parse( settings.GetValue( "sheetsize", "512" ) ); + Game.Initialize(settings.GetValue("map", "scm12ea.ini"), renderer, new int2(ClientSize), settings.GetValue("player", 1));