big pile of Render refactoring
This commit is contained in:
@@ -118,7 +118,7 @@ namespace OpenRA
|
|||||||
Manifest = new Manifest(LobbyInfo.GlobalSettings.Mods);
|
Manifest = new Manifest(LobbyInfo.GlobalSettings.Mods);
|
||||||
Timer.Time("manifest: {0}");
|
Timer.Time("manifest: {0}");
|
||||||
LoadModAssemblies(Manifest);
|
LoadModAssemblies(Manifest);
|
||||||
SheetBuilder.Initialize(Renderer);
|
SheetBuilder.Initialize();
|
||||||
LoadModPackages();
|
LoadModPackages();
|
||||||
Timer.Time("load assemblies, packages: {0}");
|
Timer.Time("load assemblies, packages: {0}");
|
||||||
packageChangePending = false;
|
packageChangePending = false;
|
||||||
@@ -129,7 +129,7 @@ namespace OpenRA
|
|||||||
static void LoadMap(string mapName)
|
static void LoadMap(string mapName)
|
||||||
{
|
{
|
||||||
Timer.Time("----LoadMap");
|
Timer.Time("----LoadMap");
|
||||||
SheetBuilder.Initialize(Renderer);
|
SheetBuilder.Initialize();
|
||||||
Manifest = new Manifest(LobbyInfo.GlobalSettings.Mods);
|
Manifest = new Manifest(LobbyInfo.GlobalSettings.Mods);
|
||||||
Timer.Time("manifest: {0}");
|
Timer.Time("manifest: {0}");
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Graphics
|
|||||||
collections.Add(elementName, images);
|
collections.Add(elementName, images);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Sprite GetImage(Renderer renderer, string collection, string image)
|
public static Sprite GetImage(string collection, string image)
|
||||||
{
|
{
|
||||||
// Cached sprite
|
// Cached sprite
|
||||||
if (cachedSprites.ContainsKey(collection) && cachedSprites[collection].ContainsKey(image))
|
if (cachedSprites.ContainsKey(collection) && cachedSprites[collection].ContainsKey(image))
|
||||||
@@ -72,14 +72,14 @@ namespace OpenRA.Graphics
|
|||||||
sheet = cachedSheets[mi.Src];
|
sheet = cachedSheets[mi.Src];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sheet = new Sheet(renderer, mi.Src);
|
sheet = new Sheet(mi.Src);
|
||||||
cachedSheets.Add(mi.Src, sheet);
|
cachedSheets.Add(mi.Src, sheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache the sprite
|
// Cache the sprite
|
||||||
if (!cachedSprites.ContainsKey(collection))
|
if (!cachedSprites.ContainsKey(collection))
|
||||||
cachedSprites.Add(collection, new Dictionary<string, Sprite>());
|
cachedSprites.Add(collection, new Dictionary<string, Sprite>());
|
||||||
cachedSprites[collection].Add(image, mi.GetImage(renderer, sheet));
|
cachedSprites[collection].Add(image, mi.GetImage(sheet));
|
||||||
|
|
||||||
return cachedSprites[collection][image];
|
return cachedSprites[collection][image];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ namespace OpenRA.Graphics
|
|||||||
// We should probably try to fix this somehow
|
// We should probably try to fix this somehow
|
||||||
static Dictionary<string, Palette> palettes;
|
static Dictionary<string, Palette> palettes;
|
||||||
static Dictionary<string, int> indices;
|
static Dictionary<string, int> indices;
|
||||||
public HardwarePalette(Renderer renderer, Map map)
|
public HardwarePalette(Map map)
|
||||||
: base(renderer,new Size(256, MaxPalettes))
|
: base(new Size(256, MaxPalettes))
|
||||||
{
|
{
|
||||||
palettes = new Dictionary<string, Palette>();
|
palettes = new Dictionary<string, Palette>();
|
||||||
indices = new Dictionary<string, int>();
|
indices = new Dictionary<string, int>();
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace OpenRA.Graphics
|
|||||||
int.Parse(e.GetAttribute("height")));
|
int.Parse(e.GetAttribute("height")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Sprite GetImage(Renderer r, Sheet s)
|
public Sprite GetImage(Sheet s)
|
||||||
{
|
{
|
||||||
return new Sprite(s, rect, TextureChannel.Alpha);
|
return new Sprite(s, rect, TextureChannel.Alpha);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,18 +21,16 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
readonly World world;
|
readonly World world;
|
||||||
Sheet sheet;
|
Sheet sheet;
|
||||||
SpriteRenderer rgbaRenderer;
|
|
||||||
Sprite sprite;
|
Sprite sprite;
|
||||||
Bitmap terrain, customLayer;
|
Bitmap terrain, customLayer;
|
||||||
Rectangle bounds;
|
Rectangle bounds;
|
||||||
|
|
||||||
const int alpha = 230;
|
const int alpha = 230;
|
||||||
|
|
||||||
public Minimap(World world, Renderer r)
|
public Minimap(World world)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
sheet = new Sheet(r, new Size(world.Map.MapSize.X, world.Map.MapSize.Y));
|
sheet = new Sheet( new Size(world.Map.MapSize.X, world.Map.MapSize.Y));
|
||||||
rgbaRenderer = r.RgbaSpriteRenderer;
|
|
||||||
var size = Math.Max(world.Map.Width, world.Map.Height);
|
var size = Math.Max(world.Map.Width, world.Map.Height);
|
||||||
var dw = (size - world.Map.Width) / 2;
|
var dw = (size - world.Map.Width) / 2;
|
||||||
var dh = (size - world.Map.Height) / 2;
|
var dh = (size - world.Map.Height) / 2;
|
||||||
@@ -135,9 +133,9 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public void Draw(RectangleF rect)
|
public void Draw(RectangleF rect)
|
||||||
{
|
{
|
||||||
rgbaRenderer.DrawSprite(sprite,
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite,
|
||||||
new float2(rect.X, rect.Y), "chrome", new float2(rect.Width, rect.Height));
|
new float2(rect.X, rect.Y), "chrome", new float2(rect.Width, rect.Height));
|
||||||
rgbaRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
int2 CellToMinimapPixel(RectangleF viewRect, int2 p)
|
int2 CellToMinimapPixel(RectangleF viewRect, int2 p)
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ namespace OpenRA.Graphics
|
|||||||
WorldSpriteRenderer = new SpriteRenderer( this, WorldSpriteShader );
|
WorldSpriteRenderer = new SpriteRenderer( this, WorldSpriteShader );
|
||||||
LineRenderer = new LineRenderer(this);
|
LineRenderer = new LineRenderer(this);
|
||||||
|
|
||||||
RegularFont = new SpriteFont(this, "FreeSans.ttf", 14);
|
RegularFont = new SpriteFont("FreeSans.ttf", 14);
|
||||||
BoldFont = new SpriteFont(this, "FreeSansBold.ttf", 14);
|
BoldFont = new SpriteFont("FreeSansBold.ttf", 14);
|
||||||
TitleFont = new SpriteFont(this, "titles.ttf", 48);
|
TitleFont = new SpriteFont("titles.ttf", 48);
|
||||||
}
|
}
|
||||||
|
|
||||||
IGraphicsDevice CreateDevice( Assembly rendererDll, int width, int height, WindowMode window, bool vsync )
|
IGraphicsDevice CreateDevice( Assembly rendererDll, int width, int height, WindowMode window, bool vsync )
|
||||||
|
|||||||
@@ -16,20 +16,17 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
public class Sheet
|
public class Sheet
|
||||||
{
|
{
|
||||||
readonly Renderer renderer;
|
|
||||||
protected readonly Bitmap bitmap;
|
protected readonly Bitmap bitmap;
|
||||||
ITexture texture;
|
ITexture texture;
|
||||||
bool dirty;
|
bool dirty;
|
||||||
|
|
||||||
internal Sheet(Renderer renderer, Size size)
|
internal Sheet(Size size)
|
||||||
{
|
{
|
||||||
this.renderer = renderer;
|
|
||||||
this.bitmap = new Bitmap(size.Width, size.Height);
|
this.bitmap = new Bitmap(size.Width, size.Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Sheet(Renderer renderer, string filename)
|
internal Sheet(string filename)
|
||||||
{
|
{
|
||||||
this.renderer = renderer;
|
|
||||||
this.bitmap = (Bitmap)Image.FromStream(FileSystem.Open(filename));
|
this.bitmap = (Bitmap)Image.FromStream(FileSystem.Open(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +35,7 @@ namespace OpenRA.Graphics
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (texture == null)
|
if (texture == null)
|
||||||
texture = renderer.Device.CreateTexture(bitmap);
|
texture = Game.Renderer.Device.CreateTexture(bitmap);
|
||||||
|
|
||||||
if (dirty)
|
if (dirty)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,14 +15,13 @@ namespace OpenRA.Graphics
|
|||||||
public class SheetBuilder
|
public class SheetBuilder
|
||||||
{
|
{
|
||||||
public static SheetBuilder SharedInstance;
|
public static SheetBuilder SharedInstance;
|
||||||
internal static void Initialize(Renderer r)
|
internal static void Initialize()
|
||||||
{
|
{
|
||||||
SharedInstance = new SheetBuilder(r, TextureChannel.Red);
|
SharedInstance = new SheetBuilder(TextureChannel.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal SheetBuilder(Renderer r, TextureChannel ch)
|
internal SheetBuilder(TextureChannel ch)
|
||||||
{
|
{
|
||||||
renderer = r;
|
|
||||||
current = null;
|
current = null;
|
||||||
rowHeight = 0;
|
rowHeight = 0;
|
||||||
channel = null;
|
channel = null;
|
||||||
@@ -45,9 +44,8 @@ namespace OpenRA.Graphics
|
|||||||
return Add(data, size);
|
return Add(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sheet NewSheet() { return new Sheet( renderer, new Size( Renderer.SheetSize, Renderer.SheetSize ) ); }
|
Sheet NewSheet() { return new Sheet(new Size( Renderer.SheetSize, Renderer.SheetSize ) ); }
|
||||||
|
|
||||||
Renderer renderer;
|
|
||||||
Sheet current = null;
|
Sheet current = null;
|
||||||
int rowHeight = 0;
|
int rowHeight = 0;
|
||||||
Point p;
|
Point p;
|
||||||
|
|||||||
@@ -19,12 +19,10 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
public class SpriteFont
|
public class SpriteFont
|
||||||
{
|
{
|
||||||
Renderer renderer;
|
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
public SpriteFont(Renderer r, string name, int size)
|
public SpriteFont(string name, int size)
|
||||||
{
|
{
|
||||||
this.renderer = r;
|
|
||||||
this.size = size;
|
this.size = size;
|
||||||
|
|
||||||
if (0 != FT.FT_New_Face(library, name, 0, out face))
|
if (0 != FT.FT_New_Face(library, name, 0, out face))
|
||||||
@@ -34,7 +32,7 @@ namespace OpenRA.Graphics
|
|||||||
glyphs = new Cache<Pair<char, Color>, GlyphInfo>(CreateGlyph);
|
glyphs = new Cache<Pair<char, Color>, GlyphInfo>(CreateGlyph);
|
||||||
|
|
||||||
// setup a 1-channel SheetBuilder for our private use
|
// setup a 1-channel SheetBuilder for our private use
|
||||||
if (builder == null) builder = new SheetBuilder(r, TextureChannel.Alpha);
|
if (builder == null) builder = new SheetBuilder(TextureChannel.Alpha);
|
||||||
|
|
||||||
PrecacheColor(Color.White);
|
PrecacheColor(Color.White);
|
||||||
PrecacheColor(Color.Red);
|
PrecacheColor(Color.Red);
|
||||||
@@ -63,7 +61,7 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
|
|
||||||
var g = glyphs[Pair.New(s, c)];
|
var g = glyphs[Pair.New(s, c)];
|
||||||
renderer.RgbaSpriteRenderer.DrawSprite(g.Sprite,
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(g.Sprite,
|
||||||
new float2(
|
new float2(
|
||||||
(int)Math.Round(p.X + g.Offset.X, 0),
|
(int)Math.Round(p.X + g.Offset.X, 0),
|
||||||
p.Y + g.Offset.Y),
|
p.Y + g.Offset.Y),
|
||||||
|
|||||||
@@ -23,13 +23,11 @@ namespace OpenRA.Graphics
|
|||||||
Sheet terrainSheet;
|
Sheet terrainSheet;
|
||||||
|
|
||||||
World world;
|
World world;
|
||||||
Renderer renderer;
|
|
||||||
Map map;
|
Map map;
|
||||||
|
|
||||||
public TerrainRenderer(World world, Renderer renderer, WorldRenderer wr)
|
public TerrainRenderer(World world, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.renderer = renderer;
|
|
||||||
this.map = world.Map;
|
this.map = world.Map;
|
||||||
|
|
||||||
Size tileSize = new Size( Game.CellSize, Game.CellSize );
|
Size tileSize = new Size( Game.CellSize, Game.CellSize );
|
||||||
@@ -58,10 +56,10 @@ namespace OpenRA.Graphics
|
|||||||
throw new InvalidOperationException("Terrain sprites span multiple sheets");
|
throw new InvalidOperationException("Terrain sprites span multiple sheets");
|
||||||
}
|
}
|
||||||
|
|
||||||
vertexBuffer = renderer.Device.CreateVertexBuffer( vertices.Length );
|
vertexBuffer = Game.Renderer.Device.CreateVertexBuffer( vertices.Length );
|
||||||
vertexBuffer.SetData( vertices );
|
vertexBuffer.SetData( vertices );
|
||||||
|
|
||||||
indexBuffer = renderer.Device.CreateIndexBuffer( indices.Length );
|
indexBuffer = Game.Renderer.Device.CreateIndexBuffer( indices.Length );
|
||||||
indexBuffer.SetData( indices );
|
indexBuffer.SetData( indices );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,12 +91,12 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
if( lastRow < firstRow ) lastRow = firstRow;
|
if( lastRow < firstRow ) lastRow = firstRow;
|
||||||
|
|
||||||
renderer.SpriteShader.SetValue( "DiffuseTexture", terrainSheet.Texture );
|
Game.Renderer.SpriteShader.SetValue( "DiffuseTexture", terrainSheet.Texture );
|
||||||
renderer.SpriteShader.Render(() =>
|
Game.Renderer.SpriteShader.Render(() =>
|
||||||
renderer.DrawBatch(vertexBuffer, indexBuffer,
|
Game.Renderer.DrawBatch(vertexBuffer, indexBuffer,
|
||||||
new Range<int>(verticesPerRow * firstRow, verticesPerRow * lastRow),
|
new Range<int>(verticesPerRow * firstRow, verticesPerRow * lastRow),
|
||||||
new Range<int>(indicesPerRow * firstRow, indicesPerRow * lastRow),
|
new Range<int>(indicesPerRow * firstRow, indicesPerRow * lastRow),
|
||||||
PrimitiveType.TriangleList, renderer.SpriteShader));
|
PrimitiveType.TriangleList, Game.Renderer.SpriteShader));
|
||||||
|
|
||||||
foreach (var r in world.WorldActor.traits.WithInterface<IRenderOverlay>())
|
foreach (var r in world.WorldActor.traits.WithInterface<IRenderOverlay>())
|
||||||
r.Render();
|
r.Render();
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
|
||||||
terrainRenderer = new TerrainRenderer(world, Game.Renderer, this);
|
terrainRenderer = new TerrainRenderer(world, this);
|
||||||
uiOverlay = new UiOverlay(Game.Renderer.SpriteRenderer);
|
uiOverlay = new UiOverlay();
|
||||||
palette = new HardwarePalette(Game.Renderer, world.Map);
|
palette = new HardwarePalette(world.Map);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawLine(float2 start, float2 end, Color startColor, Color endColor)
|
public void DrawLine(float2 start, float2 end, Color startColor, Color endColor)
|
||||||
@@ -134,7 +134,7 @@ namespace OpenRA.Graphics
|
|||||||
Game.controller.orderGenerator.Render(world);
|
Game.controller.orderGenerator.Render(world);
|
||||||
|
|
||||||
if (world.LocalPlayer != null)
|
if (world.LocalPlayer != null)
|
||||||
world.LocalPlayer.Shroud.Draw(Game.Renderer.SpriteRenderer);
|
world.LocalPlayer.Shroud.Draw();
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.Flush();
|
Game.Renderer.SpriteRenderer.Flush();
|
||||||
|
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace OpenRA
|
|||||||
return shadowBits[SpecialShroudTiles[u ^ uSides][v]];
|
return shadowBits[SpecialShroudTiles[u ^ uSides][v]];
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Draw(SpriteRenderer r)
|
internal void Draw()
|
||||||
{
|
{
|
||||||
if (disabled)
|
if (disabled)
|
||||||
return;
|
return;
|
||||||
@@ -157,21 +157,21 @@ namespace OpenRA
|
|||||||
|
|
||||||
if (starti != i)
|
if (starti != i)
|
||||||
{
|
{
|
||||||
r.DrawSprite(fogSprites[starti, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[starti, j],
|
||||||
Game.CellSize * new float2(starti, j),
|
Game.CellSize * new float2(starti, j),
|
||||||
shroudPalette,
|
shroudPalette,
|
||||||
new float2(Game.CellSize * (i - starti), Game.CellSize));
|
new float2(Game.CellSize * (i - starti), Game.CellSize));
|
||||||
starti = i+1;
|
starti = i+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.DrawSprite(fogSprites[i, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[i, j],
|
||||||
Game.CellSize * new float2(i, j),
|
Game.CellSize * new float2(i, j),
|
||||||
shroudPalette);
|
shroudPalette);
|
||||||
starti = i+1;
|
starti = i+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (starti < maxx)
|
if (starti < maxx)
|
||||||
r.DrawSprite(fogSprites[starti, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[starti, j],
|
||||||
Game.CellSize * new float2(starti, j),
|
Game.CellSize * new float2(starti, j),
|
||||||
shroudPalette,
|
shroudPalette,
|
||||||
new float2(Game.CellSize * (maxx - starti), Game.CellSize));
|
new float2(Game.CellSize * (maxx - starti), Game.CellSize));
|
||||||
@@ -189,21 +189,21 @@ namespace OpenRA
|
|||||||
|
|
||||||
if (starti != i)
|
if (starti != i)
|
||||||
{
|
{
|
||||||
r.DrawSprite(sprites[starti, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(sprites[starti, j],
|
||||||
Game.CellSize * new float2(starti, j),
|
Game.CellSize * new float2(starti, j),
|
||||||
shroudPalette,
|
shroudPalette,
|
||||||
new float2(Game.CellSize * (i - starti), Game.CellSize));
|
new float2(Game.CellSize * (i - starti), Game.CellSize));
|
||||||
starti = i + 1;
|
starti = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.DrawSprite(sprites[i, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(sprites[i, j],
|
||||||
Game.CellSize * new float2(i, j),
|
Game.CellSize * new float2(i, j),
|
||||||
shroudPalette);
|
shroudPalette);
|
||||||
starti = i + 1;
|
starti = i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (starti < maxx)
|
if (starti < maxx)
|
||||||
r.DrawSprite(sprites[starti, j],
|
Game.Renderer.SpriteRenderer.DrawSprite(sprites[starti, j],
|
||||||
Game.CellSize * new float2(starti, j),
|
Game.CellSize * new float2(starti, j),
|
||||||
shroudPalette,
|
shroudPalette,
|
||||||
new float2(Game.CellSize * (maxx - starti), Game.CellSize));
|
new float2(Game.CellSize * (maxx - starti), Game.CellSize));
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
class BibLayer: IRenderOverlay, ILoadWorldHook
|
class BibLayer: IRenderOverlay, ILoadWorldHook
|
||||||
{
|
{
|
||||||
SpriteRenderer spriteRenderer;
|
|
||||||
World world;
|
World world;
|
||||||
BibLayerInfo info;
|
BibLayerInfo info;
|
||||||
|
|
||||||
@@ -34,7 +33,6 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
public BibLayer(Actor self, BibLayerInfo info)
|
public BibLayer(Actor self, BibLayerInfo info)
|
||||||
{
|
{
|
||||||
spriteRenderer = Game.Renderer.SpriteRenderer;
|
|
||||||
this.info = info;
|
this.info = info;
|
||||||
bibSprites = info.BibTypes.Select(x => SpriteSheetBuilder.LoadAllSprites(x)).ToArray();
|
bibSprites = info.BibTypes.Select(x => SpriteSheetBuilder.LoadAllSprites(x)).ToArray();
|
||||||
|
|
||||||
@@ -90,7 +88,7 @@ namespace OpenRA.Traits
|
|||||||
var t = new int2(x, y);
|
var t = new int2(x, y);
|
||||||
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(t) || tiles[x,y].type == 0) continue;
|
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(t) || tiles[x,y].type == 0) continue;
|
||||||
|
|
||||||
spriteRenderer.DrawSprite(bibSprites[tiles[x, y].type - 1][tiles[x, y].image],
|
Game.Renderer.SpriteRenderer.DrawSprite(bibSprites[tiles[x, y].type - 1][tiles[x, y].image],
|
||||||
Game.CellSize * t, "terrain");
|
Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,17 +19,11 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
public class ResourceLayer: IRenderOverlay, ILoadWorldHook, ITerrainTypeModifier
|
public class ResourceLayer: IRenderOverlay, ILoadWorldHook, ITerrainTypeModifier
|
||||||
{
|
{
|
||||||
SpriteRenderer sr;
|
|
||||||
World world;
|
World world;
|
||||||
|
|
||||||
public ResourceType[] resourceTypes;
|
public ResourceType[] resourceTypes;
|
||||||
CellContents[,] content;
|
CellContents[,] content;
|
||||||
|
|
||||||
public ResourceLayer()
|
|
||||||
{
|
|
||||||
sr = Game.Renderer.SpriteRenderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Render()
|
public void Render()
|
||||||
{
|
{
|
||||||
var cliprect = Game.viewport.ShroudBounds().HasValue
|
var cliprect = Game.viewport.ShroudBounds().HasValue
|
||||||
@@ -50,7 +44,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
var c = content[x, y];
|
var c = content[x, y];
|
||||||
if (c.image != null)
|
if (c.image != null)
|
||||||
sr.DrawSprite(c.image[c.density],
|
Game.Renderer.SpriteRenderer.DrawSprite(c.image[c.density],
|
||||||
Game.CellSize * new int2(x, y),
|
Game.CellSize * new int2(x, y),
|
||||||
c.type.info.Palette);
|
c.type.info.Palette);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,14 +27,12 @@ namespace OpenRA.Traits
|
|||||||
public class SmudgeLayer: IRenderOverlay, ILoadWorldHook
|
public class SmudgeLayer: IRenderOverlay, ILoadWorldHook
|
||||||
{
|
{
|
||||||
public SmudgeLayerInfo Info;
|
public SmudgeLayerInfo Info;
|
||||||
SpriteRenderer spriteRenderer;
|
|
||||||
TileReference<byte,byte>[,] tiles;
|
TileReference<byte,byte>[,] tiles;
|
||||||
Sprite[][] smudgeSprites;
|
Sprite[][] smudgeSprites;
|
||||||
World world;
|
World world;
|
||||||
|
|
||||||
public SmudgeLayer(SmudgeLayerInfo info)
|
public SmudgeLayer(SmudgeLayerInfo info)
|
||||||
{
|
{
|
||||||
spriteRenderer = Game.Renderer.SpriteRenderer;
|
|
||||||
this.Info = info;
|
this.Info = info;
|
||||||
smudgeSprites = Info.Types.Select(x => SpriteSheetBuilder.LoadAllSprites(x)).ToArray();
|
smudgeSprites = Info.Types.Select(x => SpriteSheetBuilder.LoadAllSprites(x)).ToArray();
|
||||||
}
|
}
|
||||||
@@ -86,7 +84,7 @@ namespace OpenRA.Traits
|
|||||||
var t = new int2(x, y);
|
var t = new int2(x, y);
|
||||||
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(t) || tiles[x,y].type == 0) continue;
|
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(t) || tiles[x,y].type == 0) continue;
|
||||||
|
|
||||||
spriteRenderer.DrawSprite(smudgeSprites[tiles[x,y].type- 1][tiles[x,y].image],
|
Game.Renderer.SpriteRenderer.DrawSprite(smudgeSprites[tiles[x,y].type- 1][tiles[x,y].image],
|
||||||
Game.CellSize * t, "terrain");
|
Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,10 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
class UiOverlay
|
class UiOverlay
|
||||||
{
|
{
|
||||||
SpriteRenderer spriteRenderer;
|
|
||||||
Sprite buildOk, buildBlocked, unitDebug;
|
Sprite buildOk, buildBlocked, unitDebug;
|
||||||
|
|
||||||
public UiOverlay(SpriteRenderer spriteRenderer)
|
public UiOverlay()
|
||||||
{
|
{
|
||||||
this.spriteRenderer = spriteRenderer;
|
|
||||||
|
|
||||||
buildOk = SynthesizeTile(0x0f);
|
buildOk = SynthesizeTile(0x0f);
|
||||||
buildBlocked = SynthesizeTile(0x08);
|
buildBlocked = SynthesizeTile(0x08);
|
||||||
unitDebug = SynthesizeTile(0x04);
|
unitDebug = SynthesizeTile(0x04);
|
||||||
@@ -51,7 +48,7 @@ namespace OpenRA
|
|||||||
for (var i = world.Map.Bounds.Left; i < world.Map.Bounds.Right; i++)
|
for (var i = world.Map.Bounds.Left; i < world.Map.Bounds.Right; i++)
|
||||||
for (var j = world.Map.Bounds.Top; j < world.Map.Bounds.Bottom; j++)
|
for (var j = world.Map.Bounds.Top; j < world.Map.Bounds.Bottom; j++)
|
||||||
if (uim.GetUnitsAt(new int2(i, j)).Any())
|
if (uim.GetUnitsAt(new int2(i, j)).Any())
|
||||||
spriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), "terrain");
|
Game.Renderer.SpriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +62,7 @@ namespace OpenRA
|
|||||||
if (Rules.Info[name].Traits.Contains<LineBuildInfo>())
|
if (Rules.Info[name].Traits.Contains<LineBuildInfo>())
|
||||||
{
|
{
|
||||||
foreach (var t in LineBuildUtils.GetLineBuildCells(world, topLeft, name, bi))
|
foreach (var t in LineBuildUtils.GetLineBuildCells(world, topLeft, name, bi))
|
||||||
spriteRenderer.DrawSprite(world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, t)
|
Game.Renderer.SpriteRenderer.DrawSprite(world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, t)
|
||||||
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -73,11 +70,11 @@ namespace OpenRA
|
|||||||
var res = world.WorldActor.traits.Get<ResourceLayer>();
|
var res = world.WorldActor.traits.Get<ResourceLayer>();
|
||||||
var isCloseEnough = world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, topLeft);
|
var isCloseEnough = world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, topLeft);
|
||||||
foreach (var t in Footprint.Tiles(name, bi, topLeft))
|
foreach (var t in Footprint.Tiles(name, bi, topLeft))
|
||||||
spriteRenderer.DrawSprite((isCloseEnough && world.IsCellBuildable(t, bi.WaterBound) && res.GetResource(t) == null)
|
Game.Renderer.SpriteRenderer.DrawSprite((isCloseEnough && world.IsCellBuildable(t, bi.WaterBound) && res.GetResource(t) == null)
|
||||||
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
|
|
||||||
spriteRenderer.Flush();
|
Game.Renderer.SpriteRenderer.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -201,13 +201,12 @@ namespace OpenRA.Widgets
|
|||||||
var numActualRows = Math.Max((allBuildables.Length + Columns - 1) / Columns, Rows);
|
var numActualRows = Math.Max((allBuildables.Length + Columns - 1) / Columns, Rows);
|
||||||
|
|
||||||
// Palette Background
|
// Palette Background
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer, paletteCollection, "top"), new float2(origin.X - 9, origin.Y - 9));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "top"), new float2(origin.X - 9, origin.Y - 9));
|
||||||
for (var w = 0; w < numActualRows; w++)
|
for (var w = 0; w < numActualRows; w++)
|
||||||
WidgetUtils.DrawRGBA(
|
WidgetUtils.DrawRGBA(
|
||||||
ChromeProvider.GetImage(Game.Renderer, paletteCollection,
|
ChromeProvider.GetImage(paletteCollection, "bg-" + (w % 4).ToString()),
|
||||||
"bg-" + (w % 4).ToString()),
|
|
||||||
new float2(origin.X - 9, origin.Y + 48 * w));
|
new float2(origin.X - 9, origin.Y + 48 * w));
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer, paletteCollection, "bottom"),
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "bottom"),
|
||||||
new float2(origin.X - 9, origin.Y - 1 + 48 * numActualRows));
|
new float2(origin.X - 9, origin.Y - 1 + 48 * numActualRows));
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
|
|
||||||
@@ -283,14 +282,14 @@ namespace OpenRA.Widgets
|
|||||||
new float2(Game.viewport.Width, origin.Y + numActualRows * 48 + 9).ToInt2());
|
new float2(Game.viewport.Width, origin.Y + numActualRows * 48 + 9).ToInt2());
|
||||||
|
|
||||||
// Palette Dock
|
// Palette Dock
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer, paletteCollection, "dock-top"),
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "dock-top"),
|
||||||
new float2(Game.viewport.Width - 14, origin.Y - 23));
|
new float2(Game.viewport.Width - 14, origin.Y - 23));
|
||||||
|
|
||||||
for (int i = 0; i < numActualRows; i++)
|
for (int i = 0; i < numActualRows; i++)
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer, paletteCollection, "dock-" + (i % 4).ToString()),
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "dock-" + (i % 4).ToString()),
|
||||||
new float2(Game.viewport.Width - 14, origin.Y + 48 * i));
|
new float2(Game.viewport.Width - 14, origin.Y + 48 * i));
|
||||||
|
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer, paletteCollection, "dock-bottom"),
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "dock-bottom"),
|
||||||
new float2(Game.viewport.Width - 14, origin.Y - 1 + 48 * numActualRows));
|
new float2(Game.viewport.Width - 14, origin.Y - 1 + 48 * numActualRows));
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
|
|
||||||
@@ -416,7 +415,7 @@ namespace OpenRA.Widgets
|
|||||||
var producing = queue.CurrentItem(groupName);
|
var producing = queue.CurrentItem(groupName);
|
||||||
var index = q.Key == currentTab ? 2 : (producing != null && producing.Done) ? 1 : 0;
|
var index = q.Key == currentTab ? 2 : (producing != null && producing.Done) ? 1 : 0;
|
||||||
var race = world.LocalPlayer.Country.Race;
|
var race = world.LocalPlayer.Country.Race;
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(Game.Renderer,"tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y));
|
||||||
|
|
||||||
var rect = new Rectangle((int)x,(int)y,(int)tabWidth,(int)tabHeight);
|
var rect = new Rectangle((int)x,(int)y,(int)tabWidth,(int)tabHeight);
|
||||||
tabs.Add(Pair.New(rect, HandleTabClick(groupName, world)));
|
tabs.Add(Pair.New(rect, HandleTabClick(groupName, world)));
|
||||||
|
|||||||
@@ -38,22 +38,19 @@ namespace OpenRA.Widgets
|
|||||||
if (DrawBackground)
|
if (DrawBackground)
|
||||||
WidgetUtils.DrawPanel("dialog3", chatLogArea);
|
WidgetUtils.DrawPanel("dialog3", chatLogArea);
|
||||||
|
|
||||||
var renderer = Game.Renderer;
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
var font = renderer.RegularFont;
|
Game.Renderer.Device.EnableScissor(chatLogArea.Left, chatLogArea.Top, chatLogArea.Width, chatLogArea.Height);
|
||||||
|
|
||||||
renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
renderer.Device.EnableScissor(chatLogArea.Left, chatLogArea.Top, chatLogArea.Width, chatLogArea.Height);
|
|
||||||
foreach (var line in recentLines.AsEnumerable().Reverse())
|
foreach (var line in recentLines.AsEnumerable().Reverse())
|
||||||
{
|
{
|
||||||
chatpos.Y -= 20;
|
chatpos.Y -= 20;
|
||||||
var owner = line.Owner + ":";
|
var owner = line.Owner + ":";
|
||||||
var inset = font.Measure(owner).X + 10;
|
var inset = Game.Renderer.RegularFont.Measure(owner).X + 10;
|
||||||
font.DrawText(owner, chatpos, line.Color);
|
Game.Renderer.RegularFont.DrawText(owner, chatpos, line.Color);
|
||||||
font.DrawText(line.Text, chatpos + new int2(inset, 0), Color.White);
|
Game.Renderer.RegularFont.DrawText(line.Text, chatpos + new int2(inset, 0), Color.White);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
renderer.Device.DisableScissor();
|
Game.Renderer.Device.DisableScissor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddLine(Color c, string from, string text)
|
public void AddLine(Color c, string from, string text)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Widgets
|
|||||||
var name = GetImageName();
|
var name = GetImageName();
|
||||||
var collection = GetImageCollection();
|
var collection = GetImageCollection();
|
||||||
WidgetUtils.DrawRGBA(
|
WidgetUtils.DrawRGBA(
|
||||||
ChromeProvider.GetImage(Game.Renderer, collection, name),
|
ChromeProvider.GetImage(collection, name),
|
||||||
RenderOrigin);
|
RenderOrigin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,9 +73,9 @@ namespace OpenRA.Widgets
|
|||||||
public override void DrawInner( World world )
|
public override void DrawInner( World world )
|
||||||
{
|
{
|
||||||
if (UnownedSpawn == null)
|
if (UnownedSpawn == null)
|
||||||
UnownedSpawn = ChromeProvider.GetImage(Game.Renderer, "spawnpoints", "unowned");
|
UnownedSpawn = ChromeProvider.GetImage("spawnpoints", "unowned");
|
||||||
if (OwnedSpawn == null)
|
if (OwnedSpawn == null)
|
||||||
OwnedSpawn = ChromeProvider.GetImage(Game.Renderer, "spawnpoints", "owned");
|
OwnedSpawn = ChromeProvider.GetImage("spawnpoints", "owned");
|
||||||
|
|
||||||
var map = Map();
|
var map = Map();
|
||||||
if( map == null ) return;
|
if( map == null ) return;
|
||||||
@@ -87,7 +87,7 @@ namespace OpenRA.Widgets
|
|||||||
// Update image data
|
// Update image data
|
||||||
var preview = PreviewCache[map];
|
var preview = PreviewCache[map];
|
||||||
if( mapChooserSheet == null || mapChooserSheet.Size.Width != preview.Width || mapChooserSheet.Size.Height != preview.Height )
|
if( mapChooserSheet == null || mapChooserSheet.Size.Width != preview.Width || mapChooserSheet.Size.Height != preview.Height )
|
||||||
mapChooserSheet = new Sheet( Game.Renderer, new Size( preview.Width, preview.Height ) );
|
mapChooserSheet = new Sheet(new Size( preview.Width, preview.Height ) );
|
||||||
|
|
||||||
mapChooserSheet.Texture.SetData( preview );
|
mapChooserSheet.Texture.SetData( preview );
|
||||||
mapChooserSprite = new Sprite( mapChooserSheet, new Rectangle( 0, 0, map.Width, map.Height ), TextureChannel.Alpha );
|
mapChooserSprite = new Sprite( mapChooserSheet, new Rectangle( 0, 0, map.Width, map.Height ), TextureChannel.Alpha );
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Widgets
|
|||||||
var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race;
|
var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race;
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
||||||
ChromeProvider.GetImage(Game.Renderer, chromeCollection, "moneybin"),
|
ChromeProvider.GetImage(chromeCollection, "moneybin"),
|
||||||
new float2(Bounds.Left, 0), "chrome");
|
new float2(Bounds.Left, 0), "chrome");
|
||||||
|
|
||||||
// Cash
|
// Cash
|
||||||
@@ -51,7 +51,7 @@ namespace OpenRA.Widgets
|
|||||||
foreach (var d in cashDigits.Reverse())
|
foreach (var d in cashDigits.Reverse())
|
||||||
{
|
{
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
||||||
ChromeProvider.GetImage(Game.Renderer, digitCollection, (d - '0').ToString()),
|
ChromeProvider.GetImage(digitCollection, (d - '0').ToString()),
|
||||||
new float2(x, 6), "chrome");
|
new float2(x, 6), "chrome");
|
||||||
x -= 14;
|
x -= 14;
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@ namespace OpenRA.Widgets
|
|||||||
foreach (var d in oreDigits.Reverse())
|
foreach (var d in oreDigits.Reverse())
|
||||||
{
|
{
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(
|
||||||
ChromeProvider.GetImage(Game.Renderer, digitCollection, (d - '0').ToString()),
|
ChromeProvider.GetImage( digitCollection, (d - '0').ToString()),
|
||||||
new float2(x, 6), "chrome");
|
new float2(x, 6), "chrome");
|
||||||
x -= 14;
|
x -= 14;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
public override void DrawInner (World world)
|
public override void DrawInner (World world)
|
||||||
{
|
{
|
||||||
var image = ChromeProvider.GetImage(Game.Renderer, Image + "-button", GetImage());
|
var image = ChromeProvider.GetImage(Image + "-button", GetImage());
|
||||||
var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y);
|
var rect = new Rectangle(RenderBounds.X, RenderBounds.Y, (int)image.size.X, (int)image.size.Y);
|
||||||
|
|
||||||
if (rect.Contains(Widget.LastMousePos.ToPoint()))
|
if (rect.Contains(Widget.LastMousePos.ToPoint()))
|
||||||
|
|||||||
@@ -35,10 +35,6 @@ namespace OpenRA.Widgets
|
|||||||
&& resources.PowerDrained == 0)
|
&& resources.PowerDrained == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var renderer = Game.Renderer;
|
|
||||||
var lineRenderer = Game.Renderer.LineRenderer;
|
|
||||||
var rgbaRenderer = renderer.RgbaSpriteRenderer;
|
|
||||||
|
|
||||||
// Draw bar horizontally
|
// Draw bar horizontally
|
||||||
var barStart = powerOrigin + RadarBinWidget.radarOrigin;
|
var barStart = powerOrigin + RadarBinWidget.radarOrigin;
|
||||||
var barEnd = barStart + new float2(powerSize.Width, 0);
|
var barEnd = barStart + new float2(powerSize.Width, 0);
|
||||||
@@ -70,18 +66,18 @@ namespace OpenRA.Widgets
|
|||||||
leftOffset.X += 1;
|
leftOffset.X += 1;
|
||||||
rightOffset.X -= 1;
|
rightOffset.X -= 1;
|
||||||
}
|
}
|
||||||
lineRenderer.DrawLine(Game.viewport.Location + barStart + leftOffset, Game.viewport.Location + powerLevel + rightOffset, color, color);
|
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + barStart + leftOffset, Game.viewport.Location + powerLevel + rightOffset, color, color);
|
||||||
}
|
}
|
||||||
lineRenderer.Flush();
|
Game.Renderer.LineRenderer.Flush();
|
||||||
|
|
||||||
// Power usage indicator
|
// Power usage indicator
|
||||||
var indicator = ChromeProvider.GetImage(renderer, powerCollection, "power-indicator");
|
var indicator = ChromeProvider.GetImage( powerCollection, "power-indicator");
|
||||||
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (resources.PowerDrained / powerScaleBy);
|
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (resources.PowerDrained / powerScaleBy);
|
||||||
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
||||||
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value - indicator.size.X / 2, barStart.Y - 1);
|
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value - indicator.size.X / 2, barStart.Y - 1);
|
||||||
|
|
||||||
rgbaRenderer.DrawSprite(indicator, powerDrainLevel, "chrome");
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, powerDrainLevel, "chrome");
|
||||||
rgbaRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,17 +105,14 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
hasRadar = hasNewRadar;
|
hasRadar = hasNewRadar;
|
||||||
|
|
||||||
var renderer = Game.Renderer;
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "left"), radarOrigin, "chrome");
|
||||||
var rgbaRenderer = renderer.RgbaSpriteRenderer;
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "right"), radarOrigin + new float2(201, 0), "chrome");
|
||||||
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bottom"), radarOrigin + new float2(0, 192), "chrome");
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "left"), radarOrigin, "chrome");
|
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "right"), radarOrigin + new float2(201, 0), "chrome");
|
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bottom"), radarOrigin + new float2(0, 192), "chrome");
|
|
||||||
|
|
||||||
if (radarAnimating)
|
if (radarAnimating)
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome");
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome");
|
||||||
|
|
||||||
rgbaRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
|
|
||||||
if (radarAnimationFrame >= radarSlideAnimationLength)
|
if (radarAnimationFrame >= radarSlideAnimationLength)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,9 +25,8 @@ namespace OpenRA.Widgets
|
|||||||
public override void DrawInner(World world)
|
public override void DrawInner(World world)
|
||||||
{
|
{
|
||||||
var s = WorldUtils.FormatTime(Game.LocalTick);
|
var s = WorldUtils.FormatTime(Game.LocalTick);
|
||||||
var f = Game.Renderer.TitleFont;
|
var size = Game.Renderer.TitleFont.Measure(s);
|
||||||
var size = f.Measure(s);
|
Game.Renderer.TitleFont.DrawText(s, new float2(RenderBounds.Left - size.X / 2, RenderBounds.Top - 20), Color.White);
|
||||||
f.DrawText(s, new float2(RenderBounds.Left - size.X / 2, RenderBounds.Top - 20), Color.White);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace OpenRA.Widgets
|
|||||||
{
|
{
|
||||||
public static Sprite GetChromeImage(World world, string name)
|
public static Sprite GetChromeImage(World world, string name)
|
||||||
{
|
{
|
||||||
return ChromeProvider.GetImage(Game.Renderer, "chrome-" + world.LocalPlayer.Country.Race, name);
|
return ChromeProvider.GetImage("chrome-" + world.LocalPlayer.Country.Race, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawRGBA(Sprite s, float2 pos)
|
public static void DrawRGBA(Sprite s, float2 pos)
|
||||||
@@ -64,7 +64,7 @@ namespace OpenRA.Widgets
|
|||||||
public static int[] GetBorderSizes(string collection)
|
public static int[] GetBorderSizes(string collection)
|
||||||
{
|
{
|
||||||
var images = new[] { "border-t", "border-b", "border-l", "border-r" };
|
var images = new[] { "border-t", "border-b", "border-l", "border-r" };
|
||||||
var ss = images.Select(i => ChromeProvider.GetImage(Game.Renderer, "dialog4", i)).ToArray();
|
var ss = images.Select(i => ChromeProvider.GetImage("dialog4", i)).ToArray();
|
||||||
return new[] { (int)ss[0].size.Y, (int)ss[1].size.Y, (int)ss[2].size.X, (int)ss[3].size.X };
|
return new[] { (int)ss[0].size.Y, (int)ss[1].size.Y, (int)ss[2].size.X, (int)ss[3].size.X };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ namespace OpenRA.Widgets
|
|||||||
public static void DrawPanelPartial(string collection, Rectangle Bounds, PanelSides ps)
|
public static void DrawPanelPartial(string collection, Rectangle Bounds, PanelSides ps)
|
||||||
{
|
{
|
||||||
var images = new[] { "border-t", "border-b", "border-l", "border-r", "corner-tl", "corner-tr", "corner-bl", "corner-br", "background" };
|
var images = new[] { "border-t", "border-b", "border-l", "border-r", "corner-tl", "corner-tr", "corner-bl", "corner-br", "background" };
|
||||||
var ss = images.Select(i => ChromeProvider.GetImage(Game.Renderer, collection, i)).ToArray();
|
var ss = images.Select(i => ChromeProvider.GetImage(collection, i)).ToArray();
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
FillRectWithSprite(new Rectangle(Bounds.Left + (int)ss[2].size.X,
|
FillRectWithSprite(new Rectangle(Bounds.Left + (int)ss[2].size.X,
|
||||||
|
|||||||
@@ -37,11 +37,10 @@ namespace OpenRA.Widgets
|
|||||||
? "" : "{0}".F(actor.Owner.PlayerName);
|
? "" : "{0}".F(actor.Owner.PlayerName);
|
||||||
var text3 = (actor.Owner == world.LocalPlayer || actor.Owner.NonCombatant)
|
var text3 = (actor.Owner == world.LocalPlayer || actor.Owner.NonCombatant)
|
||||||
? "" : " ({0})".F(world.LocalPlayer.Stances[actor.Owner]);
|
? "" : " ({0})".F(world.LocalPlayer.Stances[actor.Owner]);
|
||||||
var renderer = Game.Renderer;
|
|
||||||
|
|
||||||
var sz = renderer.BoldFont.Measure(text);
|
var sz = Game.Renderer.BoldFont.Measure(text);
|
||||||
var sz2 = renderer.RegularFont.Measure(text2);
|
var sz2 = Game.Renderer.RegularFont.Measure(text2);
|
||||||
var sz3 = renderer.RegularFont.Measure(text3);
|
var sz3 = Game.Renderer.RegularFont.Measure(text3);
|
||||||
|
|
||||||
sz.X = Math.Max(sz.X, sz2.X + sz3.X + 35);
|
sz.X = Math.Max(sz.X, sz2.X + sz3.X + 35);
|
||||||
|
|
||||||
@@ -54,23 +53,23 @@ namespace OpenRA.Widgets
|
|||||||
Widget.LastMousePos.X + 20, Widget.LastMousePos.Y + 20,
|
Widget.LastMousePos.X + 20, Widget.LastMousePos.Y + 20,
|
||||||
Widget.LastMousePos.X + sz.X + 20, Widget.LastMousePos.Y + sz.Y + 20));
|
Widget.LastMousePos.X + sz.X + 20, Widget.LastMousePos.Y + sz.Y + 20));
|
||||||
|
|
||||||
renderer.BoldFont.DrawText(text,
|
Game.Renderer.BoldFont.DrawText(text,
|
||||||
new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 30), Color.White);
|
new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 30), Color.White);
|
||||||
|
|
||||||
if (text2 != "")
|
if (text2 != "")
|
||||||
{
|
{
|
||||||
renderer.RegularFont.DrawText(text2,
|
Game.Renderer.RegularFont.DrawText(text2,
|
||||||
new float2(Widget.LastMousePos.X + 65, Widget.LastMousePos.Y + 50), actor.Owner.Color);
|
new float2(Widget.LastMousePos.X + 65, Widget.LastMousePos.Y + 50), actor.Owner.Color);
|
||||||
|
|
||||||
renderer.RegularFont.DrawText(text3,
|
Game.Renderer.RegularFont.DrawText(text3,
|
||||||
new float2(Widget.LastMousePos.X + 65 + sz2.X, Widget.LastMousePos.Y + 50), Color.White);
|
new float2(Widget.LastMousePos.X + 65 + sz2.X, Widget.LastMousePos.Y + 50), Color.White);
|
||||||
|
|
||||||
WidgetUtils.DrawRGBA(
|
WidgetUtils.DrawRGBA(
|
||||||
ChromeProvider.GetImage(Game.Renderer, "flags", actor.Owner.Country.Race),
|
ChromeProvider.GetImage("flags", actor.Owner.Country.Race),
|
||||||
new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 50));
|
new float2(Widget.LastMousePos.X + 30, Widget.LastMousePos.Y + 50));
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ namespace OpenRA
|
|||||||
PathFinder = new PathFinder(this);
|
PathFinder = new PathFinder(this);
|
||||||
Timer.Time( "hooks, pathing: {0}" );
|
Timer.Time( "hooks, pathing: {0}" );
|
||||||
|
|
||||||
Minimap = new Minimap(this, Game.Renderer);
|
Minimap = new Minimap(this);
|
||||||
Timer.Time( "minimap: {0}" );
|
Timer.Time( "minimap: {0}" );
|
||||||
|
|
||||||
Timer.Time( "----end World.ctor" );
|
Timer.Time( "----end World.ctor" );
|
||||||
|
|||||||
Reference in New Issue
Block a user