Moved our TerrainRender ref into WorldRenderer; TR.tileSet want to be somewhere else (it's not just renderer, it affects pathing)
This commit is contained in:
@@ -20,7 +20,6 @@ namespace OpenRa.Game
|
||||
public static World world;
|
||||
public static Map map;
|
||||
static TreeCache treeCache;
|
||||
public static TerrainRenderer terrain;
|
||||
public static Viewport viewport;
|
||||
public static PathFinder PathFinder;
|
||||
public static WorldRenderer worldRenderer;
|
||||
@@ -55,7 +54,6 @@ namespace OpenRa.Game
|
||||
|
||||
viewport = new Viewport( clientSize, map.Offset, map.Offset + map.Size, renderer );
|
||||
|
||||
terrain = new TerrainRenderer(renderer, map, viewport);
|
||||
world = new World();
|
||||
treeCache = new TreeCache(map);
|
||||
|
||||
@@ -68,11 +66,11 @@ namespace OpenRa.Game
|
||||
LoadMapBuildings(mapFile);
|
||||
LoadMapUnits(mapFile);
|
||||
|
||||
PathFinder = new PathFinder(map, terrain.tileSet);
|
||||
|
||||
controller = new Controller();
|
||||
worldRenderer = new WorldRenderer(renderer);
|
||||
|
||||
PathFinder = new PathFinder( map, worldRenderer.terrainRenderer.tileSet );
|
||||
|
||||
soundEngine = new ISoundEngine();
|
||||
sounds = new Cache<string, ISoundSource>(LoadSound);
|
||||
|
||||
@@ -144,7 +142,7 @@ namespace OpenRa.Game
|
||||
|
||||
return map.IsInMap(a.X, a.Y) &&
|
||||
TerrainCosts.Cost(umt,
|
||||
terrain.tileSet.GetWalkability(map.MapTiles[a.X, a.Y])) < double.PositiveInfinity;
|
||||
worldRenderer.terrainRenderer.tileSet.GetWalkability( map.MapTiles[ a.X, a.Y ] ) ) < double.PositiveInfinity;
|
||||
}
|
||||
|
||||
static IEnumerable<Actor> FindUnits(float2 a, float2 b)
|
||||
|
||||
@@ -12,19 +12,14 @@ namespace OpenRa.Game.Graphics
|
||||
IndexBuffer indexBuffer;
|
||||
Sheet terrainSheet;
|
||||
public TileSet tileSet;
|
||||
Region region;
|
||||
|
||||
Renderer renderer;
|
||||
Map map;
|
||||
Viewport viewport;
|
||||
OverlayRenderer overlayRenderer;
|
||||
|
||||
public TerrainRenderer(Renderer renderer, Map map, Viewport viewport)
|
||||
public TerrainRenderer(Renderer renderer, Map map)
|
||||
{
|
||||
this.renderer = renderer;
|
||||
this.viewport = viewport;
|
||||
region = Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw, null );
|
||||
viewport.AddRegion(region);
|
||||
this.map = map;
|
||||
overlayRenderer = new OverlayRenderer( renderer, map );
|
||||
|
||||
@@ -60,14 +55,14 @@ namespace OpenRa.Game.Graphics
|
||||
indexBuffer.SetData( indices );
|
||||
}
|
||||
|
||||
void Draw()
|
||||
public void Draw( Viewport viewport )
|
||||
{
|
||||
int indicesPerRow = map.Width * 6;
|
||||
int verticesPerRow = map.Width * 4;
|
||||
|
||||
int visibleRows = (int)(region.Size.Y / 24.0f + 2);
|
||||
int visibleRows = (int)(viewport.Width / 24.0f + 2);
|
||||
|
||||
int firstRow = (int)((region.Position.Y + viewport.Location.Y) / 24.0f - map.YOffset);
|
||||
int firstRow = (int)((viewport.Location.Y) / 24.0f - map.YOffset);
|
||||
int lastRow = firstRow + visibleRows;
|
||||
|
||||
if (lastRow < 0 || firstRow > map.Height)
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace OpenRa.Game.Graphics
|
||||
{
|
||||
class WorldRenderer
|
||||
{
|
||||
public readonly TerrainRenderer terrainRenderer;
|
||||
public readonly SpriteRenderer spriteRenderer;
|
||||
public readonly LineRenderer lineRenderer;
|
||||
public readonly Region region;
|
||||
@@ -19,6 +20,8 @@ namespace OpenRa.Game.Graphics
|
||||
|
||||
public WorldRenderer(Renderer renderer)
|
||||
{
|
||||
terrainRenderer = new TerrainRenderer( renderer, Game.map );
|
||||
|
||||
// TODO: this is layout policy. it belongs at a higher level than this.
|
||||
region = Region.Create(Game.viewport, DockStyle.Left,
|
||||
Game.viewport.Width - 128, Draw,
|
||||
@@ -53,6 +56,8 @@ namespace OpenRa.Game.Graphics
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
terrainRenderer.Draw( Game.viewport );
|
||||
|
||||
var rect = new RectangleF((region.Position + Game.viewport.Location).ToPointF(),
|
||||
region.Size.ToSizeF());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user