git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1237 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -51,9 +51,9 @@ namespace OpenRa.Game
|
|||||||
TileMix = new Package("../../../" + map.Theater + ".mix");
|
TileMix = new Package("../../../" + map.Theater + ".mix");
|
||||||
|
|
||||||
renderer.SetPalette(new HardwarePalette(renderer.Device, map));
|
renderer.SetPalette(new HardwarePalette(renderer.Device, map));
|
||||||
terrain = new TerrainRenderer(renderer, map, TileMix);
|
terrain = new TerrainRenderer(renderer, map, TileMix, viewport);
|
||||||
|
|
||||||
world = new World(renderer);
|
world = new World(renderer, viewport);
|
||||||
treeCache = new TreeCache(renderer.Device, map, TileMix);
|
treeCache = new TreeCache(renderer.Device, map, TileMix);
|
||||||
|
|
||||||
foreach (TreeReference treeReference in map.Trees)
|
foreach (TreeReference treeReference in map.Trees)
|
||||||
@@ -65,7 +65,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
world.Add(new Refinery(24 * new float2(5, 7), 1));
|
world.Add(new Refinery(24 * new float2(5, 7), 1));
|
||||||
|
|
||||||
sidebar = new Sidebar(Race.Soviet, renderer);
|
sidebar = new Sidebar(Race.Soviet, renderer, viewport);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Run()
|
internal void Run()
|
||||||
@@ -99,20 +99,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
void Frame()
|
void Frame()
|
||||||
{
|
{
|
||||||
float2 r1 = new float2(2, -2) / viewport.Size;
|
viewport.DrawRegions();
|
||||||
float2 r2 = new float2(-1, 1);
|
|
||||||
|
|
||||||
renderer.BeginFrame(r1, r2, viewport.Location);
|
|
||||||
|
|
||||||
renderer.Device.EnableScissor(0, 0, viewport.ClientSize.Width - 128, viewport.ClientSize.Height);
|
|
||||||
terrain.Draw(viewport);
|
|
||||||
|
|
||||||
world.Draw(renderer, viewport);
|
|
||||||
|
|
||||||
renderer.Device.DisableScissor();
|
|
||||||
sidebar.Paint(viewport);
|
|
||||||
|
|
||||||
renderer.EndFrame();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
@@ -9,9 +10,9 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
Point location;
|
Point location;
|
||||||
Size size;
|
Size size;
|
||||||
Renderable drawFunction;
|
MethodInvoker drawFunction;
|
||||||
|
|
||||||
public Region(Point location, Size size, Renderable drawFunction)
|
public Region(Point location, Size size, MethodInvoker drawFunction)
|
||||||
{
|
{
|
||||||
this.location = location;
|
this.location = location;
|
||||||
this.size = size;
|
this.size = size;
|
||||||
@@ -21,7 +22,7 @@ namespace OpenRa.Game
|
|||||||
public void Draw(Renderer renderer, Viewport viewport)
|
public void Draw(Renderer renderer, Viewport viewport)
|
||||||
{
|
{
|
||||||
renderer.Device.EnableScissor(location.X, location.Y, size.Width, size.Height);
|
renderer.Device.EnableScissor(location.X, location.Y, size.Width, size.Height);
|
||||||
drawFunction(renderer, viewport);
|
drawFunction();
|
||||||
renderer.Device.DisableScissor();
|
renderer.Device.DisableScissor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using BluntDirectX.Direct3D;
|
|||||||
using OpenRa.FileFormats;
|
using OpenRa.FileFormats;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
@@ -19,9 +20,12 @@ namespace OpenRa.Game
|
|||||||
Sprite blank;
|
Sprite blank;
|
||||||
|
|
||||||
Dictionary<string, Sprite> sprites = new Dictionary<string,Sprite>();
|
Dictionary<string, Sprite> sprites = new Dictionary<string,Sprite>();
|
||||||
|
Viewport viewport;
|
||||||
|
|
||||||
public Sidebar(Race race, Renderer renderer)
|
public Sidebar(Race race, Renderer renderer, Viewport viewport)
|
||||||
{
|
{
|
||||||
|
this.viewport = viewport;
|
||||||
|
viewport.RequestRegion(AnchorStyles.Right, 128, Paint);
|
||||||
techTree.CurrentRace = race;
|
techTree.CurrentRace = race;
|
||||||
techTree.Build("FACT", true);
|
techTree.Build("FACT", true);
|
||||||
spriteRenderer = new SpriteRenderer(renderer, false);
|
spriteRenderer = new SpriteRenderer(renderer, false);
|
||||||
@@ -54,7 +58,7 @@ namespace OpenRa.Game
|
|||||||
DrawSprite(blank, ref p);
|
DrawSprite(blank, ref p);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Paint(Viewport viewport)
|
public void Paint()
|
||||||
{
|
{
|
||||||
float2 buildPos = viewport.Location + new float2(viewport.ClientSize.Width - 128, 0);
|
float2 buildPos = viewport.Location + new float2(viewport.ClientSize.Width - 128, 0);
|
||||||
float2 unitPos = viewport.Location + new float2(viewport.ClientSize.Width - 64, 0);
|
float2 unitPos = viewport.Location + new float2(viewport.ClientSize.Width - 64, 0);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using OpenRa.FileFormats;
|
|||||||
using BluntDirectX.Direct3D;
|
using BluntDirectX.Direct3D;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
@@ -14,13 +15,16 @@ namespace OpenRa.Game
|
|||||||
IndexBuffer indexBuffer;
|
IndexBuffer indexBuffer;
|
||||||
Sheet terrainSheet;
|
Sheet terrainSheet;
|
||||||
TileSet tileSet;
|
TileSet tileSet;
|
||||||
|
Viewport viewport;
|
||||||
|
|
||||||
Renderer renderer;
|
Renderer renderer;
|
||||||
Map map;
|
Map map;
|
||||||
|
|
||||||
public TerrainRenderer(Renderer renderer, Map map, Package tilePackage)
|
public TerrainRenderer(Renderer renderer, Map map, Package tilePackage, Viewport viewport)
|
||||||
{
|
{
|
||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
|
this.viewport = viewport;
|
||||||
|
viewport.RequestRegion(AnchorStyles.Left, viewport.ClientSize.Width - 128, Draw);
|
||||||
this.map = map;
|
this.map = map;
|
||||||
|
|
||||||
tileSet = new TileSet(tilePackage, map.TileSuffix);
|
tileSet = new TileSet(tilePackage, map.TileSuffix);
|
||||||
@@ -54,7 +58,7 @@ namespace OpenRa.Game
|
|||||||
indexBuffer.SetData(indices.ToArray());
|
indexBuffer.SetData(indices.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Draw( Viewport viewport )
|
public void Draw()
|
||||||
{
|
{
|
||||||
int indicesPerRow = map.Width * 6;
|
int indicesPerRow = map.Width * 6;
|
||||||
int verticesPerRow = map.Width * 4;
|
int verticesPerRow = map.Width * 4;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ using BluntDirectX.Direct3D;
|
|||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
delegate void Renderable(Renderer renderer, Viewport viewport);
|
|
||||||
class Viewport
|
class Viewport
|
||||||
{
|
{
|
||||||
readonly Size clientSize;
|
readonly Size clientSize;
|
||||||
@@ -34,7 +33,7 @@ namespace OpenRa.Game
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<Region> regions = new List<Region>();
|
List<Region> regions = new List<Region>();
|
||||||
public void ResquestRegion(AnchorStyles anchor, int distanceFromAnchor, Renderable drawFunction)
|
public void RequestRegion(AnchorStyles anchor, int distanceFromAnchor, MethodInvoker drawFunction)
|
||||||
{
|
{
|
||||||
switch (anchor)
|
switch (anchor)
|
||||||
{
|
{
|
||||||
@@ -57,8 +56,15 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public void DrawRegions()
|
public void DrawRegions()
|
||||||
{
|
{
|
||||||
|
float2 r1 = new float2(2.0f / clientSize.Width, -2.0f / clientSize.Height);
|
||||||
|
float2 r2 = new float2(-1, 1);
|
||||||
|
|
||||||
|
renderer.BeginFrame(r1, r2, scrollPosition);
|
||||||
|
|
||||||
foreach (Region region in regions)
|
foreach (Region region in regions)
|
||||||
region.Draw(renderer, this);
|
region.Draw(renderer, this);
|
||||||
|
|
||||||
|
renderer.EndFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Text;
|
|||||||
using BluntDirectX.Direct3D;
|
using BluntDirectX.Direct3D;
|
||||||
using OpenRa.FileFormats;
|
using OpenRa.FileFormats;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenRa.Game
|
namespace OpenRa.Game
|
||||||
{
|
{
|
||||||
@@ -11,12 +12,20 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
List<Actor> actors = new List<Actor>();
|
List<Actor> actors = new List<Actor>();
|
||||||
SpriteRenderer spriteRenderer;
|
SpriteRenderer spriteRenderer;
|
||||||
|
Renderer renderer;
|
||||||
|
Viewport viewport;
|
||||||
|
|
||||||
public World(Renderer renderer) { spriteRenderer = new SpriteRenderer(renderer, true); }
|
public World(Renderer renderer, Viewport viewport)
|
||||||
|
{
|
||||||
|
this.renderer = renderer;
|
||||||
|
this.viewport = viewport;
|
||||||
|
viewport.RequestRegion(AnchorStyles.Left, viewport.ClientSize.Width - 128, Draw);
|
||||||
|
spriteRenderer = new SpriteRenderer(renderer, true);
|
||||||
|
}
|
||||||
|
|
||||||
public void Add(Actor a) { actors.Add(a); }
|
public void Add(Actor a) { actors.Add(a); }
|
||||||
|
|
||||||
public void Draw(Renderer renderer, Viewport viewport)
|
public void Draw()
|
||||||
{
|
{
|
||||||
Range<float2> range = new Range<float2>(viewport.Location, viewport.Size);
|
Range<float2> range = new Range<float2>(viewport.Location, viewport.Size);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user