Autoflush renderer. Sprite.DrawAt convenience function.
This commit is contained in:
@@ -22,7 +22,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
public void Draw(int frame, float2 pos)
|
public void Draw(int frame, float2 pos)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(sequence.GetSprite(frame), pos - sequence.Hotspot, sequence.Palette);
|
sequence.GetSprite(frame).DrawAt(pos - sequence.Hotspot, sequence.Palette);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using OpenRA.FileFormats.Graphics;
|
|||||||
|
|
||||||
namespace OpenRA.Graphics
|
namespace OpenRA.Graphics
|
||||||
{
|
{
|
||||||
public class LineRenderer
|
public class LineRenderer : Renderer.IBatchRenderer
|
||||||
{
|
{
|
||||||
Renderer renderer;
|
Renderer renderer;
|
||||||
|
|
||||||
@@ -46,6 +46,8 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public void DrawLine( float2 start, float2 end, Color startColor, Color endColor )
|
public void DrawLine( float2 start, float2 end, Color startColor, Color endColor )
|
||||||
{
|
{
|
||||||
|
Renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
if( ni + 2 > Renderer.TempBufferSize )
|
if( ni + 2 > Renderer.TempBufferSize )
|
||||||
Flush();
|
Flush();
|
||||||
if( nv + 2 > Renderer.TempBufferSize )
|
if( nv + 2 > Renderer.TempBufferSize )
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
internal static int SheetSize;
|
internal static int SheetSize;
|
||||||
|
|
||||||
public IShader SpriteShader { get; private set; } /* note: shared shader params */
|
internal IShader SpriteShader { get; private set; } /* note: shared shader params */
|
||||||
public IShader LineShader { get; private set; }
|
internal IShader LineShader { get; private set; }
|
||||||
public IShader RgbaSpriteShader { get; private set; }
|
internal IShader RgbaSpriteShader { get; private set; }
|
||||||
public IShader WorldSpriteShader { get; private set; }
|
internal IShader WorldSpriteShader { get; private set; }
|
||||||
|
|
||||||
public SpriteRenderer SpriteRenderer { get; private set; }
|
public SpriteRenderer SpriteRenderer { get; private set; }
|
||||||
public SpriteRenderer RgbaSpriteRenderer { get; private set; }
|
public SpriteRenderer RgbaSpriteRenderer { get; private set; }
|
||||||
@@ -67,7 +67,7 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IGraphicsDevice Device { get { return device; } }
|
internal IGraphicsDevice Device { get { return device; } }
|
||||||
|
|
||||||
public void BeginFrame(float2 scroll)
|
public void BeginFrame(float2 scroll)
|
||||||
{
|
{
|
||||||
@@ -94,6 +94,7 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public void EndFrame()
|
public void EndFrame()
|
||||||
{
|
{
|
||||||
|
Flush();
|
||||||
device.End();
|
device.End();
|
||||||
device.Present();
|
device.Present();
|
||||||
}
|
}
|
||||||
@@ -124,9 +125,7 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public void Flush()
|
public void Flush()
|
||||||
{
|
{
|
||||||
WorldSpriteRenderer.Flush();
|
CurrentBatchRenderer = null;
|
||||||
RgbaSpriteRenderer.Flush();
|
|
||||||
LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static IGraphicsDevice device;
|
static IGraphicsDevice device;
|
||||||
@@ -177,5 +176,35 @@ namespace OpenRA.Graphics
|
|||||||
tempBuffersI.Enqueue( ret );
|
tempBuffersI.Enqueue( ret );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface IBatchRenderer
|
||||||
|
{
|
||||||
|
void Flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
static IBatchRenderer currentBatchRenderer;
|
||||||
|
public static IBatchRenderer CurrentBatchRenderer
|
||||||
|
{
|
||||||
|
get { return currentBatchRenderer; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if( currentBatchRenderer == value ) return;
|
||||||
|
if( currentBatchRenderer != null )
|
||||||
|
currentBatchRenderer.Flush();
|
||||||
|
currentBatchRenderer = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EnableScissor(int left, int top, int width, int height)
|
||||||
|
{
|
||||||
|
Flush();
|
||||||
|
Device.EnableScissor( left, top, width, height );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisableScissor()
|
||||||
|
{
|
||||||
|
Flush();
|
||||||
|
Device.DisableScissor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,21 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
return uvhax[ k ];
|
return uvhax[ k ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DrawAt( float2 location, string palette )
|
||||||
|
{
|
||||||
|
Game.Renderer.SpriteRenderer.DrawSprite( this, location, palette );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawAt(float2 location, string palette, float2 size)
|
||||||
|
{
|
||||||
|
Game.Renderer.SpriteRenderer.DrawSprite( this, location, palette, size );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawAt( float2 location, int paletteIndex, float2 size )
|
||||||
|
{
|
||||||
|
Game.Renderer.SpriteRenderer.DrawSprite( this, location, paletteIndex, size );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TextureChannel
|
public enum TextureChannel
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ using OpenRA.FileFormats.Graphics;
|
|||||||
|
|
||||||
namespace OpenRA.Graphics
|
namespace OpenRA.Graphics
|
||||||
{
|
{
|
||||||
public class SpriteRenderer
|
public class SpriteRenderer : Renderer.IBatchRenderer
|
||||||
{
|
{
|
||||||
Renderer renderer;
|
Renderer renderer;
|
||||||
IShader shader;
|
IShader shader;
|
||||||
@@ -66,6 +66,8 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public void DrawSprite(Sprite s, float2 location, int paletteIndex, float2 size)
|
public void DrawSprite(Sprite s, float2 location, int paletteIndex, float2 size)
|
||||||
{
|
{
|
||||||
|
Renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
if (s.sheet != currentSheet)
|
if (s.sheet != currentSheet)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
|
|||||||
@@ -107,10 +107,6 @@ namespace OpenRA.Graphics
|
|||||||
var c = new Cursor(cursorName);
|
var c = new Cursor(cursorName);
|
||||||
c.Draw((int)cursorFrame, Viewport.LastMousePos + Location);
|
c.Draw((int)cursorFrame, Viewport.LastMousePos + Location);
|
||||||
|
|
||||||
renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
renderer.SpriteRenderer.Flush();
|
|
||||||
renderer.WorldSpriteRenderer.Flush();
|
|
||||||
|
|
||||||
renderer.EndFrame();
|
renderer.EndFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,20 +90,16 @@ namespace OpenRA.Graphics
|
|||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
var bounds = GetBoundsRect();
|
var bounds = GetBoundsRect();
|
||||||
Game.Renderer.Device.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height);
|
Game.Renderer.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height);
|
||||||
|
|
||||||
terrainRenderer.Draw(Game.viewport);
|
terrainRenderer.Draw(Game.viewport);
|
||||||
|
|
||||||
if (world.OrderGenerator != null)
|
if (world.OrderGenerator != null)
|
||||||
world.OrderGenerator.RenderBeforeWorld(world);
|
world.OrderGenerator.RenderBeforeWorld(world);
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.Flush();
|
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
|
|
||||||
foreach (var image in worldSprites)
|
foreach (var image in worldSprites)
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(image.Sprite, image.Pos, image.Palette);
|
image.Sprite.DrawAt(image.Pos, image.Palette);
|
||||||
uiOverlay.Draw(world);
|
uiOverlay.Draw(world);
|
||||||
Game.Renderer.SpriteRenderer.Flush();
|
|
||||||
|
|
||||||
if (world.OrderGenerator != null)
|
if (world.OrderGenerator != null)
|
||||||
world.OrderGenerator.RenderAfterWorld(world);
|
world.OrderGenerator.RenderAfterWorld(world);
|
||||||
@@ -111,11 +107,7 @@ namespace OpenRA.Graphics
|
|||||||
if (world.LocalPlayer != null)
|
if (world.LocalPlayer != null)
|
||||||
world.LocalPlayer.Shroud.Draw();
|
world.LocalPlayer.Shroud.Draw();
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.Flush();
|
Game.Renderer.DisableScissor();
|
||||||
|
|
||||||
Game.Renderer.Device.DisableScissor();
|
|
||||||
|
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawBox(RectangleF r, Color color)
|
void DrawBox(RectangleF r, Color color)
|
||||||
|
|||||||
@@ -163,21 +163,21 @@ namespace OpenRA
|
|||||||
|
|
||||||
if (starti != i)
|
if (starti != i)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[starti, j],
|
fogSprites[starti, j].DrawAt(
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[i, j],
|
fogSprites[i, j].DrawAt(
|
||||||
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)
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(fogSprites[starti, j],
|
fogSprites[starti, j].DrawAt(
|
||||||
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));
|
||||||
@@ -195,21 +195,21 @@ namespace OpenRA
|
|||||||
|
|
||||||
if (starti != i)
|
if (starti != i)
|
||||||
{
|
{
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(sprites[starti, j],
|
sprites[starti, j].DrawAt(
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(sprites[i, j],
|
sprites[i, j].DrawAt(
|
||||||
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)
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(sprites[starti, j],
|
sprites[starti, j].DrawAt(
|
||||||
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));
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ namespace OpenRA.Traits
|
|||||||
var pipImages = new Animation("pips");
|
var pipImages = new Animation("pips");
|
||||||
pipImages.PlayFetchIndex("groups", () => (int)group);
|
pipImages.PlayFetchIndex("groups", () => (int)group);
|
||||||
pipImages.Tick();
|
pipImages.Tick();
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(pipImages.Image, basePosition + new float2(-8, 1), "chrome");
|
pipImages.Image.DrawAt(basePosition + new float2(-8, 1), "chrome");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawPips(Actor self, float2 basePosition)
|
void DrawPips(Actor self, float2 basePosition)
|
||||||
@@ -122,7 +122,7 @@ namespace OpenRA.Traits
|
|||||||
}
|
}
|
||||||
var pipImages = new Animation("pips");
|
var pipImages = new Animation("pips");
|
||||||
pipImages.PlayRepeating(pipStrings[(int)pip]);
|
pipImages.PlayRepeating(pipStrings[(int)pip]);
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(pipImages.Image, pipxyBase + pipxyOffset, "chrome");
|
pipImages.Image.DrawAt(pipxyBase + pipxyOffset, "chrome");
|
||||||
pipxyOffset += new float2(4, 0);
|
pipxyOffset += new float2(4, 0);
|
||||||
}
|
}
|
||||||
// Increment row
|
// Increment row
|
||||||
@@ -148,7 +148,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
var tagImages = new Animation("pips");
|
var tagImages = new Animation("pips");
|
||||||
tagImages.PlayRepeating(tagStrings[(int)tag]);
|
tagImages.PlayRepeating(tagStrings[(int)tag]);
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(tagImages.Image, tagxyBase + tagxyOffset, "chrome");
|
tagImages.Image.DrawAt(tagxyBase + tagxyOffset, "chrome");
|
||||||
|
|
||||||
// Increment row
|
// Increment row
|
||||||
tagxyOffset.Y += 8;
|
tagxyOffset.Y += 8;
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ namespace OpenRA.Traits
|
|||||||
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(kv.Key))
|
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(kv.Key))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(bibSprites[kv.Value.type - 1][kv.Value.image],
|
bibSprites[kv.Value.type - 1][kv.Value.image].DrawAt(
|
||||||
Game.CellSize * kv.Key, "terrain");
|
Game.CellSize * kv.Key, "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
var c = content[x, y];
|
var c = content[x, y];
|
||||||
if (c.image != null)
|
if (c.image != null)
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(c.image[c.density],
|
c.image[c.density].DrawAt(
|
||||||
Game.CellSize * new int2(x, y),
|
Game.CellSize * new int2(x, y),
|
||||||
c.type.info.Palette);
|
c.type.info.Palette);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,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())
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), "terrain");
|
unitDebug.DrawAt(Game.CellSize * new float2(i, j), "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,19 +63,17 @@ 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))
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, t)
|
(world.IsCloseEnoughToBase(world.LocalPlayer, name, bi, t) ? buildOk : buildBlocked)
|
||||||
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
.DrawAt(Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var res = world.WorldActor.Trait<ResourceLayer>();
|
var res = world.WorldActor.Trait<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))
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite((isCloseEnough && world.IsCellBuildable(t, bi.WaterBound) && res.GetResource(t) == null)
|
((isCloseEnough && world.IsCellBuildable(t, bi.WaterBound) && res.GetResource(t) == null) ? buildOk : buildBlocked)
|
||||||
? buildOk : buildBlocked, Game.CellSize * t, "terrain");
|
.DrawAt(Game.CellSize * t, "terrain");
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,8 +41,7 @@ namespace OpenRA.Widgets
|
|||||||
if (DrawBackground)
|
if (DrawBackground)
|
||||||
WidgetUtils.DrawPanel("dialog3", chatLogArea);
|
WidgetUtils.DrawPanel("dialog3", chatLogArea);
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.EnableScissor(chatLogArea.Left, chatLogArea.Top, chatLogArea.Width, chatLogArea.Height);
|
||||||
Game.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;
|
||||||
@@ -52,8 +51,7 @@ namespace OpenRA.Widgets
|
|||||||
Game.Renderer.RegularFont.DrawText(line.Text, chatpos + new int2(inset, 0), Color.White);
|
Game.Renderer.RegularFont.DrawText(line.Text, chatpos + new int2(inset, 0), Color.White);
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.DisableScissor();
|
||||||
Game.Renderer.Device.DisableScissor();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddLine(Color c, string from, string text)
|
public void AddLine(Color c, string from, string text)
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
Game.Renderer.BoldFont.DrawText(text, RenderOrigin + new float2(3, 7), Color.White);
|
Game.Renderer.BoldFont.DrawText(text, RenderOrigin + new float2(3, 7), Color.White);
|
||||||
Game.Renderer.RegularFont.DrawText(content, RenderOrigin + new float2(3 + w, 7), Color.White);
|
Game.Renderer.RegularFont.DrawText(content, RenderOrigin + new float2(3 + w, 7), Color.White);
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ namespace OpenRA.Widgets
|
|||||||
public override void DrawInner(World world)
|
public override void DrawInner(World world)
|
||||||
{
|
{
|
||||||
WidgetUtils.FillRectWithColor(RenderBounds, GetColor());
|
WidgetUtils.FillRectWithColor(RenderBounds, GetColor());
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,15 +71,12 @@ namespace OpenRA.Widgets
|
|||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "down_arrow"),
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "down_arrow"),
|
||||||
new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset));
|
new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset));
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight);
|
||||||
|
|
||||||
Game.Renderer.Device.EnableScissor(backgroundRect.X, backgroundRect.Y + HeaderHeight, backgroundRect.Width, backgroundRect.Height - HeaderHeight);
|
|
||||||
|
|
||||||
foreach (var child in Children)
|
foreach (var child in Children)
|
||||||
child.Draw(world);
|
child.Draw(world);
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
Game.Renderer.DisableScissor();
|
||||||
Game.Renderer.Device.DisableScissor();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int2 ChildOrigin { get { return RenderOrigin + new int2(0, (int)ListOffset); } }
|
public override int2 ChildOrigin { get { return RenderOrigin + new int2(0, (int)ListOffset); } }
|
||||||
|
|||||||
@@ -105,8 +105,6 @@ namespace OpenRA.Widgets
|
|||||||
new float2(MapRect.Location),
|
new float2(MapRect.Location),
|
||||||
new float2( MapRect.Size ) );
|
new float2( MapRect.Size ) );
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
|
|
||||||
// Overlay spawnpoints
|
// Overlay spawnpoints
|
||||||
var colors = SpawnColors();
|
var colors = SpawnColors();
|
||||||
foreach (var p in map.SpawnPoints)
|
foreach (var p in map.SpawnPoints)
|
||||||
@@ -120,12 +118,9 @@ namespace OpenRA.Widgets
|
|||||||
sprite = OwnedSpawn;
|
sprite = OwnedSpawn;
|
||||||
offset = new int2(-OwnedSpawn.bounds.Width/2, -OwnedSpawn.bounds.Height/2);
|
offset = new int2(-OwnedSpawn.bounds.Width/2, -OwnedSpawn.bounds.Height/2);
|
||||||
WidgetUtils.FillRectWithColor(new Rectangle(pos.X + offset.X + 2, pos.Y + offset.Y + 2, 12, 12), colors[p]);
|
WidgetUtils.FillRectWithColor(new Rectangle(pos.X + offset.X + 2, pos.Y + offset.Y + 2, 12, 12), colors[p]);
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos + offset);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,8 +40,6 @@ namespace OpenRA.Widgets
|
|||||||
return b;
|
return b;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,16 +127,13 @@ namespace OpenRA.Widgets
|
|||||||
if (Focused)
|
if (Focused)
|
||||||
textPos += new int2(Bounds.Width - 2 * margin - textSize.X, 0);
|
textPos += new int2(Bounds.Width - 2 * margin - textSize.X, 0);
|
||||||
|
|
||||||
Game.Renderer.Device.EnableScissor(pos.X + margin, pos.Y, Bounds.Width - 2 * margin, Bounds.Bottom);
|
Game.Renderer.EnableScissor(pos.X + margin, pos.Y, Bounds.Width - 2 * margin, Bounds.Bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
font.DrawText(Text + cursor, textPos, Color.White);
|
font.DrawText(Text + cursor, textPos, Color.White);
|
||||||
|
|
||||||
if (textSize.X > Bounds.Width - 2 * margin)
|
if (textSize.X > Bounds.Width - 2 * margin)
|
||||||
{
|
Game.Renderer.DisableScissor();
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
Game.Renderer.Device.DisableScissor();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Widget Clone() { return new TextFieldWidget(this); }
|
public override Widget Clone() { return new TextFieldWidget(this); }
|
||||||
|
|||||||
@@ -127,8 +127,6 @@ namespace OpenRA.Widgets
|
|||||||
DrawRGBA(ss[6], new float2(Bounds.Left, Bounds.Bottom - ss[6].size.Y));
|
DrawRGBA(ss[6], new float2(Bounds.Left, Bounds.Bottom - ss[6].size.Y));
|
||||||
if (ps.HasFlags(PanelSides.Right | PanelSides.Bottom))
|
if (ps.HasFlags(PanelSides.Right | PanelSides.Bottom))
|
||||||
DrawRGBA(ss[7], new float2(Bounds.Right - ss[7].size.X, Bounds.Bottom - ss[7].size.Y));
|
DrawRGBA(ss[7], new float2(Bounds.Right - ss[7].size.X, Bounds.Bottom - ss[7].size.Y));
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second))
|
foreach (var u in SelectActorsInBox(world, selbox.Value.First, selbox.Value.Second))
|
||||||
world.WorldRenderer.DrawSelectionBox(u, Color.Yellow);
|
world.WorldRenderer.DrawSelectionBox(u, Color.Yellow);
|
||||||
|
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float2 dragStart, dragEnd;
|
float2 dragStart, dragEnd;
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ namespace OpenRA.Widgets
|
|||||||
ChromeProvider.GetImage("flags", actor.Owner.Country.Race),
|
ChromeProvider.GetImage("flags", actor.Owner.Country.Race),
|
||||||
new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 50));
|
new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 50));
|
||||||
}
|
}
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ namespace OpenRA.Mods.Cnc
|
|||||||
WidgetUtils.FillRectWithSprite(StripeRect, Stripe);
|
WidgetUtils.FillRectWithSprite(StripeRect, Stripe);
|
||||||
r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos);
|
r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos);
|
||||||
Font.DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.White);
|
Font.DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.White);
|
||||||
r.RgbaSpriteRenderer.Flush();
|
|
||||||
r.EndFrame();
|
r.EndFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ namespace OpenRA.Mods.RA
|
|||||||
WidgetUtils.FillRectWithSprite(StripeRect, Stripe);
|
WidgetUtils.FillRectWithSprite(StripeRect, Stripe);
|
||||||
r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos);
|
r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos);
|
||||||
Font.DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.White);
|
Font.DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.White);
|
||||||
r.RgbaSpriteRenderer.Flush();
|
|
||||||
r.EndFrame();
|
r.EndFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -204,7 +204,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
new float2(origin.X - 9, origin.Y + 48 * w));
|
new float2(origin.X - 9, origin.Y + 48 * w));
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(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();
|
|
||||||
|
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
@@ -270,8 +269,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
foreach (var ob in overlayBits)
|
foreach (var ob in overlayBits)
|
||||||
WidgetUtils.DrawSHP(ob.First, ob.Second);
|
WidgetUtils.DrawSHP(ob.First, ob.Second);
|
||||||
|
|
||||||
Game.Renderer.WorldSpriteRenderer.Flush();
|
|
||||||
|
|
||||||
// Tooltip
|
// Tooltip
|
||||||
if (tooltipItem != null && !paletteAnimating && paletteOpen)
|
if (tooltipItem != null && !paletteAnimating && paletteOpen)
|
||||||
DrawProductionTooltip(world, tooltipItem,
|
DrawProductionTooltip(world, tooltipItem,
|
||||||
@@ -287,7 +284,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(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();
|
|
||||||
|
|
||||||
return 48 * y + 9;
|
return 48 * y + 9;
|
||||||
}
|
}
|
||||||
@@ -418,8 +414,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
y += tabHeight;
|
y += tabHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawRightAligned(string text, int2 pos, Color c)
|
void DrawRightAligned(string text, int2 pos, Color c)
|
||||||
@@ -482,8 +476,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
p += new int2(0, 15);
|
p += new int2(0, 15);
|
||||||
Game.Renderer.RegularFont.DrawText(tooltip.Description.Replace("\\n", "\n"),
|
Game.Renderer.RegularFont.DrawText(tooltip.Description.Replace("\\n", "\n"),
|
||||||
p.ToInt2(), Color.White);
|
p.ToInt2(), Color.White);
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DoBuildingHotkey(char c, World world)
|
bool DoBuildingHotkey(char c, World world)
|
||||||
|
|||||||
@@ -69,9 +69,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
}
|
}
|
||||||
Game.Renderer.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);
|
||||||
}
|
}
|
||||||
// Draw on top of the sprite
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
Game.Renderer.LineRenderer.Flush();
|
|
||||||
|
|
||||||
// Power usage indicator
|
// Power usage indicator
|
||||||
var indicator = ChromeProvider.GetImage( powerCollection, "power-indicator");
|
var indicator = ChromeProvider.GetImage( powerCollection, "power-indicator");
|
||||||
@@ -80,7 +77,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
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);
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, powerDrainLevel);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, powerDrainLevel);
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(customTerrainSprite, o, s);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(customTerrainSprite, o, s);
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(actorSprite, o, s);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(actorSprite, o, s);
|
||||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(shroudSprite, o, s);
|
Game.Renderer.RgbaSpriteRenderer.DrawSprite(shroudSprite, o, s);
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
|
|
||||||
// Draw viewport rect
|
// Draw viewport rect
|
||||||
if (radarAnimationFrame == radarSlideAnimationLength + radarActivateAnimationLength)
|
if (radarAnimationFrame == radarSlideAnimationLength + radarActivateAnimationLength)
|
||||||
@@ -146,14 +145,12 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
var br = CellToMinimapPixel(new int2((int)((Game.viewport.Location.X + Game.viewport.Width)/Game.CellSize), (int)((Game.viewport.Location.Y + Game.viewport.Height)/Game.CellSize)));
|
var br = CellToMinimapPixel(new int2((int)((Game.viewport.Location.X + Game.viewport.Width)/Game.CellSize), (int)((Game.viewport.Location.Y + Game.viewport.Height)/Game.CellSize)));
|
||||||
var tr = new int2(br.X, tl.Y);
|
var tr = new int2(br.X, tl.Y);
|
||||||
var bl = new int2(tl.X, br.Y);
|
var bl = new int2(tl.X, br.Y);
|
||||||
Game.Renderer.LineRenderer.Flush();
|
Game.Renderer.EnableScissor((int)mapRect.Left, (int)mapRect.Top, (int)mapRect.Width, (int)mapRect.Height);
|
||||||
Game.Renderer.Device.EnableScissor((int)mapRect.Left, (int)mapRect.Top, (int)mapRect.Width, (int)mapRect.Height);
|
|
||||||
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tl, Game.viewport.Location + tr, Color.White, Color.White);
|
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tl, Game.viewport.Location + tr, Color.White, Color.White);
|
||||||
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tr, Game.viewport.Location + br, Color.White, Color.White);
|
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tr, Game.viewport.Location + br, Color.White, Color.White);
|
||||||
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + br, Game.viewport.Location + bl, Color.White, Color.White);
|
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + br, Game.viewport.Location + bl, Color.White, Color.White);
|
||||||
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + bl, Game.viewport.Location + tl, Color.White, Color.White);
|
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + bl, Game.viewport.Location + tl, Color.White, Color.White);
|
||||||
Game.Renderer.LineRenderer.Flush();
|
Game.Renderer.DisableScissor();
|
||||||
Game.Renderer.Device.DisableScissor();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,8 +77,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world,"specialbin-middle"), new float2(rectBounds.X, rectBounds.Y + i * 51));
|
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world,"specialbin-middle"), new float2(rectBounds.X, rectBounds.Y + i * 51));
|
||||||
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world,"specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51));
|
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world,"specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51));
|
||||||
|
|
||||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
|
||||||
|
|
||||||
// Hack Hack Hack
|
// Hack Hack Hack
|
||||||
rectBounds.Width = 69;
|
rectBounds.Width = 69;
|
||||||
rectBounds.Height = 10 + numPowers * 51 + 21;
|
rectBounds.Height = 10 + numPowers * 51 + 21;
|
||||||
@@ -147,7 +145,6 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
y += 51;
|
y += 51;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Game.Renderer.WorldSpriteRenderer.Flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Action<MouseInput> HandleSupportPower(SupportPower sp)
|
Action<MouseInput> HandleSupportPower(SupportPower sp)
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.RA
|
|||||||
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(kv.Key))
|
if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(kv.Key))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Game.Renderer.SpriteRenderer.DrawSprite(smudgeSprites[kv.Value.type- 1][kv.Value.image],
|
smudgeSprites[kv.Value.type- 1][kv.Value.image].DrawAt(
|
||||||
Game.CellSize * kv.Key, "terrain");
|
Game.CellSize * kv.Key, "terrain");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user