made DrawDialogBackground generic

This commit is contained in:
Chris Forbes
2010-01-16 11:46:04 +13:00
parent 3521f1cc45
commit ef6d5d3343

View File

@@ -28,15 +28,7 @@ namespace OpenRa.Game
// Options menu (to be refactored)
bool optionsPressed = false;
readonly Sprite optionsTop;
readonly Sprite optionsBottom;
readonly Sprite optionsLeft;
readonly Sprite optionsRight;
readonly Sprite optionsTopLeft;
readonly Sprite optionsTopRight;
readonly Sprite optionsBottomLeft;
readonly Sprite optionsBottomRight;
readonly Sprite optionsBackground;
readonly Sprite[] optionsSprites;
// Buttons
readonly Animation repairButton;
@@ -98,16 +90,22 @@ namespace OpenRa.Game
optionsButton = new Animation("tabs");
optionsButton.PlayRepeating("left-normal");
optionsLeft = SpriteSheetBuilder.LoadAllSprites("dd-left")[0];
optionsRight = SpriteSheetBuilder.LoadAllSprites("dd-right")[0];
optionsTop = SpriteSheetBuilder.LoadAllSprites("dd-top")[0];
optionsBottom = SpriteSheetBuilder.LoadAllSprites("dd-botm")[0];
optionsTopLeft = SpriteSheetBuilder.LoadAllSprites("dd-crnr")[0];
optionsTopRight = SpriteSheetBuilder.LoadAllSprites("dd-crnr")[1];
optionsBottomLeft = SpriteSheetBuilder.LoadAllSprites("dd-crnr")[2];
optionsBottomRight = SpriteSheetBuilder.LoadAllSprites("dd-crnr")[3];
optionsBackground = SpriteSheetBuilder.LoadAllSprites("dd-bkgnd")[Game.CosmeticRandom.Next(4)];
optionsSprites = new[]
{
SpriteSheetBuilder.LoadAllSprites("dd-top")[0],
SpriteSheetBuilder.LoadAllSprites("dd-botm")[0],
SpriteSheetBuilder.LoadAllSprites("dd-left")[0],
SpriteSheetBuilder.LoadAllSprites("dd-right")[0],
SpriteSheetBuilder.LoadAllSprites("dd-crnr")[0],
SpriteSheetBuilder.LoadAllSprites("dd-crnr")[1],
SpriteSheetBuilder.LoadAllSprites("dd-crnr")[2],
SpriteSheetBuilder.LoadAllSprites("dd-crnr")[3],
SpriteSheetBuilder.LoadAllSprites("dd-bkgnd")[0],
};
tabSprites = Rules.NewUnitInfo.Values
.Where(u => u.Traits.Contains<BuildableInfo>())
@@ -434,38 +432,38 @@ namespace OpenRa.Game
var height = 300;
DrawDialogBackground(new Rectangle((Game.viewport.Width - width)/ 2, (Game.viewport.Height-height) / 2,
width, height));
width, height), optionsSprites);
}
}
void DrawDialogBackground(Rectangle r)
void DrawDialogBackground(Rectangle r, Sprite[] ss)
{
renderer.Device.EnableScissor(r.Left, r.Top, r.Width, r.Height);
for( var x = r.Left + (int)optionsLeft.size.X; x < r.Right - (int)optionsRight.size.X; x += (int)optionsBackground.size.X )
for( var y = r.Top + (int)optionsTop.size.Y; y < r.Bottom - (int)optionsBottom.size.Y; y += (int)optionsBackground.size.Y )
shpRenderer.DrawSprite( optionsBackground, Game.viewport.Location + new float2(x,y), PaletteType.Chrome );
for( var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[8].size.X )
for( var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[8].size.Y )
shpRenderer.DrawSprite( ss[8], Game.viewport.Location + new float2(x,y), PaletteType.Chrome );
var p = Game.viewport.Location;
//draw borders
for (var y = r.Top + (int)optionsTop.size.Y; y < r.Bottom - (int)optionsBottom.size.Y; y += (int)optionsLeft.size.Y)
for (var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[1].size.Y)
{
shpRenderer.DrawSprite(optionsLeft, p + new float2(r.Left, y), PaletteType.Chrome);
shpRenderer.DrawSprite(optionsRight, p + new float2(r.Right - optionsRight.size.X, y), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[2], p + new float2(r.Left, y), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[3], p + new float2(r.Right - ss[3].size.X, y), PaletteType.Chrome);
}
for (var x = r.Left + (int)optionsLeft.size.X; x < r.Right - (int)optionsRight.size.X; x += (int)optionsLeft.size.Y)
for (var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[3].size.X)
{
shpRenderer.DrawSprite(optionsTop, p + new float2(x, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(optionsBottom, p + new float2(x, r.Bottom - optionsBottom.size.Y), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[0], p + new float2(x, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[1], p + new float2(x, r.Bottom - ss[1].size.Y), PaletteType.Chrome);
}
shpRenderer.DrawSprite(optionsTopLeft, p + new float2(r.Left, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(optionsTopRight, p + new float2(r.Right - optionsTopRight.size.X, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(optionsBottomLeft, p + new float2(r.Left, r.Bottom - optionsBottomLeft.size.Y), PaletteType.Chrome);
shpRenderer.DrawSprite(optionsBottomRight, p + new float2(r.Right - optionsBottomRight.size.X, r.Bottom - optionsBottomRight.size.Y), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[4], p + new float2(r.Left, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[5], p + new float2(r.Right - ss[5].size.X, r.Top), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[6], p + new float2(r.Left, r.Bottom - ss[6].size.Y), PaletteType.Chrome);
shpRenderer.DrawSprite(ss[7], p + new float2(r.Right - ss[7].size.X, r.Bottom - ss[7].size.Y), PaletteType.Chrome);
shpRenderer.Flush();
renderer.Device.DisableScissor();