Unfail dialog drawing
This commit is contained in:
@@ -29,8 +29,6 @@ namespace OpenRa
|
|||||||
|
|
||||||
// Options menu (to be refactored)
|
// Options menu (to be refactored)
|
||||||
bool optionsPressed = false;
|
bool optionsPressed = false;
|
||||||
readonly Sprite[] optionsSprites;
|
|
||||||
readonly Sprite[] panelSprites;
|
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
readonly Animation repairButton;
|
readonly Animation repairButton;
|
||||||
@@ -98,25 +96,6 @@ namespace OpenRa
|
|||||||
optionsButton = new Animation("tabs");
|
optionsButton = new Animation("tabs");
|
||||||
optionsButton.PlayRepeating("left-normal");
|
optionsButton.PlayRepeating("left-normal");
|
||||||
|
|
||||||
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],
|
|
||||||
};
|
|
||||||
|
|
||||||
panelSprites = Graphics.Util.MakeArray(8,
|
|
||||||
n => ChromeProvider.GetImage(renderer, "panel", n.ToString()));
|
|
||||||
|
|
||||||
tabSprites = Rules.Info.Values
|
tabSprites = Rules.Info.Values
|
||||||
.Where(u => u.Traits.Contains<BuildableInfo>())
|
.Where(u => u.Traits.Contains<BuildableInfo>())
|
||||||
.ToDictionary(
|
.ToDictionary(
|
||||||
@@ -211,7 +190,7 @@ namespace OpenRa
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var r = new Rectangle((Game.viewport.Width - 400) / 2, Game.viewport.Height - 110, 400, 100);
|
var r = new Rectangle((Game.viewport.Width - 400) / 2, Game.viewport.Height - 110, 400, 100);
|
||||||
DrawDialogBackground(r, optionsSprites, true);
|
DrawDialogBackground(r, "dialog");
|
||||||
|
|
||||||
DrawCentered("Downloading: {0} (+{1} more)".F(
|
DrawCentered("Downloading: {0} (+{1} more)".F(
|
||||||
PackageDownloader.CurrentPackage.Split(':')[0],
|
PackageDownloader.CurrentPackage.Split(':')[0],
|
||||||
@@ -220,7 +199,7 @@ namespace OpenRa
|
|||||||
Color.White);
|
Color.White);
|
||||||
|
|
||||||
DrawDialogBackground(new Rectangle(r.Left + 30, r.Top + 50, r.Width - 60, 20),
|
DrawDialogBackground(new Rectangle(r.Left + 30, r.Top + 50, r.Width - 60, 20),
|
||||||
panelSprites, false);
|
"panel");
|
||||||
|
|
||||||
var x1 = r.Left + 35;
|
var x1 = r.Left + 35;
|
||||||
var x2 = r.Right - 35;
|
var x2 = r.Right - 35;
|
||||||
@@ -240,7 +219,7 @@ namespace OpenRa
|
|||||||
var w = renderer.MeasureText(text).X + 120;
|
var w = renderer.MeasureText(text).X + 120;
|
||||||
var h = 100;
|
var h = 100;
|
||||||
var r = new Rectangle((Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h);
|
var r = new Rectangle((Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h);
|
||||||
DrawDialogBackground(r, optionsSprites, true);
|
DrawDialogBackground(r, "dialog");
|
||||||
DrawCentered(text, new int2(Game.viewport.Width / 2, Game.viewport.Height / 2 - 8), Color.White);
|
DrawCentered(text, new int2(Game.viewport.Width / 2, Game.viewport.Height / 2 - 8), Color.White);
|
||||||
|
|
||||||
// don't allow clicks through the dialog
|
// don't allow clicks through the dialog
|
||||||
@@ -274,7 +253,7 @@ namespace OpenRa
|
|||||||
void AddUiButton(int2 pos, string text, Action<bool> a)
|
void AddUiButton(int2 pos, string text, Action<bool> a)
|
||||||
{
|
{
|
||||||
var rect = new Rectangle(pos.X - 160 / 2, pos.Y - 4, 160, 24);
|
var rect = new Rectangle(pos.X - 160 / 2, pos.Y - 4, 160, 24);
|
||||||
DrawDialogBackground( rect, panelSprites, false );
|
DrawDialogBackground( rect, "panel");
|
||||||
DrawCentered(text, new int2(pos.X, pos.Y), Color.White);
|
DrawCentered(text, new int2(pos.X, pos.Y), Color.White);
|
||||||
AddButton(rect, a);
|
AddButton(rect, a);
|
||||||
}
|
}
|
||||||
@@ -284,11 +263,11 @@ namespace OpenRa
|
|||||||
var w = 800;
|
var w = 800;
|
||||||
var h = 600;
|
var h = 600;
|
||||||
var r = new Rectangle( (Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h );
|
var r = new Rectangle( (Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h );
|
||||||
DrawDialogBackground(r, optionsSprites, true);
|
DrawDialogBackground(r, "dialog");
|
||||||
DrawCentered("Choose Map", new int2(r.Left + w / 2, r.Top + 20), Color.White);
|
DrawCentered("Choose Map", new int2(r.Left + w / 2, r.Top + 20), Color.White);
|
||||||
|
|
||||||
DrawDialogBackground(new Rectangle(r.Right - 200 - 160 / 2,
|
DrawDialogBackground(new Rectangle(r.Right - 200 - 160 / 2,
|
||||||
r.Bottom - 50 + 6, 160, 24), panelSprites, false);
|
r.Bottom - 50 + 6, 160, 24), "panel");
|
||||||
|
|
||||||
AddUiButton(new int2(r.Left + 200, r.Bottom - 40), "OK",
|
AddUiButton(new int2(r.Left + 200, r.Bottom - 40), "OK",
|
||||||
_ =>
|
_ =>
|
||||||
@@ -313,7 +292,7 @@ namespace OpenRa
|
|||||||
}
|
}
|
||||||
|
|
||||||
var mapRect = new Rectangle(r.Right - 280, r.Top + 30, 256, 256);
|
var mapRect = new Rectangle(r.Right - 280, r.Top + 30, 256, 256);
|
||||||
DrawDialogBackground(mapRect, panelSprites, false);
|
DrawDialogBackground(mapRect, "panel");
|
||||||
rgbaRenderer.DrawSprite(mapChooserSprite,
|
rgbaRenderer.DrawSprite(mapChooserSprite,
|
||||||
new float2(mapRect.Location) + new float2(4, 4),
|
new float2(mapRect.Location) + new float2(4, 4),
|
||||||
"chrome",
|
"chrome",
|
||||||
@@ -326,7 +305,7 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
var itemRect = new Rectangle(r.Left + 50, y - 2, r.Width - 340, 20);
|
var itemRect = new Rectangle(r.Left + 50, y - 2, r.Width - 340, 20);
|
||||||
if (map == currentMap)
|
if (map == currentMap)
|
||||||
DrawDialogBackground(itemRect, panelSprites, false);
|
DrawDialogBackground(itemRect, "panel");
|
||||||
|
|
||||||
renderer.DrawText(map.Map.Title, new int2(r.Left + 60, y), Color.White);
|
renderer.DrawText(map.Map.Title, new int2(r.Left + 60, y), Color.White);
|
||||||
var closureMap = map;
|
var closureMap = map;
|
||||||
@@ -390,16 +369,11 @@ namespace OpenRa
|
|||||||
var w = 800;
|
var w = 800;
|
||||||
var h = 600;
|
var h = 600;
|
||||||
var r = new Rectangle( (Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h );
|
var r = new Rectangle( (Game.viewport.Width - w) / 2, (Game.viewport.Height - h) / 2, w, h );
|
||||||
DrawDialogBackground(r, optionsSprites, true);
|
DrawDialogBackground(r, "dialog");
|
||||||
DrawCentered("OpenRA Multiplayer Lobby", new int2(r.Left + w / 2, r.Top + 20), Color.White);
|
DrawCentered("OpenRA Multiplayer Lobby", new int2(r.Left + w / 2, r.Top + 20), Color.White);
|
||||||
|
|
||||||
DrawDialogBackground(new Rectangle(r.Left + 20, r.Top + 40, r.Width - 357, r.Bottom - 273 - r.Top - 40),
|
DrawDialogBackground(new Rectangle(r.Right - 324, r.Top + 43, 304, 244),"panel");
|
||||||
panelSprites, false);
|
var minimapRect = new Rectangle(r.Right - 322, r.Top + 45, 300, 240);
|
||||||
|
|
||||||
DrawDialogBackground(new Rectangle(r.Right - 330, r.Top + 40, 310, r.Bottom - 273 - r.Top - 40),
|
|
||||||
panelSprites, false);
|
|
||||||
|
|
||||||
var minimapRect = new Rectangle(r.Right - 325, r.Top + 45, 300, 240);
|
|
||||||
|
|
||||||
world.Minimap.Update();
|
world.Minimap.Update();
|
||||||
world.Minimap.Draw(minimapRect, true);
|
world.Minimap.Draw(minimapRect, true);
|
||||||
@@ -407,23 +381,14 @@ namespace OpenRa
|
|||||||
if (Game.world.LocalPlayer.Index == 0)
|
if (Game.world.LocalPlayer.Index == 0)
|
||||||
{
|
{
|
||||||
// we are host
|
// we are host
|
||||||
DrawDialogBackground(new Rectangle(minimapRect.Left + (minimapRect.Width - 160) / 2,
|
AddUiButton(new int2(r.Right - 100, r.Top + 300), "Change Map",
|
||||||
minimapRect.Bottom + 6, 160, 24), panelSprites, false);
|
_ =>
|
||||||
|
{
|
||||||
DrawCentered("Change Map...", new int2(minimapRect.Left + minimapRect.Width / 2,
|
showMapChooser = true;
|
||||||
minimapRect.Bottom + 10), Color.White);
|
currentMap = mapList.Value.Single(
|
||||||
|
m => m.Filename == Game.LobbyInfo.GlobalSettings.Map.ToLowerInvariant());
|
||||||
AddButton(new RectangleF(minimapRect.Left, minimapRect.Bottom, minimapRect.Width, 32),
|
mapPreviewDirty = true;
|
||||||
isLmb =>
|
});
|
||||||
{
|
|
||||||
if (isLmb)
|
|
||||||
{
|
|
||||||
showMapChooser = true;
|
|
||||||
currentMap = mapList.Value.Single(
|
|
||||||
m => m.Filename == Game.LobbyInfo.GlobalSettings.Map.ToLowerInvariant());
|
|
||||||
mapPreviewDirty = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.DrawText2("Name", new int2(r.Left + 40, r.Top + 50), Color.White);
|
renderer.DrawText2("Name", new int2(r.Left + 40, r.Top + 50), Color.White);
|
||||||
@@ -441,9 +406,9 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
// todo: name editing
|
// todo: name editing
|
||||||
var nameRect = new Rectangle(r.Left + 30, y - 2, 185, 22);
|
var nameRect = new Rectangle(r.Left + 30, y - 2, 185, 22);
|
||||||
DrawDialogBackground(nameRect, panelSprites, false);
|
DrawDialogBackground(nameRect, "panel");
|
||||||
|
|
||||||
DrawDialogBackground(paletteRect, panelSprites, false);
|
DrawDialogBackground(paletteRect, "panel");
|
||||||
AddButton(paletteRect, CyclePalette);
|
AddButton(paletteRect, CyclePalette);
|
||||||
|
|
||||||
// TODO: Render using the System.Drawing.Color (Player.PlayerColors[client.PaletteIndex].c)
|
// TODO: Render using the System.Drawing.Color (Player.PlayerColors[client.PaletteIndex].c)
|
||||||
@@ -451,11 +416,11 @@ namespace OpenRa
|
|||||||
Player.PlayerColors[client.PaletteIndex].a);
|
Player.PlayerColors[client.PaletteIndex].a);
|
||||||
|
|
||||||
var raceRect = new Rectangle(r.Left + 290, y - 2, 65, 22);
|
var raceRect = new Rectangle(r.Left + 290, y - 2, 65, 22);
|
||||||
DrawDialogBackground(raceRect, panelSprites, false);
|
DrawDialogBackground(raceRect, "panel");
|
||||||
AddButton(raceRect, CycleRace);
|
AddButton(raceRect, CycleRace);
|
||||||
|
|
||||||
var readyRect = new Rectangle(r.Left + 360, y - 2, 95, 22);
|
var readyRect = new Rectangle(r.Left + 360, y - 2, 95, 22);
|
||||||
DrawDialogBackground(readyRect, panelSprites, false);
|
DrawDialogBackground(readyRect, "panel");
|
||||||
AddButton(readyRect, CycleReady);
|
AddButton(readyRect, CycleReady);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,8 +440,8 @@ namespace OpenRa
|
|||||||
var typingBox = new Rectangle(r.Left + 20, r.Bottom - 47, r.Width - 40, 27);
|
var typingBox = new Rectangle(r.Left + 20, r.Bottom - 47, r.Width - 40, 27);
|
||||||
var chatBox = new Rectangle(r.Left + 20, r.Bottom - 269, r.Width - 40, 220);
|
var chatBox = new Rectangle(r.Left + 20, r.Bottom - 269, r.Width - 40, 220);
|
||||||
|
|
||||||
DrawDialogBackground(typingBox, panelSprites, false);
|
DrawDialogBackground(typingBox, "panel");
|
||||||
DrawDialogBackground(chatBox, panelSprites, false);
|
DrawDialogBackground(chatBox, "panel");
|
||||||
|
|
||||||
DrawChat(typingBox, chatBox);
|
DrawChat(typingBox, chatBox);
|
||||||
|
|
||||||
@@ -728,39 +693,39 @@ namespace OpenRa
|
|||||||
var height = 300;
|
var height = 300;
|
||||||
|
|
||||||
DrawDialogBackground(new Rectangle((Game.viewport.Width - width)/ 2, (Game.viewport.Height-height) / 2,
|
DrawDialogBackground(new Rectangle((Game.viewport.Width - width)/ 2, (Game.viewport.Height-height) / 2,
|
||||||
width, height), optionsSprites, true);
|
width, height), "dialog");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawDialogBackground(Rectangle r, Sprite[] ss, bool isShp)
|
void DrawDialogBackground(Rectangle r, string collection)
|
||||||
{
|
{
|
||||||
renderer.Device.EnableScissor(r.Left, r.Top, r.Width, r.Height);
|
renderer.Device.EnableScissor(r.Left, r.Top, r.Width, r.Height);
|
||||||
|
|
||||||
var sr = isShp ? shpRenderer : rgbaRenderer;
|
string[] images = { "border-t", "border-b", "border-l", "border-r", "corner-tl", "corner-tr", "corner-bl", "corner-br", "background" };
|
||||||
|
var ss = Graphics.Util.MakeArray(9, n => ChromeProvider.GetImage(renderer, collection,images[n]));
|
||||||
|
|
||||||
if (ss.Length > 8)
|
|
||||||
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 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 )
|
for( var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[8].size.Y )
|
||||||
sr.DrawSprite(ss[8], new float2(x, y), "chrome");
|
rgbaRenderer.DrawSprite(ss[8], new float2(x, y), "chrome");
|
||||||
|
|
||||||
//draw borders
|
//draw borders
|
||||||
for (var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[2].size.Y)
|
for (var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[2].size.Y)
|
||||||
{
|
{
|
||||||
sr.DrawSprite(ss[2], new float2(r.Left, y), "chrome");
|
rgbaRenderer.DrawSprite(ss[2], new float2(r.Left, y), "chrome");
|
||||||
sr.DrawSprite(ss[3], new float2(r.Right - ss[3].size.X, y), "chrome");
|
rgbaRenderer.DrawSprite(ss[3], new float2(r.Right - ss[3].size.X, y), "chrome");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[0].size.X)
|
for (var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[0].size.X)
|
||||||
{
|
{
|
||||||
sr.DrawSprite(ss[0], new float2(x, r.Top), "chrome");
|
rgbaRenderer.DrawSprite(ss[0], new float2(x, r.Top), "chrome");
|
||||||
sr.DrawSprite(ss[1], new float2(x, r.Bottom - ss[1].size.Y), "chrome");
|
rgbaRenderer.DrawSprite(ss[1], new float2(x, r.Bottom - ss[1].size.Y), "chrome");
|
||||||
}
|
}
|
||||||
|
|
||||||
sr.DrawSprite(ss[4], new float2(r.Left, r.Top), "chrome");
|
rgbaRenderer.DrawSprite(ss[4], new float2(r.Left, r.Top), "chrome");
|
||||||
sr.DrawSprite(ss[5], new float2(r.Right - ss[5].size.X, r.Top), "chrome");
|
rgbaRenderer.DrawSprite(ss[5], new float2(r.Right - ss[5].size.X, r.Top), "chrome");
|
||||||
sr.DrawSprite(ss[6], new float2(r.Left, r.Bottom - ss[6].size.Y), "chrome");
|
rgbaRenderer.DrawSprite(ss[6], new float2(r.Left, r.Bottom - ss[6].size.Y), "chrome");
|
||||||
sr.DrawSprite(ss[7], new float2(r.Right - ss[7].size.X, r.Bottom - ss[7].size.Y), "chrome");
|
rgbaRenderer.DrawSprite(ss[7], new float2(r.Right - ss[7].size.X, r.Bottom - ss[7].size.Y), "chrome");
|
||||||
sr.Flush();
|
rgbaRenderer.Flush();
|
||||||
|
|
||||||
renderer.Device.DisableScissor();
|
renderer.Device.DisableScissor();
|
||||||
}
|
}
|
||||||
|
|||||||
29
chrome.xml
29
chrome.xml
@@ -122,14 +122,25 @@
|
|||||||
<image name="soviet-Ship" x="134" y="200" width="27" height="41" />
|
<image name="soviet-Ship" x="134" y="200" width="27" height="41" />
|
||||||
</collection>
|
</collection>
|
||||||
<collection name="panel" src="widget-panel.png">
|
<collection name="panel" src="widget-panel.png">
|
||||||
<image name="0" x="4" y="0" width="248" height="4" />
|
<image name="border-t" x="4" y="0" width="248" height="4" />
|
||||||
<image name="1" x="4" y="252" width="248" height="4" />
|
<image name="border-b" x="4" y="252" width="248" height="4" />
|
||||||
<image name="2" x="0" y="4" width="4" height="248" />
|
<image name="border-l" x="0" y="4" width="4" height="248" />
|
||||||
<image name="3" x="252" y="4" width="4" height="248" />
|
<image name="border-r" x="252" y="4" width="4" height="248" />
|
||||||
<image name="4" x="0" y="0" width="4" height="4" />
|
<image name="corner-tl" x="0" y="0" width="4" height="4" />
|
||||||
<image name="5" x="252" y="0" width="4" height="4" />
|
<image name="corner-tr" x="252" y="0" width="4" height="4" />
|
||||||
<image name="6" x="0" y="252" width="4" height="4" />
|
<image name="corner-bl" x="0" y="252" width="4" height="4" />
|
||||||
<image name="7" x="252" y="252" width="4" height="4" />
|
<image name="corner-br" x="252" y="252" width="4" height="4" />
|
||||||
|
<image name="background" x="4" y="4" width="248" height="248" />
|
||||||
|
</collection>
|
||||||
|
<collection name="dialog" src="dialog.png">
|
||||||
|
<image name="background" x="0" y="0" width="624" height="384" />
|
||||||
|
<image name="border-r" x="624" y="0" width="14" height="200" />
|
||||||
|
<image name="border-l" x="638" y="0" width="14" height="200" />
|
||||||
|
<image name="border-b" x="46" y="399" width="320" height="16" />
|
||||||
|
<image name="border-t" x="46" y="384" width="320" height="16" />
|
||||||
|
<image name="corner-tl" x="0" y="384" width="23" height="24" />
|
||||||
|
<image name="corner-tr" x="23" y="384" width="23" height="24" />
|
||||||
|
<image name="corner-bl" x="0" y="407" width="23" height="24" />
|
||||||
|
<image name="corner-br" x="23" y="407" width="23" height="24" />
|
||||||
</collection>
|
</collection>
|
||||||
|
|
||||||
</chrome>
|
</chrome>
|
||||||
|
|||||||
BIN
dialog.png
Normal file
BIN
dialog.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Reference in New Issue
Block a user