Merge pull request #6737 from pchote/replay-sidebar

Overhaul the observer sidebar.
This commit is contained in:
Scott
2014-10-19 16:17:44 +13:00
21 changed files with 1118 additions and 445 deletions

View File

@@ -26,6 +26,7 @@ namespace OpenRA.Widgets
public string Background = "button"; public string Background = "button";
public bool Depressed = false; public bool Depressed = false;
public int VisualHeight = ChromeMetrics.Get<int>("ButtonDepth"); public int VisualHeight = ChromeMetrics.Get<int>("ButtonDepth");
public int BaseLine = 0;
public string Font = ChromeMetrics.Get<string>("ButtonFont"); public string Font = ChromeMetrics.Get<string>("ButtonFont");
public Color TextColor = ChromeMetrics.Get<Color>("ButtonTextColor"); public Color TextColor = ChromeMetrics.Get<Color>("ButtonTextColor");
public Color TextColorDisabled = ChromeMetrics.Get<Color>("ButtonTextColorDisabled"); public Color TextColorDisabled = ChromeMetrics.Get<Color>("ButtonTextColorDisabled");
@@ -78,6 +79,7 @@ namespace OpenRA.Widgets
Text = other.Text; Text = other.Text;
Font = other.Font; Font = other.Font;
BaseLine = other.BaseLine;
TextColor = other.TextColor; TextColor = other.TextColor;
TextColorDisabled = other.TextColorDisabled; TextColorDisabled = other.TextColorDisabled;
Contrast = other.Contrast; Contrast = other.Contrast;
@@ -202,7 +204,7 @@ namespace OpenRA.Widgets
var contrast = GetContrastColor(); var contrast = GetContrastColor();
var s = font.Measure(text); var s = font.Measure(text);
var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0); var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
var position = new int2(rb.X + (UsableWidth - s.X) / 2, rb.Y + (Bounds.Height - s.Y) / 2); var position = new int2(rb.X + (UsableWidth - s.X) / 2, rb.Y - BaseLine + (Bounds.Height - s.Y) / 2);
DrawBackground(rb, disabled, Depressed, Ui.MouseOverWidget == this, highlighted); DrawBackground(rb, disabled, Depressed, Ui.MouseOverWidget == this, highlighted);
if (Contrast) if (Contrast)

View File

@@ -19,7 +19,6 @@ namespace OpenRA.Widgets
public string CheckType = "checked"; public string CheckType = "checked";
public Func<string> GetCheckType; public Func<string> GetCheckType;
public Func<bool> IsChecked = () => false; public Func<bool> IsChecked = () => false;
public int BaseLine = 1;
public int CheckOffset = 2; public int CheckOffset = 2;
public bool HasPressedState = ChromeMetrics.Get<bool>("CheckboxPressedState"); public bool HasPressedState = ChromeMetrics.Get<bool>("CheckboxPressedState");
@@ -36,7 +35,6 @@ namespace OpenRA.Widgets
CheckType = other.CheckType; CheckType = other.CheckType;
GetCheckType = other.GetCheckType; GetCheckType = other.GetCheckType;
IsChecked = other.IsChecked; IsChecked = other.IsChecked;
BaseLine = other.BaseLine;
CheckOffset = other.CheckOffset; CheckOffset = other.CheckOffset;
HasPressedState = other.HasPressedState; HasPressedState = other.HasPressedState;
} }

View File

@@ -34,6 +34,7 @@ namespace OpenRA.Widgets
public int ItemSpacing = 2; public int ItemSpacing = 2;
public int ButtonDepth = ChromeMetrics.Get<int>("ButtonDepth"); public int ButtonDepth = ChromeMetrics.Get<int>("ButtonDepth");
public string Background = "scrollpanel-bg"; public string Background = "scrollpanel-bg";
public string Button = "scrollpanel-button";
public int ContentHeight; public int ContentHeight;
public ILayout Layout; public ILayout Layout;
public int MinimumThumbSize = 10; public int MinimumThumbSize = 10;
@@ -140,12 +141,12 @@ namespace OpenRA.Widgets
var thumbHover = Ui.MouseOverWidget == this && thumbRect.Contains(Viewport.LastMousePos); var thumbHover = Ui.MouseOverWidget == this && thumbRect.Contains(Viewport.LastMousePos);
WidgetUtils.DrawPanel(Background, backgroundRect); WidgetUtils.DrawPanel(Background, backgroundRect);
WidgetUtils.DrawPanel("scrollpanel-bg", scrollbarRect); WidgetUtils.DrawPanel(Background, scrollbarRect);
ButtonWidget.DrawBackground("button", upButtonRect, UpDisabled, UpPressed, upHover, false); ButtonWidget.DrawBackground(Button, upButtonRect, UpDisabled, UpPressed, upHover, false);
ButtonWidget.DrawBackground("button", downButtonRect, DownDisabled, DownPressed, downHover, false); ButtonWidget.DrawBackground(Button, downButtonRect, DownDisabled, DownPressed, downHover, false);
if (thumbHeight > 0) if (thumbHeight > 0)
ButtonWidget.DrawBackground("scrollthumb", thumbRect, false, HasMouseFocus && thumbHover, thumbHover, false); ButtonWidget.DrawBackground(Button, thumbRect, false, HasMouseFocus && thumbHover, thumbHover, false);
var upOffset = !UpPressed || UpDisabled ? 4 : 4 + ButtonDepth; var upOffset = !UpPressed || UpDisabled ? 4 : 4 + ButtonDepth;
var downOffset = !DownPressed || DownDisabled ? 4 : 4 + ButtonDepth; var downOffset = !DownPressed || DownDisabled ? 4 : 4 + ButtonDepth;

View File

@@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
if (world.Timestep == 1) if (world.Timestep == 1)
return "Max Speed"; return "Max Speed";
return "{0:F1}x Speed".F(Game.Timestep * 1f / world.Timestep); return "{0}% Speed".F(Game.Timestep * 100 / world.Timestep);
}; };
if (timer != null) if (timer != null)
@@ -54,6 +54,16 @@ namespace OpenRA.Mods.RA.Widgets.Logic
status.IsVisible = shouldShowStatus; status.IsVisible = shouldShowStatus;
status.GetText = statusText; status.GetText = statusText;
} }
var percentage = widget.GetOrNull<LabelWidget>("GAME_TIMER_PERCENTAGE");
if (percentage != null)
{
var connection = orderManager.Connection as ReplayConnection;
if (connection != null && connection.TickCount != 0)
percentage.GetText = () => "({0}%)".F(orderManager.NetFrameNumber * 100 / connection.TickCount);
else
timer.Bounds.Width += percentage.Bounds.Width;
}
} }
} }
} }

View File

@@ -8,41 +8,88 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using OpenRA.Network;
using OpenRA.Widgets; using OpenRA.Widgets;
namespace OpenRA.Mods.RA.Widgets.Logic namespace OpenRA.Mods.RA.Widgets.Logic
{ {
public class ReplayControlBarLogic public class ReplayControlBarLogic
{ {
enum PlaybackSpeed { Regular, Slow, Fast, Maximum }
readonly Dictionary<PlaybackSpeed, int> timesteps = new Dictionary<PlaybackSpeed, int>()
{
{ PlaybackSpeed.Regular, Game.Timestep },
{ PlaybackSpeed.Slow, Game.Timestep * 2 },
{ PlaybackSpeed.Fast, Game.Timestep / 2 },
{ PlaybackSpeed.Maximum, 1 },
};
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public ReplayControlBarLogic(Widget widget, World world) public ReplayControlBarLogic(Widget widget, World world, OrderManager orderManager)
{ {
if (world.IsReplay) if (world.IsReplay)
{ {
var container = widget.Get("REPLAY_PLAYER"); var container = widget.Get("REPLAY_PLAYER");
var connection = (ReplayConnection)orderManager.Connection;
var replayNetTicks = connection.TickCount;
var background = widget.Parent.GetOrNull("OBSERVER_CONTROL_BG"); var background = widget.Parent.GetOrNull("OBSERVER_CONTROL_BG");
if (background != null) if (background != null)
background.Bounds.Height += container.Bounds.Height; background.Bounds.Height += container.Bounds.Height;
container.Visible = true; container.Visible = true;
var speed = PlaybackSpeed.Regular;
var pauseButton = widget.Get<ButtonWidget>("BUTTON_PAUSE"); var pauseButton = widget.Get<ButtonWidget>("BUTTON_PAUSE");
pauseButton.IsHighlighted = () => world.Timestep == 0; pauseButton.IsVisible = () => world.Timestep != 0 && orderManager.NetFrameNumber < replayNetTicks;
pauseButton.OnClick = () => world.Timestep = 0; pauseButton.OnClick = () => world.Timestep = 0;
var playButton = widget.Get<ButtonWidget>("BUTTON_PLAY");
playButton.IsVisible = () => world.Timestep == 0 || orderManager.NetFrameNumber >= replayNetTicks;
playButton.OnClick = () => world.Timestep = timesteps[speed];
playButton.IsDisabled = () => orderManager.NetFrameNumber >= replayNetTicks;
var slowButton = widget.Get<ButtonWidget>("BUTTON_SLOW"); var slowButton = widget.Get<ButtonWidget>("BUTTON_SLOW");
slowButton.IsHighlighted = () => world.Timestep > Game.Timestep; slowButton.IsHighlighted = () => speed == PlaybackSpeed.Slow;
slowButton.OnClick = () => world.Timestep = Game.Timestep * 2; slowButton.IsDisabled = () => orderManager.NetFrameNumber >= replayNetTicks;
slowButton.OnClick = () =>
{
speed = PlaybackSpeed.Slow;
if (world.Timestep != 0)
world.Timestep = timesteps[speed];
};
var normalSpeedButton = widget.Get<ButtonWidget>("BUTTON_NORMALSPEED"); var normalSpeedButton = widget.Get<ButtonWidget>("BUTTON_REGULAR");
normalSpeedButton.IsHighlighted = () => world.Timestep == Game.Timestep; normalSpeedButton.IsHighlighted = () => speed == PlaybackSpeed.Regular;
normalSpeedButton.OnClick = () => world.Timestep = Game.Timestep; normalSpeedButton.IsDisabled = () => orderManager.NetFrameNumber >= replayNetTicks;
normalSpeedButton.OnClick = () =>
{
speed = PlaybackSpeed.Regular;
if (world.Timestep != 0)
world.Timestep = timesteps[speed];
};
var fastforwardButton = widget.Get<ButtonWidget>("BUTTON_FASTFORWARD"); var fastButton = widget.Get<ButtonWidget>("BUTTON_FAST");
fastforwardButton.IsHighlighted = () => world.Timestep == 1; fastButton.IsHighlighted = () => speed == PlaybackSpeed.Fast;
fastforwardButton.OnClick = () => world.Timestep = 1; fastButton.IsDisabled = () => orderManager.NetFrameNumber >= replayNetTicks;
fastButton.OnClick = () =>
{
speed = PlaybackSpeed.Fast;
if (world.Timestep != 0)
world.Timestep = timesteps[speed];
};
var maximumButton = widget.Get<ButtonWidget>("BUTTON_MAXIMUM");
maximumButton.IsHighlighted = () => speed == PlaybackSpeed.Maximum;
maximumButton.IsDisabled = () => orderManager.NetFrameNumber >= replayNetTicks;
maximumButton.OnClick = () =>
{
speed = PlaybackSpeed.Maximum;
if (world.Timestep != 0)
world.Timestep = timesteps[speed];
};
} }
} }
} }

View File

@@ -2,6 +2,7 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -13,7 +14,7 @@
height="512" height="512"
id="svg2" id="svg2"
version="1.1" version="1.1"
inkscape:version="0.48.4 r9939" inkscape:version="0.48.5 r10040"
sodipodi:docname="chrome.svg" sodipodi:docname="chrome.svg"
inkscape:export-filename="/Users/paul/src/OpenRA/mods/cnc/uibits/chrome.png" inkscape:export-filename="/Users/paul/src/OpenRA/mods/cnc/uibits/chrome.png"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
@@ -21,6 +22,14 @@
enable-background="new"> enable-background="new">
<defs <defs
id="defs4"> id="defs4">
<linearGradient
id="linearGradient4000"
osb:paint="solid">
<stop
style="stop-color:#ff00ff;stop-opacity:1;"
offset="0"
id="stop4002" />
</linearGradient>
<inkscape:perspective <inkscape:perspective
sodipodi:type="inkscape:persp3d" sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 256 : 1" inkscape:vp_x="0 : 256 : 1"
@@ -99,16 +108,16 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="16" inkscape:zoom="5.6568543"
inkscape:cx="22.453628" inkscape:cx="484.55509"
inkscape:cy="487.32518" inkscape:cy="394.40069"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="true" showgrid="true"
inkscape:window-width="1867" inkscape:window-width="1626"
inkscape:window-height="1176" inkscape:window-height="1005"
inkscape:window-x="53" inkscape:window-x="54"
inkscape:window-y="24" inkscape:window-y="0"
inkscape:window-maximized="1" inkscape:window-maximized="1"
showguides="true" showguides="true"
inkscape:guide-bbox="true" inkscape:guide-bbox="true"
@@ -177,10 +186,6 @@
orientation="1,0" orientation="1,0"
position="496,512" position="496,512"
id="guide4016" /> id="guide4016" />
<sodipodi:guide
orientation="1,0"
position="512,512"
id="guide4018" />
<sodipodi:guide <sodipodi:guide
orientation="0,1" orientation="0,1"
position="148,432" position="148,432"
@@ -205,7 +210,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title /> <dc:title></dc:title>
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@@ -1187,11 +1192,6 @@
d="m 293.4933,422.60165 6.8192,6.99268 0.0273,-7.03284 6.82877,6.91201 0.005,-7.62083 2.29527,0.005 -0.005,14.25414 -2.23215,0.005 -0.0158,-6.65429 -6.81074,6.06193 -0.0904,-5.97264 -6.83307,5.97605 z" d="m 293.4933,422.60165 6.8192,6.99268 0.0273,-7.03284 6.82877,6.91201 0.005,-7.62083 2.29527,0.005 -0.005,14.25414 -2.23215,0.005 -0.0158,-6.65429 -6.81074,6.06193 -0.0904,-5.97264 -6.83307,5.97605 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g> </g>
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 417.0505,632.91722 1.89097,0 0,-1.83277 1.86185,0.0291 0,1.7455 1.80369,-0.0291 0.0291,-0.84366 0.93092,0 0.0291,0.84366 1.74549,0 0.0291,-1.7746 2.7928,0.0291 0,1.7746 1.92005,0.0291 -0.0291,-0.84366 -1.0182,0 0,-2.88008 1.83278,0 0,-0.87276 0.98911,-0.0291 -0.0401,-1.79618 -2.79765,-0.0205 0,0.91541 -1.82052,0.0205 0.0205,-1.86167 -1.86168,0.0107 0,-0.9154 -1.84109,0 0.0107,-0.93598 -2.82851,0 0.0205,0.9257 -1.82052,0.0108 0.0107,0.94627 -0.92569,0 -0.0107,0.90511 -0.9257,0 -0.0107,2.77706 -0.89484,0 0,0.88456 1.79995,0.0107 0.0107,1.86168 -0.89483,-0.0205 z"
id="path4064"
inkscape:connector-curvature="0" />
<path <path
style="fill:#ffffff;fill-opacity:1;stroke:none" style="fill:#ffffff;fill-opacity:1;stroke:none"
d="M 407 48 L 407 54.09375 L 404 54.09375 L 408 60.09375 L 412 54.09375 L 409 54.09375 L 409 48 L 407 48 z " d="M 407 48 L 407 54.09375 L 404 54.09375 L 408 60.09375 L 412 54.09375 L 409 54.09375 L 409 48 L 407 48 z "
@@ -1457,6 +1457,93 @@
x="0" x="0"
y="0" y="0"
transform="translate(0,540.3622)" /> transform="translate(0,540.3622)" />
<path
style="fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 481.5,637.86222 0,13 13,0"
id="path4077"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4079"
d="m 484,642.3622 0,7"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 490,639.3622 0,10"
id="path4081"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 487,646.3622 0,3"
id="path4083"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 493,643.3622 0,6"
id="path4085"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path4087"
d="m 481.5,653.86222 0,13 13,0"
style="fill:none;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 484,658.3622 0,7"
id="path4089"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4091"
d="m 490,655.3622 0,10"
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4093"
d="m 487,662.3622 0,3"
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4095"
d="m 493,659.3622 0,6"
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4108"
d="m 481.5,669.86222 0,13 13,0"
style="fill:none;stroke:#ffc000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#ffc000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 484,674.3622 0,7"
id="path4110"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4113"
d="m 490,671.3622 0,10"
style="fill:none;stroke:#ffc000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4115"
d="m 487,678.3622 0,3"
style="fill:none;stroke:#ffc000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4117"
d="m 493,675.3622 0,6"
style="fill:none;stroke:#ffc000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g> </g>
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

View File

@@ -98,50 +98,6 @@ button-highlighted-disabled: chrome.png
corner-bl: 288,191,1,1 corner-bl: 288,191,1,1
corner-br: 319,191,1,1 corner-br: 319,191,1,1
scrollthumb: chrome.png
background: 2,194,60,60
border-r: 62,194,2,60
border-l: 0,194,2,60
border-b: 2,254,60,2
border-t: 2,192,60,2
corner-tl: 0,192,2,2
corner-tr: 62,192,2,2
corner-bl: 0,254,2,2
corner-br: 62,254,2,2
scrollthumb-hover: chrome.png
background: 2,130,60,60
border-r: 62,130,2,60
border-l: 0,130,2,60
border-b: 2,190,60,2
border-t: 2,128,60,2
corner-tl: 0,128,2,2
corner-tr: 62,128,2,2
corner-bl: 0,190,2,2
corner-br: 62,190,2,2
scrollthumb-disabled: chrome.png
background: 66,130,60,60
border-r: 126,130,2,60
border-l: 64,130,2,60
border-b: 66,190,60,2
border-t: 66,128,60,2
corner-tl: 64,128,2,2
corner-tr: 126,128,2,2
corner-bl: 64,190,2,2
corner-br: 126,190,2,2
scrollthumb-pressed: chrome.png
background: 66,194,60,60
border-r: 126,194,2,60
border-l: 64,194,2,60
border-b: 66,254,60,2
border-t: 66,192,60,2
corner-tl: 64,192,2,2
corner-tr: 126,192,2,2
corner-bl: 64,254,2,2
corner-br: 126,254,2,2
# A copy of button # A copy of button
textfield: chrome.png textfield: chrome.png
background: 2,194,60,60 background: 2,194,60,60
@@ -227,6 +183,50 @@ scrollpanel-bg: chrome.png
corner-bl: 64,126,2,2 corner-bl: 64,126,2,2
corner-br: 126,126,2,2 corner-br: 126,126,2,2
scrollpanel-button: chrome.png
background: 2,194,60,60
border-r: 62,194,2,60
border-l: 0,194,2,60
border-b: 2,254,60,2
border-t: 2,192,60,2
corner-tl: 0,192,2,2
corner-tr: 62,192,2,2
corner-bl: 0,254,2,2
corner-br: 62,254,2,2
scrollpanel-button-hover: chrome.png
background: 2,130,60,60
border-r: 62,130,2,60
border-l: 0,130,2,60
border-b: 2,190,60,2
border-t: 2,128,60,2
corner-tl: 0,128,2,2
corner-tr: 62,128,2,2
corner-bl: 0,190,2,2
corner-br: 62,190,2,2
scrollpanel-button-disabled: chrome.png
background: 66,130,60,60
border-r: 126,130,2,60
border-l: 64,130,2,60
border-b: 66,190,60,2
border-t: 66,128,60,2
corner-tl: 64,128,2,2
corner-tr: 126,128,2,2
corner-bl: 64,190,2,2
corner-br: 126,190,2,2
scrollpanel-button-pressed: chrome.png
background: 66,194,60,60
border-r: 126,194,2,60
border-l: 64,194,2,60
border-b: 66,254,60,2
border-t: 66,192,60,2
corner-tl: 64,192,2,2
corner-tr: 126,192,2,2
corner-bl: 64,254,2,2
corner-br: 126,254,2,2
# A copy of button-hover # A copy of button-hover
scrollitem-hover: chrome.png scrollitem-hover: chrome.png
background: 2,130,60,60 background: 2,130,60,60
@@ -465,4 +465,7 @@ order-icons: chrome.png
repair-active: 384,80,16,16 repair-active: 384,80,16,16
beacon: 400,48,16,16 beacon: 400,48,16,16
beacon-disabled: 400,64,16,16 beacon-disabled: 400,64,16,16
beacon-active: 400,80,16,16 beacon-active: 400,80,16,16
stats: 480,96,16,16
stats-disabled: 480,112,16,16
stats-active: 480,128,16,16

View File

@@ -61,15 +61,14 @@ Container@INGAME_ROOT:
TooltipContainer@TOOLTIP_CONTAINER: TooltipContainer@TOOLTIP_CONTAINER:
Container@OBSERVER_WIDGETS: Container@OBSERVER_WIDGETS:
Logic: OrderButtonsChromeLogic
Children: Children:
MenuButton@OPTIONS_BUTTON: MenuButton@OPTIONS_BUTTON:
Logic: OrderButtonsChromeLogic
Key: escape Key: escape
X: WINDOW_RIGHT-202 X: WINDOW_RIGHT-260-WIDTH
Y: 5 Y: 5
Width: 30 Width: 30
Height: 25 Height: 25
Font: Bold
TooltipText: Menu TooltipText: Menu
TooltipContainer: TOOLTIP_CONTAINER TooltipContainer: TOOLTIP_CONTAINER
Children: Children:
@@ -78,11 +77,28 @@ Container@OBSERVER_WIDGETS:
Y: 5 Y: 5
ImageCollection: order-icons ImageCollection: order-icons
ImageName: options ImageName: options
MenuButton@OBSERVER_STATS_BUTTON:
Key: F1
X: WINDOW_RIGHT-260-WIDTH
Y: 35
Width: 30
Height: 25
TooltipText: Statistics
TooltipContainer: TOOLTIP_CONTAINER
MenuContainer: INGAME_OBSERVERSTATS_BG
HideIngameUI: false
Pause: false
Children:
Image@ICON:
X: 7
Y: 5
ImageCollection: order-icons
ImageName: stats
Background@RADAR: Background@RADAR:
X: WINDOW_RIGHT-173 X: WINDOW_RIGHT-WIDTH-5
Y: 5 Y: 5
Width: 168 Width: 256
Height: 168 Height: 256
Background: panel-gray Background: panel-gray
Children: Children:
Radar: Radar:
@@ -92,15 +108,15 @@ Container@OBSERVER_WIDGETS:
Height: PARENT_BOTTOM-2 Height: PARENT_BOTTOM-2
Background@REPLAY_PLAYER: Background@REPLAY_PLAYER:
Logic: ReplayControlBarLogic Logic: ReplayControlBarLogic
X: WINDOW_RIGHT-173 X: WINDOW_RIGHT-WIDTH-5
Y: 195 Y: 283
Width: 168 Width: 256
Height: 46 Height: 46
Background: panel-black Background: panel-black
Visible: false Visible: false
Children: Children:
Button@BUTTON_PAUSE: Button@BUTTON_PAUSE:
X: 14 X: 16
Y: 10 Y: 10
Width: 26 Width: 26
Height: 26 Height: 26
@@ -113,22 +129,8 @@ Container@OBSERVER_WIDGETS:
Height: 16 Height: 16
ImageCollection: music ImageCollection: music
ImageName: pause ImageName: pause
Button@BUTTON_SLOW: Button@BUTTON_PLAY:
X: 14 + 38 X: 16
Y: 10
Width: 26
Height: 26
IgnoreChildMouseOver: true
Children:
Image@IMAGE_SLOW:
X: 5
Y: 5
Width: 16
Height: 16
ImageCollection: music
ImageName: slowmo
Button@BUTTON_NORMALSPEED:
X: 14 + 38*2
Y: 10 Y: 10
Width: 26 Width: 26
Height: 26 Height: 26
@@ -141,25 +143,55 @@ Container@OBSERVER_WIDGETS:
Height: 16 Height: 16
ImageCollection: music ImageCollection: music
ImageName: play ImageName: play
Button@BUTTON_FASTFORWARD: Button@BUTTON_SLOW:
X: 14 + 38*3 X: 57
Y: 10 Y: 13
Width: 26 Width: 36
Height: 26 Height: 20
IgnoreChildMouseOver: true BaseLine: 1
Children: TooltipText: Slow speed
Image@IMAGE_FASTFORWARD: TooltipContainer: TOOLTIP_CONTAINER
X: 5 VisualHeight: 0
Y: 5 Text: 50%
Width: 16 Font: TinyBold
Height: 16 Button@BUTTON_REGULAR:
ImageCollection: music X: 57 + 48
ImageName: fastforward Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Regular speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 100%
Font: TinyBold
Button@BUTTON_FAST:
X: 57 + 48*2
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Fast speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 200%
Font: TinyBold
Button@BUTTON_MAXIMUM:
X: 57 + 48*3
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Maximum speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: MAX
Font: TinyBold
DropDownButton@SHROUD_SELECTOR: DropDownButton@SHROUD_SELECTOR:
Logic: ObserverShroudSelectorLogic Logic: ObserverShroudSelectorLogic
X: WINDOW_RIGHT-173 X: WINDOW_RIGHT-WIDTH-5
Y: 172 Y: 260
Width: 168 Width:256
Height: 25 Height: 25
Font: Bold Font: Bold
Children: Children:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -384,55 +384,7 @@ button-highlighted-disabled: dialog.png
corner-tr: 639,0,1,1 corner-tr: 639,0,1,1
corner-bl: 768,127,1,1 corner-bl: 768,127,1,1
corner-br: 639,127,1,1 corner-br: 639,127,1,1
# A copy of dialog2 (normal button)
scrollthumb: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollthumb-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollthumb-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollthumb-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of dialog3 (pressed button) # A copy of dialog3 (pressed button)
textfield: dialog.png textfield: dialog.png
background: 641,1,126,126 background: 641,1,126,126
@@ -493,6 +445,54 @@ scrollpanel-bg: dialog.png
corner-bl: 640,127,1,1 corner-bl: 640,127,1,1
corner-br: 767,127,1,1 corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollpanel-button-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollpanel-button-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
slider: dialog.png slider: dialog.png
tick: 512,1,2,4 tick: 512,1,2,4

View File

@@ -63,66 +63,77 @@ Container@OBSERVER_WIDGETS:
Height: 25 Height: 25
Container@REPLAY_PLAYER: Container@REPLAY_PLAYER:
Logic: ReplayControlBarLogic Logic: ReplayControlBarLogic
X: PARENT_RIGHT/2 - 80 Y: 39
Y: 35
Width: 160 Width: 160
Height: 35 Height: 35
Visible: false Visible: false
Children: Children:
Button@BUTTON_PAUSE: Button@BUTTON_PAUSE:
X: 15 X: 15
Y: 15 Y: 10
Width: 25 Width: 26
Height: 25 Height: 26
IgnoreChildMouseOver: true IgnoreChildMouseOver: true
Children: Children:
Image@IMAGE_PAUSE: Image@IMAGE_PAUSE:
X: 0 Y: 1
Y: 0
Width: 25 Width: 25
Height: 25 Height: 25
ImageCollection: music ImageCollection: music
ImageName: pause ImageName: pause
Button@BUTTON_SLOW: Button@BUTTON_PLAY:
X: 50 X: 15
Y: 15 Y: 10
Width: 25 Width: 26
Height: 25 Height: 26
IgnoreChildMouseOver: true
Children:
Image@IMAGE_SLOW:
X: 4
Y: 0
Width: 25
Height: 25
ImageCollection: music
ImageName: slowmo
Button@BUTTON_NORMALSPEED:
X: 85
Y: 15
Width: 25
Height: 25
IgnoreChildMouseOver: true IgnoreChildMouseOver: true
Children: Children:
Image@IMAGE_PLAY: Image@IMAGE_PLAY:
X: 0
Y: 0
Width: 25 Width: 25
Height: 25 Height: 25
ImageCollection: music ImageCollection: music
ImageName: play ImageName: play
Button@BUTTON_FASTFORWARD: Button@BUTTON_SLOW:
X: 120 X: 55
Y: 15 Y: 13
Width: 25 Width: 36
Height: 25 Height: 20
IgnoreChildMouseOver: true BaseLine: 1
Children: TooltipText: Slow speed
Image@IMAGE_FASTFORWARD: TooltipContainer: TOOLTIP_CONTAINER
X: 4 VisualHeight: 0
Y: 0 Text: 50%
Width: 25 Font: TinyBold
Height: 25 Button@BUTTON_REGULAR:
ImageCollection: music X: 55 + 45
ImageName: fastforward Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Regular speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 100%
Font: TinyBold
Button@BUTTON_FAST:
X: 55 + 45*2
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Fast speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 200%
Font: TinyBold
Button@BUTTON_MAXIMUM:
X: 55 + 45*3
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Maximum speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: MAX
Font: TinyBold

View File

@@ -17,9 +17,9 @@ sidebar-button-allies-highlighted-hover: chrome.png
sidebar-button-allies-highlighted-pressed: chrome.png sidebar-button-allies-highlighted-pressed: chrome.png
background: 84,28,28,28 background: 84,28,28,28
sidebar-button-allies-disabled: chrome.png sidebar-button-allies-disabled: chrome.png
background: 112,0,28,28 background: 168,0,28,28
sidebar-button-allies-highlighted-disabled: chrome.png sidebar-button-allies-highlighted-disabled: chrome.png
background: 112,0,28,28 background: 168,0,28,28
sidebar-soviet: chrome.png sidebar-soviet: chrome.png
background-top: 274,167,238,290 background-top: 274,167,238,290
@@ -40,9 +40,9 @@ sidebar-button-soviet-highlighted-hover: chrome.png
sidebar-button-soviet-highlighted-pressed: chrome.png sidebar-button-soviet-highlighted-pressed: chrome.png
background: 28,28,28,28 background: 28,28,28,28
sidebar-button-soviet-disabled: chrome.png sidebar-button-soviet-disabled: chrome.png
background: 112,0,28,28 background: 168,0,28,28
sidebar-button-soviet-highlighted-disabled: chrome.png sidebar-button-soviet-highlighted-disabled: chrome.png
background: 112,0,28,28 background: 168,0,28,28
sidebar-bits: chrome.png sidebar-bits: chrome.png
production-tooltip-time: 416, 80, 16, 16 production-tooltip-time: 416, 80, 16, 16
@@ -93,6 +93,174 @@ order-icons: chrome.png
power: 480,48,16,16 power: 480,48,16,16
power-disabled: 480,64,16,16 power-disabled: 480,64,16,16
power-active: 480,80,16,16 power-active: 480,80,16,16
stats: 368,48,16,16
stats-disabled: 368,64,16,16
stats-active: 368,80,16,16
sidebar-observer: chrome.png
background: 512,167,238,287
replay-bottom: 512,454,238,40
observer-bottom: 512,495,238,8
sidebar-button-observershroud: chrome.png
sidebar-button-observer: chrome.png
background: 117,33,18,18
border-r: 135,33,5,18
border-l: 112,33,5,18
border-b: 117,51,18,5
border-t: 117,28,18,5
corner-tl: 112,28,5,5
corner-tr: 135,28,5,5
corner-bl: 112,51,5,5
corner-br: 135,51,5,5
sidebar-button-observer-hover: chrome.png
background: 117,5,18,18
border-r: 135,5,5,18
border-l: 112,5,5,18
border-b: 117,23,18,5
border-t: 117,0,18,5
corner-tl: 112,0,5,5
corner-tr: 135,0,5,5
corner-bl: 112,23,5,5
corner-br: 135,23,5,5
sidebar-button-observer-pressed: chrome.png
background: 117,33,18,18
border-r: 135,33,5,18
border-l: 112,33,5,18
border-b: 117,51,18,5
border-t: 117,28,18,5
corner-tl: 112,28,5,5
corner-tr: 135,28,5,5
corner-bl: 112,51,5,5
corner-br: 135,51,5,5
sidebar-button-observer-highlighted: chrome.png
background: 145,33,18,18
border-r: 163,33,5,18
border-l: 140,33,5,18
border-b: 145,51,18,5
border-t: 145,28,18,5
corner-tl: 140,28,5,5
corner-tr: 163,28,5,5
corner-bl: 140,51,5,5
corner-br: 163,51,5,5
sidebar-button-observer-highlighted-hover: chrome.png
background: 145,5,18,18
border-r: 163,5,5,18
border-l: 140,5,5,18
border-b: 145,23,18,5
border-t: 145,0,18,5
corner-tl: 140,0,5,5
corner-tr: 163,0,5,5
corner-bl: 140,23,5,5
corner-br: 163,23,5,5
sidebar-button-observer-highlighted-pressed: chrome.png
background: 33,33,18,18
border-r: 51,33,5,18
border-l: 28,33,5,18
border-b: 33,51,18,5
border-t: 33,28,18,5
corner-tl: 28,28,5,5
corner-tr: 51,28,5,5
corner-bl: 28,51,5,5
corner-br: 51,51,5,5
sidebar-button-observer-disabled: chrome.png
background: 173,5,18,18
border-r: 191,5,5,18
border-l: 168,5,5,18
border-b: 173,23,18,5
border-t: 173,0,18,5
corner-tl: 168,0,5,5
corner-tr: 191,0,5,5
corner-bl: 168,23,5,5
corner-br: 191,23,5,5
sidebar-button-observer-highlighted-disabled: chrome.png
background: 173,5,18,18
border-r: 191,5,5,18
border-l: 168,5,5,18
border-b: 173,23,18,5
border-t: 173,0,18,5
corner-tl: 168,0,5,5
corner-tr: 191,0,5,5
corner-bl: 168,23,5,5
corner-br: 191,23,5,5
observer-scrollpanel-button: dialog.png
background: 769,257,126,126
border-r: 895,257,1,126
border-l: 768,257,1,126
border-b: 769,383,126,1
border-t: 769,256,126,1
corner-tl: 768,256,1,1
corner-tr: 895,256,1,1
corner-bl: 768,383,1,1
corner-br: 895,383,1,1
observer-scrollpanel-button-hover: dialog.png
background: 769,257,126,126
border-r: 895,257,1,126
border-l: 768,257,1,126
border-b: 769,383,126,1
border-t: 769,256,126,1
corner-tl: 768,256,1,1
corner-tr: 895,256,1,1
corner-bl: 768,383,1,1
corner-br: 895,383,1,1
observer-scrollpanel-button-pressed: dialog.png
background: 897,257,126,126
border-r: 1023,257,1,126
border-l: 896,257,1,126
border-b: 897,383,126,1
border-t: 897,256,126,1
corner-tl: 896,256,1,1
corner-tr: 1023,256,1,1
corner-bl: 896,383,1,1
corner-br: 1023,383,1,1
observer-scrollpanel-button-disabled: dialog.png
background: 769,385,126,126
border-r: 895,385,1,126
border-l: 768,385,1,126
border-b: 769,511,126,1
border-t: 769,384,126,1
corner-tl: 768,384,1,1
corner-tr: 895,384,1,1
corner-bl: 768,511,1,1
corner-br: 895,511,1,1
observer-scrollheader-selected: dialog.png
background: 769,385,126,126
border-r: 895,385,1,126
border-l: 768,385,1,126
border-b: 769,511,126,1
border-t: 769,384,126,1
corner-tl: 768,384,1,1
corner-tr: 895,384,1,1
corner-bl: 768,511,1,1
corner-br: 895,511,1,1
observer-scrollitem-selected: dialog.png
background: 897,257,126,126
border-r: 1023,257,1,126
border-l: 896,257,1,126
border-b: 897,383,126,1
border-t: 897,256,126,1
corner-tl: 896,256,1,1
corner-tr: 1023,256,1,1
corner-bl: 896,383,1,1
corner-br: 1023,383,1,1
observer-scrollitem-hover: dialog.png
background: 769,257,126,126
border-r: 895,257,1,126
border-l: 768,257,1,126
border-b: 769,383,126,1
border-t: 769,256,126,1
corner-tl: 768,256,1,1
corner-tr: 895,256,1,1
corner-bl: 768,383,1,1
corner-br: 895,383,1,1
# Used for the main menu frame # Used for the main menu frame
dialog: dialog.png dialog: dialog.png
@@ -375,54 +543,6 @@ newsbutton-pressed: dialog.png
corner-bl: 640,127,1,1 corner-bl: 640,127,1,1
corner-br: 767,127,1,1 corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollthumb: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollthumb-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollthumb-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollthumb-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of dialog3 (pressed button) # A copy of dialog3 (pressed button)
textfield: dialog.png textfield: dialog.png
background: 641,1,126,126 background: 641,1,126,126
@@ -483,6 +603,55 @@ scrollpanel-bg: dialog.png
corner-bl: 640,127,1,1 corner-bl: 640,127,1,1
corner-br: 767,127,1,1 corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollpanel-button-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollpanel-button-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
slider: dialog.png slider: dialog.png
tick: 512,1,2,4 tick: 512,1,2,4

View File

@@ -60,9 +60,11 @@ ScrollPanel@SPAWN_DROPDOWN_TEMPLATE:
ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH Width: DROPDOWN_WIDTH
Background: observer-scrollpanel-button-pressed
Button: observer-scrollpanel-button
Children: Children:
ScrollItem@HEADER: ScrollItem@HEADER:
BaseName: scrollheader BaseName: observer-scrollheader
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 13 Height: 13
X: 2 X: 2
@@ -75,6 +77,7 @@ ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE:
Height: 10 Height: 10
Align: Center Align: Center
ScrollItem@TEMPLATE: ScrollItem@TEMPLATE:
BaseName: observer-scrollitem
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 25 Height: 25
X: 2 X: 2
@@ -83,7 +86,7 @@ ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE:
Children: Children:
Image@FLAG: Image@FLAG:
X: 4 X: 4
Y: 4 Y: 6
Width: 32 Width: 32
Height: 16 Height: 16
Label@LABEL: Label@LABEL:

View File

@@ -1,77 +1,95 @@
Container@OBSERVER_WIDGETS: Container@OBSERVER_WIDGETS:
Logic: OrderButtonsChromeLogic
Children: Children:
Container@GAME_TIMER_BLOCK: Image@SIDEBAR_BACKGROUND_TOP:
Logic: GameTimerLogic X: WINDOW_RIGHT - 250
X: WINDOW_RIGHT/2 - WIDTH Y: 10
Width: 100 Width: 238
Height: 55 Height: 287
ImageCollection: sidebar-observer
ImageName: background
ClickThrough: false
Children: Children:
Label@GAME_TIMER: Background@GAME_TIMER_BLOCK:
Width: PARENT_RIGHT Logic: GameTimerLogic
Height: 15 X: 26
Align: Center
Font: Title
Contrast: true
Label@GAME_TIMER_STATUS:
Y: 35
Width: PARENT_RIGHT
Height: 15
Align: Center
Font: Bold
Contrast: true
MenuButton@OPTIONS_BUTTON:
MenuContainer: INGAME_MENU
HideIngameUI: true
Pause: false
X: 0
Y: 0
Width: 160
Height: 25
Text: Options (Esc)
Font: Bold
Key: escape
MenuButton@OBSERVER_STATS_BUTTON:
MenuContainer: INGAME_OBSERVERSTATS_BG
HideIngameUI: false
Pause: false
X: 162
Y: 0
Width: 160
Height: 25
Text: Statistics (F1)
Font: Bold
Key: f1
Background@RADAR_BG:
X: WINDOW_RIGHT-255
Y: 5
Width: 250
Height: 250
Children:
Radar@INGAME_RADAR:
X: 10
Y: 10 Y: 10
Width: PARENT_RIGHT-19 Width: 120
Height: PARENT_BOTTOM-19 Height: 22
WorldInteractionController: INTERACTION_CONTROLLER Background: sidebar-button-observer
Background@OBSERVER_CONTROL_BG: Children:
X: WINDOW_RIGHT-255 Label@GAME_TIMER:
Y: 260 Y: 0-1
Width: 250 Width: PARENT_RIGHT - 30
Height: 55 Height: PARENT_BOTTOM
Children: Align: Center
Font: TinyBold
Label@GAME_TIMER_PERCENTAGE:
X: PARENT_RIGHT - 40
Y: 0-1
Width: 30
Height: PARENT_BOTTOM
Align: Right
Font: TinyBold
Container@TOP_BUTTONS:
Logic: OrderButtonsChromeLogic
X: 9
Y: 7
Children:
MenuButton@OBSERVER_STATS_BUTTON:
MenuContainer: INGAME_OBSERVERSTATS_BG
HideIngameUI: false
Pause: false
Key: F1
X: 160
Width: 28
Height: 28
Background: sidebar-button-observer
TooltipText: Statistics
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Children:
Image@ICON:
X: 6
Y: 6
ImageCollection: order-icons
ImageName: stats
MenuButton@OPTIONS_BUTTON:
Key: escape
X: 192
Width: 28
Height: 28
Background: sidebar-button-observer
TooltipText: Options
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Children:
Image@ICON:
X: 6
Y: 6
ImageCollection: order-icons
ImageName: options
Container@RADAR:
Children:
Radar@INGAME_RADAR:
WorldInteractionController: INTERACTION_CONTROLLER
X: 9
Y: 41
Width: 220
Height: 220
DropDownButton@SHROUD_SELECTOR: DropDownButton@SHROUD_SELECTOR:
Logic: ObserverShroudSelectorLogic Logic: ObserverShroudSelectorLogic
X: 15 X: 6
Y: 15 Y: 262
Width: 220 Width: 226
Height: 25 Height: 25
Font: Bold Font: Bold
VisualHeight: 0
Background: sidebar-button-observershroud
Children: Children:
LogicKeyListener@SHROUD_KEYHANDLER: LogicKeyListener@SHROUD_KEYHANDLER:
Image@FLAG: Image@FLAG:
X: 4 X: 4
Y: 4 Y: 6
Width: 32 Width: 32
Height: 16 Height: 16
Label@LABEL: Label@LABEL:
@@ -82,68 +100,100 @@ Container@OBSERVER_WIDGETS:
X: 5 X: 5
Width: PARENT_RIGHT Width: PARENT_RIGHT
Height: 25 Height: 25
Container@REPLAY_PLAYER: Image@SIDEBAR_BACKGROUND_BOTTOM:
Logic: ReplayControlBarLogic X: WINDOW_RIGHT - 250
X: PARENT_RIGHT/2 - 80 Y: 297
Y: 35 Width: 238
Width: 160 Height: 8
Height: 35 ImageCollection: sidebar-observer
Visible: false ImageName: observer-bottom
Image@REPLAY_PLAYER:
Logic: ReplayControlBarLogic
X: WINDOW_RIGHT - 250
Y: 297
Width: 238
Height: 40
Visible: false
ImageCollection: sidebar-observer
ImageName: replay-bottom
ClickThrough: false
Visible: false
Children:
Button@BUTTON_PAUSE:
X: 9
Y: 5
Width: 28
Height: 28
Background: sidebar-button-observer
TooltipText: Pause
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Children: Children:
Button@BUTTON_PAUSE: Image@IMAGE_PAUSE:
X: 15 X: 2
Y: 15 Y: 2
Width: 25 ImageCollection: music
Height: 25 ImageName: pause
IgnoreChildMouseOver: true Button@BUTTON_PLAY:
Children: X: 9
Image@IMAGE_PAUSE: Y: 5
X: 0 Width: 28
Y: 0 Height: 28
Width: 25 Background: sidebar-button-observer
Height: 25 TooltipText: Play
ImageCollection: music TooltipContainer: TOOLTIP_CONTAINER
ImageName: pause VisualHeight: 0
Button@BUTTON_SLOW: Children:
X: 50 Image@IMAGE_PLAY:
Y: 15 X: 2
Width: 25 Y: 1
Height: 25 ImageCollection: music
IgnoreChildMouseOver: true ImageName: play
Children: Button@BUTTON_SLOW:
Image@IMAGE_SLOW: X: 49
X: 4 Y: 8
Y: 0 Width: 42
Width: 25 Height: 22
Height: 25 BaseLine: 1
ImageCollection: music Background: sidebar-button-observer
ImageName: slowmo TooltipText: Slow speed
Button@BUTTON_NORMALSPEED: TooltipContainer: TOOLTIP_CONTAINER
X: 85 VisualHeight: 0
Y: 15 Text: 50%
Width: 25 Font: TinyBold
Height: 25 Button@BUTTON_REGULAR:
IgnoreChildMouseOver: true X: 95
Children: Y: 8
Image@IMAGE_PLAY: Width: 42
X: 0 Height: 22
Y: 0 BaseLine: 1
Width: 25 Background: sidebar-button-observer
Height: 25 TooltipText: Regular speed
ImageCollection: music TooltipContainer: TOOLTIP_CONTAINER
ImageName: play VisualHeight: 0
Button@BUTTON_FASTFORWARD: Text: 100%
X: 120 Font: TinyBold
Y: 15 Button@BUTTON_FAST:
Width: 25 X: 141
Height: 25 Y: 8
IgnoreChildMouseOver: true Width: 42
Children: Height: 22
Image@IMAGE_FASTFORWARD: BaseLine: 1
X: 4 Background: sidebar-button-observer
Y: 0 TooltipText: Fast speed
Width: 25 TooltipContainer: TOOLTIP_CONTAINER
Height: 25 VisualHeight: 0
ImageCollection: music Text: 200%
ImageName: fastforward Font: TinyBold
Button@BUTTON_MAXIMUM:
X: 187
Y: 8
Width: 42
Height: 22
BaseLine: 1
Background: sidebar-button-observer
TooltipText: Maximum speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: MAX
Font: TinyBold

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -397,54 +397,6 @@ newsbutton-pressed: dialog.png
corner-bl: 640,127,1,1 corner-bl: 640,127,1,1
corner-br: 767,127,1,1 corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollthumb: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollthumb-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollthumb-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollthumb-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of dialog3 (pressed button) # A copy of dialog3 (pressed button)
textfield: dialog.png textfield: dialog.png
background: 641,1,126,126 background: 641,1,126,126
@@ -505,6 +457,54 @@ scrollpanel-bg: dialog.png
corner-bl: 640,127,1,1 corner-bl: 640,127,1,1
corner-br: 767,127,1,1 corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
# A copy of button-hover
scrollpanel-button-hover: dialog.png
background: 513,129,126,126
border-r: 639,129,1,126
border-l: 512,129,1,126
border-b: 513,255,126,1
border-t: 513,128,126,1
corner-tl: 512,128,1,1
corner-tr: 639,128,1,1
corner-bl: 512,255,1,1
corner-br: 639,255,1,1
# A copy of dialog3 (pressed button)
scrollpanel-button-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 767,0,1,1
corner-bl: 640,127,1,1
corner-br: 767,127,1,1
# A copy of dialog2 (normal button)
scrollpanel-button-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 639,0,1,1
corner-bl: 512,127,1,1
corner-br: 639,127,1,1
slider: dialog.png slider: dialog.png
tick: 512,1,1,4 tick: 512,1,1,4

View File

@@ -0,0 +1,130 @@
ScrollPanel@LABEL_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH
Children:
ScrollItem@HEADER:
BaseName: scrollheader
Width: PARENT_RIGHT-27
Height: 13
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
Font: TinyBold
Width: PARENT_RIGHT
Height: 10
Align: Center
ScrollItem@TEMPLATE:
Width: PARENT_RIGHT-27
Height: 25
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
X: 10
Width: PARENT_RIGHT-20
Height: 25
ScrollPanel@TEAM_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH
Children:
ScrollItem@TEMPLATE:
Width: PARENT_RIGHT-27
Height: 25
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
X: 0
Width: PARENT_RIGHT
Height: 25
Align: Center
ScrollPanel@SPAWN_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH
Children:
ScrollItem@TEMPLATE:
Width: PARENT_RIGHT-27
Height: 25
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
X: 0
Width: PARENT_RIGHT
Height: 25
Align: Center
ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH
Children:
ScrollItem@HEADER:
BaseName: scrollheader
Width: PARENT_RIGHT-27
Height: 13
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
Font: TinyBold
Width: PARENT_RIGHT
Height: 10
Align: Center
ScrollItem@TEMPLATE:
Width: PARENT_RIGHT-27
Height: 25
X: 2
Y: 0
Visible: false
Children:
Image@FLAG:
X: 4
Y: 6
Width: 32
Height: 16
Label@LABEL:
X: 40
Width: 60
Height: 25
Label@NOFLAG_LABEL:
X: 5
Width: PARENT_RIGHT
Height: 25
ScrollPanel@NEWS_PANEL:
Width: 370
Height: 265
ItemSpacing: 5
Children:
Container@NEWS_ITEM_TEMPLATE:
X: 10
Y: 5
Width: PARENT_RIGHT - 40
Height: 45
Children:
Label@TITLE:
Width: PARENT_RIGHT
Height: 25
Align: Center
Font: Bold
Label@AUTHOR_DATETIME:
Y: 25
Width: PARENT_RIGHT
Height: 15
Align: Center
Text: by {0} at {1}
Font: TinyBold
Label@CONTENT:
Y: 45
Width: PARENT_RIGHT
Label@NEWS_STATUS:
X: 80
Y: 0
Width: PARENT_RIGHT - 80 - 80 - 24
Height: PARENT_BOTTOM
Align: Center
VAlign: Middle

View File

@@ -0,0 +1,130 @@
Container@OBSERVER_WIDGETS:
Children:
MenuButton@OBSERVER_STATS_BUTTON:
Logic: OrderButtonsChromeLogic
MenuContainer: INGAME_OBSERVERSTATS_BG
HideIngameUI: False
Pause: False
X: 162
Y: 0
Width: 160
Height: 25
Text: Statistics (F1)
Font: Bold
Key: f1
Background@RADAR_BG:
X: WINDOW_RIGHT-255
Y: 5
Width: 250
Height: 250
Children:
Radar@INGAME_RADAR:
X: 10
Y: 10
Width: PARENT_RIGHT-19
Height: PARENT_BOTTOM-19
WorldInteractionController: INTERACTION_CONTROLLER
Background@OBSERVER_CONTROL_BG:
X: WINDOW_RIGHT-255
Y: 260
Width: 250
Height: 55
Children:
DropDownButton@SHROUD_SELECTOR:
Logic: ObserverShroudSelectorLogic
X: 15
Y: 15
Width: 220
Height: 25
Font: Bold
Children:
LogicKeyListener@SHROUD_KEYHANDLER:
Image@FLAG:
X: 4
Y: 4
Width: 32
Height: 16
Label@LABEL:
X: 40
Width: 60
Height: 25
Label@NOFLAG_LABEL:
X: 5
Width: PARENT_RIGHT
Height: 25
Container@REPLAY_PLAYER:
Logic: ReplayControlBarLogic
Y: 39
Width: 160
Height: 35
Visible: false
Children:
Button@BUTTON_PAUSE:
X: 15
Y: 10
Width: 26
Height: 26
IgnoreChildMouseOver: true
Children:
Image@IMAGE_PAUSE:
Y: 1
Width: 25
Height: 25
ImageCollection: music
ImageName: pause
Button@BUTTON_PLAY:
X: 15
Y: 10
Width: 26
Height: 26
IgnoreChildMouseOver: true
Children:
Image@IMAGE_PLAY:
Width: 25
Height: 25
ImageCollection: music
ImageName: play
Button@BUTTON_SLOW:
X: 55
Y: 13
Width: 36
Height: 20
BaseLine: 1
TooltipText: Slow speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 50%
Font: TinyBold
Button@BUTTON_REGULAR:
X: 55 + 45
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Regular speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 100%
Font: TinyBold
Button@BUTTON_FAST:
X: 55 + 45*2
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Fast speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: 200%
Font: TinyBold
Button@BUTTON_MAXIMUM:
X: 55 + 45*3
Y: 13
Width: 38
Height: 20
BaseLine: 1
TooltipText: Maximum speed
TooltipContainer: TOOLTIP_CONTAINER
VisualHeight: 0
Text: MAX
Font: TinyBold

View File

@@ -110,7 +110,7 @@ ChromeLayout:
./mods/ra/chrome/ingame-infobriefing.yaml ./mods/ra/chrome/ingame-infobriefing.yaml
./mods/ra/chrome/ingame-infoobjectives.yaml ./mods/ra/chrome/ingame-infoobjectives.yaml
./mods/ra/chrome/ingame-infostats.yaml ./mods/ra/chrome/ingame-infostats.yaml
./mods/ra/chrome/ingame-observer.yaml ./mods/ts/chrome/ingame-observer.yaml
./mods/ra/chrome/ingame-observerstats.yaml ./mods/ra/chrome/ingame-observerstats.yaml
./mods/ts/chrome/ingame-player.yaml ./mods/ts/chrome/ingame-player.yaml
./mods/ra/chrome/ingame-debug.yaml ./mods/ra/chrome/ingame-debug.yaml
@@ -129,7 +129,7 @@ ChromeLayout:
./mods/ra/chrome/connection.yaml ./mods/ra/chrome/connection.yaml
./mods/ra/chrome/directconnect.yaml ./mods/ra/chrome/directconnect.yaml
./mods/ra/chrome/replaybrowser.yaml ./mods/ra/chrome/replaybrowser.yaml
./mods/ra/chrome/dropdowns.yaml ./mods/ts/chrome/dropdowns.yaml
./mods/ra/chrome/musicplayer.yaml ./mods/ra/chrome/musicplayer.yaml
./mods/ra/chrome/tooltips.yaml ./mods/ra/chrome/tooltips.yaml
./mods/ra/chrome/assetbrowser.yaml ./mods/ra/chrome/assetbrowser.yaml