converted special power tooltips to use DrawPanelPartial

This commit is contained in:
Chris Forbes
2010-04-15 19:28:28 +12:00
parent 23506a328f
commit be12ca7492
2 changed files with 10 additions and 87 deletions

View File

@@ -70,90 +70,6 @@ namespace OpenRA.Widgets
var ss = images.Select(i => ChromeProvider.GetImage(Game.chrome.renderer, "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 };
}
// todo: write this in terms of 3 DrawPanelPartial calls
public static void DrawRightTooltip(string collection, int2 tl, int2 m, int2 br)
{
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.chrome.renderer, collection, i)).ToArray();
// Draw the background for the left part
FillRectWithSprite(new Rectangle(tl.X + (int)ss[2].size.X,
tl.Y + (int)ss[0].size.Y,
m.X + (int)ss[2].size.X - tl.X - (int)ss[2].size.X,
m.Y - (int)ss[1].size.Y - tl.Y - (int)ss[0].size.Y),
ss[8]);
// Background for the right part
FillRectWithSprite(new Rectangle(m.X + (int)ss[2].size.X,
tl.Y + (int)ss[0].size.Y,
br.X - (int)ss[3].size.X - m.X - (int)ss[2].size.X,
br.Y - (int)ss[1].size.Y - tl.Y - (int)ss[0].size.Y),
ss[8]);
// Patch the hole
FillRectWithSprite(new Rectangle(m.X,
m.Y-(int)ss[1].size.Y,
(int)ss[2].size.X,
(int)ss[1].size.Y - 1),
ss[8]);
// Top border
FillRectWithSprite(new Rectangle(tl.X + (int)ss[2].size.X,
tl.Y,
br.X - (int)ss[3].size.X - tl.X - (int)ss[2].size.X,
(int)ss[0].size.Y),
ss[0]);
// Right border
FillRectWithSprite(new Rectangle(br.X - (int)ss[3].size.X,
tl.Y + (int)ss[0].size.Y,
(int)ss[3].size.X,
br.Y - (int)ss[1].size.Y - tl.Y - (int)ss[0].size.Y),
ss[3]);
// Bottom border
FillRectWithSprite(new Rectangle(m.X + (int)ss[2].size.X,
br.Y - (int)ss[1].size.Y,
br.X - (int)ss[3].size.X - m.X - (int)ss[2].size.X,
(int)ss[1].size.Y),
ss[1]);
// Left border
FillRectWithSprite(new Rectangle(tl.X,
tl.Y + (int)ss[0].size.Y,
(int)ss[2].size.X,
m.Y - (int)ss[1].size.Y - tl.Y - (int)ss[0].size.Y),
ss[2]);
// Left-bottom border
FillRectWithSprite(new Rectangle(tl.X + (int)ss[2].size.X,
m.Y - (int)ss[1].size.Y,
m.X - (int)ss[2].size.X - tl.X,
(int)ss[1].size.Y),
ss[1]);
// Bottom-left border
FillRectWithSprite(new Rectangle(m.X,
m.Y - 1,
(int)ss[2].size.X,
br.Y - (int)ss[1].size.Y - m.Y + 1),
ss[2]);
// TL corner
DrawRGBA(ss[4], new float2(tl.X,tl.Y));
// TR corner
DrawRGBA(ss[5], new float2(br.X- (int)ss[3].size.X,tl.Y));
// LBL corner
DrawRGBA(ss[6], new float2(tl.X,m.Y - (int)ss[2].size.X));
// RBL corner
DrawRGBA(ss[6], new float2(m.X,br.Y - (int)ss[7].size.Y));
// BR corner
DrawRGBA(ss[7], new float2(br.X - (int)ss[7].size.X, br.Y - (int)ss[7].size.Y));
}
static bool HasFlags(this PanelSides a, PanelSides b) { return (a & b) == b; }
public static Rectangle InflateBy(this Rectangle rect, int l, int t, int r, int b)