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 World world;
|
||||||
public static Map map;
|
public static Map map;
|
||||||
static TreeCache treeCache;
|
static TreeCache treeCache;
|
||||||
public static TerrainRenderer terrain;
|
|
||||||
public static Viewport viewport;
|
public static Viewport viewport;
|
||||||
public static PathFinder PathFinder;
|
public static PathFinder PathFinder;
|
||||||
public static WorldRenderer worldRenderer;
|
public static WorldRenderer worldRenderer;
|
||||||
@@ -51,11 +50,10 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
var mapFile = new IniFile(FileSystem.Open(mapName));
|
var mapFile = new IniFile(FileSystem.Open(mapName));
|
||||||
map = new Map(mapFile);
|
map = new Map(mapFile);
|
||||||
FileSystem.Mount(new Package(map.Theater + ".mix"));
|
FileSystem.Mount(new Package(map.Theater + ".mix"));
|
||||||
|
|
||||||
viewport = new Viewport( clientSize, map.Offset, map.Offset + map.Size, renderer );
|
viewport = new Viewport( clientSize, map.Offset, map.Offset + map.Size, renderer );
|
||||||
|
|
||||||
terrain = new TerrainRenderer(renderer, map, viewport);
|
|
||||||
world = new World();
|
world = new World();
|
||||||
treeCache = new TreeCache(map);
|
treeCache = new TreeCache(map);
|
||||||
|
|
||||||
@@ -68,11 +66,11 @@ namespace OpenRa.Game
|
|||||||
LoadMapBuildings(mapFile);
|
LoadMapBuildings(mapFile);
|
||||||
LoadMapUnits(mapFile);
|
LoadMapUnits(mapFile);
|
||||||
|
|
||||||
PathFinder = new PathFinder(map, terrain.tileSet);
|
|
||||||
|
|
||||||
controller = new Controller();
|
controller = new Controller();
|
||||||
worldRenderer = new WorldRenderer(renderer);
|
worldRenderer = new WorldRenderer(renderer);
|
||||||
|
|
||||||
|
PathFinder = new PathFinder( map, worldRenderer.terrainRenderer.tileSet );
|
||||||
|
|
||||||
soundEngine = new ISoundEngine();
|
soundEngine = new ISoundEngine();
|
||||||
sounds = new Cache<string, ISoundSource>(LoadSound);
|
sounds = new Cache<string, ISoundSource>(LoadSound);
|
||||||
|
|
||||||
@@ -144,7 +142,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
return map.IsInMap(a.X, a.Y) &&
|
return map.IsInMap(a.X, a.Y) &&
|
||||||
TerrainCosts.Cost(umt,
|
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)
|
static IEnumerable<Actor> FindUnits(float2 a, float2 b)
|
||||||
|
|||||||
@@ -12,19 +12,14 @@ namespace OpenRa.Game.Graphics
|
|||||||
IndexBuffer indexBuffer;
|
IndexBuffer indexBuffer;
|
||||||
Sheet terrainSheet;
|
Sheet terrainSheet;
|
||||||
public TileSet tileSet;
|
public TileSet tileSet;
|
||||||
Region region;
|
|
||||||
|
|
||||||
Renderer renderer;
|
Renderer renderer;
|
||||||
Map map;
|
Map map;
|
||||||
Viewport viewport;
|
|
||||||
OverlayRenderer overlayRenderer;
|
OverlayRenderer overlayRenderer;
|
||||||
|
|
||||||
public TerrainRenderer(Renderer renderer, Map map, Viewport viewport)
|
public TerrainRenderer(Renderer renderer, Map map)
|
||||||
{
|
{
|
||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
this.viewport = viewport;
|
|
||||||
region = Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw, null );
|
|
||||||
viewport.AddRegion(region);
|
|
||||||
this.map = map;
|
this.map = map;
|
||||||
overlayRenderer = new OverlayRenderer( renderer, map );
|
overlayRenderer = new OverlayRenderer( renderer, map );
|
||||||
|
|
||||||
@@ -60,14 +55,14 @@ namespace OpenRa.Game.Graphics
|
|||||||
indexBuffer.SetData( indices );
|
indexBuffer.SetData( indices );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw()
|
public void Draw( Viewport viewport )
|
||||||
{
|
{
|
||||||
int indicesPerRow = map.Width * 6;
|
int indicesPerRow = map.Width * 6;
|
||||||
int verticesPerRow = map.Width * 4;
|
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;
|
int lastRow = firstRow + visibleRows;
|
||||||
|
|
||||||
if (lastRow < 0 || firstRow > map.Height)
|
if (lastRow < 0 || firstRow > map.Height)
|
||||||
|
|||||||
@@ -8,25 +8,28 @@ using OpenRa.Game.Traits;
|
|||||||
namespace OpenRa.Game.Graphics
|
namespace OpenRa.Game.Graphics
|
||||||
{
|
{
|
||||||
class WorldRenderer
|
class WorldRenderer
|
||||||
{
|
{
|
||||||
|
public readonly TerrainRenderer terrainRenderer;
|
||||||
public readonly SpriteRenderer spriteRenderer;
|
public readonly SpriteRenderer spriteRenderer;
|
||||||
public readonly LineRenderer lineRenderer;
|
public readonly LineRenderer lineRenderer;
|
||||||
public readonly Region region;
|
public readonly Region region;
|
||||||
public readonly UiOverlay uiOverlay;
|
public readonly UiOverlay uiOverlay;
|
||||||
readonly Renderer renderer;
|
readonly Renderer renderer;
|
||||||
|
|
||||||
public static bool ShowUnitPaths = false;
|
public static bool ShowUnitPaths = false;
|
||||||
|
|
||||||
public WorldRenderer(Renderer renderer)
|
public WorldRenderer(Renderer renderer)
|
||||||
{
|
{
|
||||||
|
terrainRenderer = new TerrainRenderer( renderer, Game.map );
|
||||||
|
|
||||||
// TODO: this is layout policy. it belongs at a higher level than this.
|
// TODO: this is layout policy. it belongs at a higher level than this.
|
||||||
region = Region.Create(Game.viewport, DockStyle.Left,
|
region = Region.Create(Game.viewport, DockStyle.Left,
|
||||||
Game.viewport.Width - 128, Draw,
|
Game.viewport.Width - 128, Draw,
|
||||||
Game.controller.HandleMouseInput);
|
Game.controller.HandleMouseInput);
|
||||||
|
|
||||||
Game.viewport.AddRegion(region);
|
Game.viewport.AddRegion(region);
|
||||||
|
|
||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
spriteRenderer = new SpriteRenderer(renderer, true);
|
spriteRenderer = new SpriteRenderer(renderer, true);
|
||||||
lineRenderer = new LineRenderer(renderer);
|
lineRenderer = new LineRenderer(renderer);
|
||||||
uiOverlay = new UiOverlay(spriteRenderer);
|
uiOverlay = new UiOverlay(spriteRenderer);
|
||||||
@@ -52,7 +55,9 @@ namespace OpenRa.Game.Graphics
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
|
terrainRenderer.Draw( Game.viewport );
|
||||||
|
|
||||||
var rect = new RectangleF((region.Position + Game.viewport.Location).ToPointF(),
|
var rect = new RectangleF((region.Position + Game.viewport.Location).ToPointF(),
|
||||||
region.Size.ToSizeF());
|
region.Size.ToSizeF());
|
||||||
|
|
||||||
@@ -92,8 +97,8 @@ namespace OpenRa.Game.Graphics
|
|||||||
foreach( var a in uog.selection )
|
foreach( var a in uog.selection )
|
||||||
DrawSelectionBox(a, Color.White, true);
|
DrawSelectionBox(a, Color.White, true);
|
||||||
|
|
||||||
lineRenderer.Flush();
|
lineRenderer.Flush();
|
||||||
|
|
||||||
renderer.DrawText(string.Format("Frame {0}", Game.orderManager.FrameNumber), new int2(5, 5), Color.White);
|
renderer.DrawText(string.Format("Frame {0}", Game.orderManager.FrameNumber), new int2(5, 5), Color.White);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user