Merge pull request #5972 from pchote/new-ra-ui
Closes #2394 Closes #2385 Closes #4980 Closes #5108
@@ -30,7 +30,7 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
public override bool HandleMouseInput(MouseInput mi)
|
public override bool HandleMouseInput(MouseInput mi)
|
||||||
{
|
{
|
||||||
if (ClickThrough || !Bounds.Contains(mi.Location))
|
if (ClickThrough || !RenderBounds.Contains(mi.Location))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Draggable || moving && (!TakeMouseFocus(mi) || mi.Button != MouseButton.Left))
|
if (!Draggable || moving && (!TakeMouseFocus(mi) || mi.Button != MouseButton.Left))
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ namespace OpenRA.Widgets
|
|||||||
{
|
{
|
||||||
public string ImageCollection = "";
|
public string ImageCollection = "";
|
||||||
public string ImageName = "";
|
public string ImageName = "";
|
||||||
|
public bool ClickThrough = true;
|
||||||
public Func<string> GetImageName;
|
public Func<string> GetImageName;
|
||||||
public Func<string> GetImageCollection;
|
public Func<string> GetImageCollection;
|
||||||
|
|
||||||
@@ -29,6 +30,7 @@ namespace OpenRA.Widgets
|
|||||||
protected ImageWidget(ImageWidget other)
|
protected ImageWidget(ImageWidget other)
|
||||||
: base(other)
|
: base(other)
|
||||||
{
|
{
|
||||||
|
ClickThrough = other.ClickThrough;
|
||||||
ImageName = other.ImageName;
|
ImageName = other.ImageName;
|
||||||
GetImageName = other.GetImageName;
|
GetImageName = other.GetImageName;
|
||||||
ImageCollection = other.ImageCollection;
|
ImageCollection = other.ImageCollection;
|
||||||
@@ -48,5 +50,10 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
WidgetUtils.DrawRGBA(sprite, RenderOrigin);
|
WidgetUtils.DrawRGBA(sprite, RenderOrigin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool HandleMouseInput(MouseInput mi)
|
||||||
|
{
|
||||||
|
return !ClickThrough && RenderBounds.Contains(mi.Location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
IsVisible = widget.IsVisible;
|
IsVisible = widget.IsVisible;
|
||||||
IgnoreChildMouseOver = widget.IgnoreChildMouseOver;
|
IgnoreChildMouseOver = widget.IgnoreChildMouseOver;
|
||||||
|
IgnoreMouseOver = widget.IgnoreMouseOver;
|
||||||
|
|
||||||
foreach (var child in widget.Children)
|
foreach (var child in widget.Children)
|
||||||
AddChild(child.Clone());
|
AddChild(child.Clone());
|
||||||
|
|||||||
@@ -71,24 +71,16 @@
|
|||||||
<Compile Include="IonCannonPower.cs" />
|
<Compile Include="IonCannonPower.cs" />
|
||||||
<Compile Include="PoisonedByTiberium.cs" />
|
<Compile Include="PoisonedByTiberium.cs" />
|
||||||
<Compile Include="ProductionAirdrop.cs" />
|
<Compile Include="ProductionAirdrop.cs" />
|
||||||
<Compile Include="ProductionQueueFromSelection.cs" />
|
|
||||||
<Compile Include="WithCargo.cs" />
|
<Compile Include="WithCargo.cs" />
|
||||||
<Compile Include="RenderGunboat.cs" />
|
<Compile Include="RenderGunboat.cs" />
|
||||||
<Compile Include="SpawnViceroid.cs" />
|
<Compile Include="SpawnViceroid.cs" />
|
||||||
<Compile Include="TiberiumRefinery.cs" />
|
<Compile Include="TiberiumRefinery.cs" />
|
||||||
<Compile Include="Widgets\Logic\CncConquestObjectivesLogic.cs" />
|
<Compile Include="Widgets\Logic\CncConquestObjectivesLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\CncIngameChromeLogic.cs" />
|
|
||||||
<Compile Include="Widgets\Logic\CncIngameMenuLogic.cs" />
|
<Compile Include="Widgets\Logic\CncIngameMenuLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\CncMainMenuLogic.cs" />
|
<Compile Include="Widgets\Logic\CncMainMenuLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\ProductionTooltipLogic.cs" />
|
|
||||||
<Compile Include="Widgets\Logic\SupportPowerTooltipLogic.cs" />
|
|
||||||
<Compile Include="Widgets\ProductionPaletteWidget.cs" />
|
|
||||||
<Compile Include="Widgets\ProductionTabsWidget.cs" />
|
|
||||||
<Compile Include="Widgets\SupportPowersWidget.cs" />
|
|
||||||
<Compile Include="WithFire.cs" />
|
<Compile Include="WithFire.cs" />
|
||||||
<Compile Include="WithRoof.cs" />
|
<Compile Include="WithRoof.cs" />
|
||||||
<Compile Include="Widgets\Logic\ProductionTabsLogic.cs" />
|
<Compile Include="Widgets\Logic\ProductionTabsLogic.cs" />
|
||||||
<Compile Include="Widgets\ProductionTypeButtonWidget.cs" />
|
|
||||||
<Compile Include="WithDeliveryAnimation.cs" />
|
<Compile Include="WithDeliveryAnimation.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
|
||||||
* This file is part of OpenRA, which is free software. It is made
|
|
||||||
* available to you under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation. For more information,
|
|
||||||
* see COPYING.
|
|
||||||
*/
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using OpenRA.Mods.RA;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
using OpenRA.Widgets;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets
|
|
||||||
{
|
|
||||||
class ProductionQueueFromSelectionInfo : ITraitInfo
|
|
||||||
{
|
|
||||||
public string ProductionTabsWidget = null;
|
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new ProductionQueueFromSelection(init.world, this); }
|
|
||||||
}
|
|
||||||
|
|
||||||
class ProductionQueueFromSelection : INotifySelection
|
|
||||||
{
|
|
||||||
readonly World world;
|
|
||||||
Lazy<ProductionTabsWidget> tabsWidget;
|
|
||||||
|
|
||||||
public ProductionQueueFromSelection(World world, ProductionQueueFromSelectionInfo info)
|
|
||||||
{
|
|
||||||
this.world = world;
|
|
||||||
|
|
||||||
tabsWidget = Exts.Lazy(() =>
|
|
||||||
Ui.Root.Get<ProductionTabsWidget>(info.ProductionTabsWidget));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SelectionChanged()
|
|
||||||
{
|
|
||||||
// Find an actor with a queue
|
|
||||||
var producer = world.Selection.Actors.FirstOrDefault(a => a.IsInWorld
|
|
||||||
&& a.World.LocalPlayer == a.Owner
|
|
||||||
&& a.TraitsImplementing<ProductionQueue>().Any(q => q.Enabled));
|
|
||||||
|
|
||||||
if (producer != null)
|
|
||||||
tabsWidget.Value.CurrentQueue = producer.TraitsImplementing<ProductionQueue>().First(q => q.Enabled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
|
||||||
* This file is part of OpenRA, which is free software. It is made
|
|
||||||
* available to you under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation. For more information,
|
|
||||||
* see COPYING.
|
|
||||||
*/
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using OpenRA.Mods.RA;
|
|
||||||
using OpenRA.Mods.RA.Buildings;
|
|
||||||
using OpenRA.Mods.RA.Widgets;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
using OpenRA.Widgets;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|
||||||
{
|
|
||||||
public class CncIngameChromeLogic
|
|
||||||
{
|
|
||||||
readonly Widget ingameRoot;
|
|
||||||
readonly World world;
|
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
|
||||||
public CncIngameChromeLogic(Widget widget, World world)
|
|
||||||
{
|
|
||||||
this.world = world;
|
|
||||||
ingameRoot = widget.Get("INGAME_ROOT");
|
|
||||||
var playerRoot = ingameRoot.Get("PLAYER_ROOT");
|
|
||||||
|
|
||||||
// Observer
|
|
||||||
if (world.LocalPlayer == null)
|
|
||||||
InitObserverWidgets(world, playerRoot);
|
|
||||||
else
|
|
||||||
InitPlayerWidgets(world, playerRoot);
|
|
||||||
|
|
||||||
Game.LoadWidget(world, "CHAT_PANEL", ingameRoot, new WidgetArgs());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OptionsClicked()
|
|
||||||
{
|
|
||||||
var cachedPause = world.PredictedPaused;
|
|
||||||
|
|
||||||
ingameRoot.IsVisible = () => false;
|
|
||||||
if (world.LobbyInfo.IsSinglePlayer)
|
|
||||||
world.SetPauseState(true);
|
|
||||||
|
|
||||||
Game.LoadWidget(world, "INGAME_MENU", Ui.Root, new WidgetArgs()
|
|
||||||
{
|
|
||||||
{ "onExit", () =>
|
|
||||||
{
|
|
||||||
ingameRoot.IsVisible = () => true;
|
|
||||||
if (world.LobbyInfo.IsSinglePlayer)
|
|
||||||
world.SetPauseState(cachedPause);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InitObserverWidgets(World world, Widget playerRoot)
|
|
||||||
{
|
|
||||||
var observerWidgets = Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
|
|
||||||
observerWidgets.Get<ButtonWidget>("OPTIONS_BUTTON").OnClick = OptionsClicked;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InitPlayerWidgets(World world, Widget playerRoot)
|
|
||||||
{
|
|
||||||
// Real player
|
|
||||||
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
|
|
||||||
playerWidgets.IsVisible = () => true;
|
|
||||||
|
|
||||||
var sidebarRoot = playerWidgets.Get("SIDEBAR_BACKGROUND");
|
|
||||||
var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
|
|
||||||
var playerResources = world.LocalPlayer.PlayerActor.Trait<PlayerResources>();
|
|
||||||
sidebarRoot.Get<LabelWidget>("CASH").GetText = () =>
|
|
||||||
"${0}".F(playerResources.DisplayCash + playerResources.DisplayResources);
|
|
||||||
|
|
||||||
playerWidgets.Get<ButtonWidget>("OPTIONS_BUTTON").OnClick = OptionsClicked;
|
|
||||||
|
|
||||||
var radarEnabled = false;
|
|
||||||
var cachedRadarEnabled = false;
|
|
||||||
sidebarRoot.Get<RadarWidget>("RADAR_MINIMAP").IsEnabled = () => radarEnabled;
|
|
||||||
|
|
||||||
var sidebarTicker = playerWidgets.Get<LogicTickerWidget>("SIDEBAR_TICKER");
|
|
||||||
sidebarTicker.OnTick = () =>
|
|
||||||
{
|
|
||||||
// Update radar bin
|
|
||||||
radarEnabled = world.ActorsWithTrait<ProvidesRadar>()
|
|
||||||
.Any(a => a.Actor.Owner == world.LocalPlayer && a.Trait.IsActive);
|
|
||||||
|
|
||||||
if (radarEnabled != cachedRadarEnabled)
|
|
||||||
Sound.PlayNotification(world.Map.Rules, null, "Sounds", radarEnabled ? "RadarUp" : "RadarDown", null);
|
|
||||||
cachedRadarEnabled = radarEnabled;
|
|
||||||
|
|
||||||
// Switch to observer mode after win/loss
|
|
||||||
if (world.LocalPlayer.WinState != WinState.Undefined)
|
|
||||||
Game.RunAfterTick(() =>
|
|
||||||
{
|
|
||||||
playerRoot.RemoveChildren();
|
|
||||||
InitObserverWidgets(world, playerRoot);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var siloBar = playerWidgets.Get<ResourceBarWidget>("SILOBAR");
|
|
||||||
siloBar.GetProvided = () => playerResources.ResourceCapacity;
|
|
||||||
siloBar.GetUsed = () => playerResources.Resources;
|
|
||||||
siloBar.TooltipFormat = "Silo Usage: {0}/{1}";
|
|
||||||
siloBar.GetBarColor = () =>
|
|
||||||
{
|
|
||||||
if (playerResources.Resources == playerResources.ResourceCapacity)
|
|
||||||
return Color.Red;
|
|
||||||
if (playerResources.Resources >= 0.8 * playerResources.ResourceCapacity)
|
|
||||||
return Color.Orange;
|
|
||||||
return Color.LimeGreen;
|
|
||||||
};
|
|
||||||
|
|
||||||
var powerBar = playerWidgets.Get<ResourceBarWidget>("POWERBAR");
|
|
||||||
powerBar.GetProvided = () => powerManager.PowerProvided;
|
|
||||||
powerBar.GetUsed = () => powerManager.PowerDrained;
|
|
||||||
powerBar.TooltipFormat = "Power Usage: {0}/{1}";
|
|
||||||
powerBar.GetBarColor = () =>
|
|
||||||
{
|
|
||||||
if (powerManager.PowerState == PowerState.Critical)
|
|
||||||
return Color.Red;
|
|
||||||
if (powerManager.PowerState == PowerState.Low)
|
|
||||||
return Color.Orange;
|
|
||||||
return Color.LimeGreen;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
{
|
{
|
||||||
panelType = PanelType.Debug;
|
panelType = PanelType.Debug;
|
||||||
visibleButtons++;
|
visibleButtons++;
|
||||||
var debugPanel = Game.LoadWidget(world, "CHEATS_PANEL", panelParent, new WidgetArgs() { { "onExit", doNothing } });
|
var debugPanel = Game.LoadWidget(world, "DEBUG_PANEL", panelParent, new WidgetArgs() { { "onExit", doNothing }, { "transient", true } });
|
||||||
debugPanel.IsVisible = () => panelType == PanelType.Debug;
|
debugPanel.IsVisible = () => panelType == PanelType.Debug;
|
||||||
debugButton.IsVisible = () => visibleButtons > 1;
|
debugButton.IsVisible = () => visibleButtons > 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||||
@@ -54,6 +55,34 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
var typesContainer = Ui.Root.Get(tabs.TypesContainer);
|
var typesContainer = Ui.Root.Get(tabs.TypesContainer);
|
||||||
foreach (var i in typesContainer.Children)
|
foreach (var i in typesContainer.Children)
|
||||||
SetupProductionGroupButton(i as ProductionTypeButtonWidget);
|
SetupProductionGroupButton(i as ProductionTypeButtonWidget);
|
||||||
|
|
||||||
|
var background = Ui.Root.GetOrNull(tabs.BackgroundContainer);
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var palette = tabs.Parent.Get<ProductionPaletteWidget>(tabs.PaletteWidget);
|
||||||
|
var icontemplate = background.Get("ICON_TEMPLATE");
|
||||||
|
|
||||||
|
Action<int, int> updateBackground = (oldCount, newCount) =>
|
||||||
|
{
|
||||||
|
background.RemoveChildren();
|
||||||
|
|
||||||
|
for (var i = 0; i < newCount; i++)
|
||||||
|
{
|
||||||
|
var x = i % palette.Columns;
|
||||||
|
var y = i / palette.Columns;
|
||||||
|
|
||||||
|
var bg = icontemplate.Clone();
|
||||||
|
bg.Bounds.X = palette.IconSize.X * x;
|
||||||
|
bg.Bounds.Y = palette.IconSize.Y * y;
|
||||||
|
background.AddChild(bg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
palette.OnIconCountChanged += updateBackground;
|
||||||
|
|
||||||
|
// Set the initial palette state
|
||||||
|
updateBackground(0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnregisterEvents()
|
void UnregisterEvents()
|
||||||
|
|||||||
@@ -9,11 +9,12 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Mods.RA.Widgets;
|
using OpenRA.Mods.D2k.Widgets;
|
||||||
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
namespace OpenRA.Mods.D2k
|
||||||
{
|
{
|
||||||
class ChooseBuildTabOnSelectInfo : ITraitInfo
|
class ChooseBuildTabOnSelectInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
@@ -77,6 +77,12 @@
|
|||||||
<Compile Include="Render\WithDockingOverlay.cs" />
|
<Compile Include="Render\WithDockingOverlay.cs" />
|
||||||
<Compile Include="Render\WithDeliveryOverlay.cs" />
|
<Compile Include="Render\WithDeliveryOverlay.cs" />
|
||||||
<Compile Include="PaletteFromScaledPalette.cs" />
|
<Compile Include="PaletteFromScaledPalette.cs" />
|
||||||
|
<Compile Include="Widgets\MoneyBinWidget.cs" />
|
||||||
|
<Compile Include="Widgets\SupportPowerBinWidget.cs" />
|
||||||
|
<Compile Include="Widgets\BuildPaletteWidget.cs" />
|
||||||
|
<Compile Include="Widgets\SlidingContainerWidget.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\IngameChromeLogic.cs" />
|
||||||
|
<Compile Include="ChooseBuildTabOnSelect.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@@ -112,4 +118,8 @@ cd "$(SolutionDir)"</PostBuildEvent>
|
|||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Widgets\" />
|
||||||
|
<Folder Include="Widgets\Logic\" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -13,15 +13,17 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Mods.RA.Buildings;
|
using OpenRA.Mods.RA.Buildings;
|
||||||
using OpenRA.Mods.RA.Orders;
|
using OpenRA.Mods.RA.Orders;
|
||||||
using OpenRA.Mods.RA.Render;
|
using OpenRA.Mods.RA.Render;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
using OpenRA.Network;
|
using OpenRA.Network;
|
||||||
using OpenRA.Primitives;
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets
|
namespace OpenRA.Mods.D2k.Widgets
|
||||||
{
|
{
|
||||||
class BuildPaletteWidget : Widget
|
class BuildPaletteWidget : Widget
|
||||||
{
|
{
|
||||||
@@ -10,11 +10,13 @@
|
|||||||
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Mods.RA.Buildings;
|
using OpenRA.Mods.RA.Buildings;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
namespace OpenRA.Mods.D2k.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class IngameChromeLogic
|
public class IngameChromeLogic
|
||||||
{
|
{
|
||||||
@@ -42,6 +44,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
Widget optionsBG = null;
|
Widget optionsBG = null;
|
||||||
optionsBG = Game.LoadWidget(world, "INGAME_OPTIONS_BG", Ui.Root, new WidgetArgs
|
optionsBG = Game.LoadWidget(world, "INGAME_OPTIONS_BG", Ui.Root, new WidgetArgs
|
||||||
{
|
{
|
||||||
|
{ "transient", false },
|
||||||
{ "onExit", () =>
|
{ "onExit", () =>
|
||||||
{
|
{
|
||||||
optionsBG.Visible = false;
|
optionsBG.Visible = false;
|
||||||
@@ -52,6 +55,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
optionsBG.Visible = false;
|
||||||
|
|
||||||
gameRoot.Get<ButtonWidget>("INGAME_OPTIONS_BUTTON").OnClick = () =>
|
gameRoot.Get<ButtonWidget>("INGAME_OPTIONS_BUTTON").OnClick = () =>
|
||||||
{
|
{
|
||||||
optionsBG.Visible ^= true;
|
optionsBG.Visible ^= true;
|
||||||
@@ -73,8 +78,16 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
{
|
{
|
||||||
var observerWidgets = Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
|
var observerWidgets = Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
|
||||||
|
|
||||||
Game.LoadWidget(world, "OBSERVER_STATS", observerWidgets, new WidgetArgs());
|
Widget observerstats = null;
|
||||||
observerWidgets.Get<ButtonWidget>("INGAME_STATS_BUTTON").OnClick = () => gameRoot.Get("OBSERVER_STATS").Visible ^= true;
|
observerstats = Game.LoadWidget(world, "INGAME_OBSERVERSTATS_BG", observerWidgets, new WidgetArgs
|
||||||
|
{
|
||||||
|
{ "transient", false },
|
||||||
|
{ "onExit", () => observerstats.Visible = false }
|
||||||
|
});
|
||||||
|
observerstats.Visible = false;
|
||||||
|
|
||||||
|
var statsButton = observerWidgets.Get<ButtonWidget>("OBSERVER_STATS_BUTTON");
|
||||||
|
statsButton.OnClick = () => observerstats.Visible ^= true;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum RadarBinState { Closed, BinAnimating, RadarAnimating, Open };
|
enum RadarBinState { Closed, BinAnimating, RadarAnimating, Open };
|
||||||
@@ -83,10 +96,13 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
|
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
|
||||||
|
|
||||||
Widget diplomacy = null;
|
Widget diplomacy = null;
|
||||||
diplomacy = Game.LoadWidget(world, "DIPLOMACY", playerWidgets, new WidgetArgs
|
diplomacy = Game.LoadWidget(world, "INGAME_DIPLOMACY_BG", playerWidgets, new WidgetArgs
|
||||||
{
|
{
|
||||||
|
{ "transient", false },
|
||||||
{ "onExit", () => diplomacy.Visible = false }
|
{ "onExit", () => diplomacy.Visible = false }
|
||||||
});
|
});
|
||||||
|
diplomacy.Visible = false;
|
||||||
|
|
||||||
var diplomacyButton = playerWidgets.Get<ButtonWidget>("INGAME_DIPLOMACY_BUTTON");
|
var diplomacyButton = playerWidgets.Get<ButtonWidget>("INGAME_DIPLOMACY_BUTTON");
|
||||||
diplomacyButton.OnClick = () => diplomacy.Visible ^= true;
|
diplomacyButton.OnClick = () => diplomacy.Visible ^= true;
|
||||||
var validPlayers = 0;
|
var validPlayers = 0;
|
||||||
@@ -94,11 +110,14 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
diplomacyButton.IsVisible = () => validPlayers > 0;
|
diplomacyButton.IsVisible = () => validPlayers > 0;
|
||||||
|
|
||||||
Widget cheats = null;
|
Widget cheats = null;
|
||||||
cheats = Game.LoadWidget(world, "CHEATS_PANEL", playerWidgets, new WidgetArgs
|
cheats = Game.LoadWidget(world, "INGAME_DEBUG_BG", playerWidgets, new WidgetArgs
|
||||||
{
|
{
|
||||||
|
{ "transient", false },
|
||||||
{ "onExit", () => cheats.Visible = false }
|
{ "onExit", () => cheats.Visible = false }
|
||||||
});
|
});
|
||||||
var cheatsButton = playerWidgets.Get<ButtonWidget>("CHEATS_BUTTON");
|
cheats.Visible = false;
|
||||||
|
|
||||||
|
var cheatsButton = playerWidgets.Get<ButtonWidget>("INGAME_DEBUG_BUTTON");
|
||||||
cheatsButton.OnClick = () => cheats.Visible ^= true;
|
cheatsButton.OnClick = () => cheats.Visible ^= true;
|
||||||
cheatsButton.IsVisible = () => world.LobbyInfo.GlobalSettings.AllowCheats;
|
cheatsButton.IsVisible = () => world.LobbyInfo.GlobalSettings.AllowCheats;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ using OpenRA.Graphics;
|
|||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets
|
namespace OpenRA.Mods.D2k.Widgets
|
||||||
{
|
{
|
||||||
class MoneyBinWidget : Widget
|
class MoneyBinWidget : Widget
|
||||||
{
|
{
|
||||||
2
OpenRA.Mods.RA/Widgets/SlidingContainerWidget.cs → OpenRA.Mods.D2k/Widgets/SlidingContainerWidget.cs
Executable file → Normal file
@@ -12,7 +12,7 @@ using System;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets
|
namespace OpenRA.Mods.D2k.Widgets
|
||||||
{
|
{
|
||||||
public class SlidingContainerWidget : Widget
|
public class SlidingContainerWidget : Widget
|
||||||
{
|
{
|
||||||
3
OpenRA.Mods.RA/Widgets/SupportPowerBinWidget.cs → OpenRA.Mods.D2k/Widgets/SupportPowerBinWidget.cs
Executable file → Normal file
@@ -13,10 +13,11 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Primitives;
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets
|
namespace OpenRA.Mods.D2k.Widgets
|
||||||
{
|
{
|
||||||
class SupportPowerBinWidget : Widget
|
class SupportPowerBinWidget : Widget
|
||||||
{
|
{
|
||||||
@@ -367,7 +367,6 @@
|
|||||||
<Compile Include="Turreted.cs" />
|
<Compile Include="Turreted.cs" />
|
||||||
<Compile Include="Valued.cs" />
|
<Compile Include="Valued.cs" />
|
||||||
<Compile Include="WaterPaletteRotation.cs" />
|
<Compile Include="WaterPaletteRotation.cs" />
|
||||||
<Compile Include="Widgets\BuildPaletteWidget.cs" />
|
|
||||||
<Compile Include="Widgets\LogicTickerWidget.cs" />
|
<Compile Include="Widgets\LogicTickerWidget.cs" />
|
||||||
<Compile Include="Widgets\Logic\KickSpectatorsLogic.cs" />
|
<Compile Include="Widgets\Logic\KickSpectatorsLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\MissionBrowserLogic.cs" />
|
<Compile Include="Widgets\Logic\MissionBrowserLogic.cs" />
|
||||||
@@ -381,7 +380,6 @@
|
|||||||
<Compile Include="Widgets\Logic\DirectConnectLogic.cs" />
|
<Compile Include="Widgets\Logic\DirectConnectLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\DownloadPackagesLogic.cs" />
|
<Compile Include="Widgets\Logic\DownloadPackagesLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\IngameChatLogic.cs" />
|
<Compile Include="Widgets\Logic\IngameChatLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\IngameChromeLogic.cs" />
|
|
||||||
<Compile Include="Widgets\Logic\LobbyLogic.cs" />
|
<Compile Include="Widgets\Logic\LobbyLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\LobbyUtils.cs" />
|
<Compile Include="Widgets\Logic\LobbyUtils.cs" />
|
||||||
<Compile Include="Widgets\Logic\MainMenuLogic.cs" />
|
<Compile Include="Widgets\Logic\MainMenuLogic.cs" />
|
||||||
@@ -393,15 +391,12 @@
|
|||||||
<Compile Include="Widgets\Logic\ReplayBrowserLogic.cs" />
|
<Compile Include="Widgets\Logic\ReplayBrowserLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\ServerBrowserLogic.cs" />
|
<Compile Include="Widgets\Logic\ServerBrowserLogic.cs" />
|
||||||
<Compile Include="Widgets\Logic\ServerCreationLogic.cs" />
|
<Compile Include="Widgets\Logic\ServerCreationLogic.cs" />
|
||||||
<Compile Include="Widgets\MoneyBinWidget.cs" />
|
|
||||||
<Compile Include="Widgets\ObserverProductionIconsWidget.cs" />
|
<Compile Include="Widgets\ObserverProductionIconsWidget.cs" />
|
||||||
<Compile Include="Widgets\ObserverSupportPowerIconsWidget.cs" />
|
<Compile Include="Widgets\ObserverSupportPowerIconsWidget.cs" />
|
||||||
<Compile Include="Widgets\RadarWidget.cs" />
|
<Compile Include="Widgets\RadarWidget.cs" />
|
||||||
<Compile Include="Widgets\StrategicProgressWidget.cs" />
|
<Compile Include="Widgets\StrategicProgressWidget.cs" />
|
||||||
<Compile Include="Widgets\SupportPowerTimerWidget.cs" />
|
<Compile Include="Widgets\SupportPowerTimerWidget.cs" />
|
||||||
<Compile Include="Widgets\SupportPowerBinWidget.cs" />
|
|
||||||
<Compile Include="Widgets\WorldCommandWidget.cs" />
|
<Compile Include="Widgets\WorldCommandWidget.cs" />
|
||||||
<Compile Include="World\ChooseBuildTabOnSelect.cs" />
|
|
||||||
<Compile Include="World\ResourceClaim.cs" />
|
<Compile Include="World\ResourceClaim.cs" />
|
||||||
<Compile Include="World\ResourceClaimLayer.cs" />
|
<Compile Include="World\ResourceClaimLayer.cs" />
|
||||||
<Compile Include="World\PlayMusicOnMapLoad.cs" />
|
<Compile Include="World\PlayMusicOnMapLoad.cs" />
|
||||||
@@ -411,7 +406,6 @@
|
|||||||
<Compile Include="InfiltrateForExploration.cs" />
|
<Compile Include="InfiltrateForExploration.cs" />
|
||||||
<Compile Include="InfiltrateForCash.cs" />
|
<Compile Include="InfiltrateForCash.cs" />
|
||||||
<Compile Include="RenderShroudCircle.cs" />
|
<Compile Include="RenderShroudCircle.cs" />
|
||||||
<Compile Include="Widgets\Logic\CheatsLogic.cs" />
|
|
||||||
<Compile Include="CloakPaletteEffect.cs" />
|
<Compile Include="CloakPaletteEffect.cs" />
|
||||||
<Compile Include="Widgets\ColorPreviewManagerWidget.cs" />
|
<Compile Include="Widgets\ColorPreviewManagerWidget.cs" />
|
||||||
<Compile Include="Infiltrates.cs" />
|
<Compile Include="Infiltrates.cs" />
|
||||||
@@ -437,7 +431,6 @@
|
|||||||
<Compile Include="Widgets\Logic\CreditsLogic.cs" />
|
<Compile Include="Widgets\Logic\CreditsLogic.cs" />
|
||||||
<Compile Include="Render\WithResources.cs" />
|
<Compile Include="Render\WithResources.cs" />
|
||||||
<Compile Include="Render\WithHarvestAnimation.cs" />
|
<Compile Include="Render\WithHarvestAnimation.cs" />
|
||||||
<Compile Include="Widgets\SlidingContainerWidget.cs" />
|
|
||||||
<Compile Include="Widgets\ResourceBarWidget.cs" />
|
<Compile Include="Widgets\ResourceBarWidget.cs" />
|
||||||
<Compile Include="Widgets\Logic\SimpleTooltipLogic.cs" />
|
<Compile Include="Widgets\Logic\SimpleTooltipLogic.cs" />
|
||||||
<Compile Include="World\DomainIndex.cs" />
|
<Compile Include="World\DomainIndex.cs" />
|
||||||
@@ -531,6 +524,25 @@
|
|||||||
<Compile Include="Buildings\ClonesProducedUnits.cs" />
|
<Compile Include="Buildings\ClonesProducedUnits.cs" />
|
||||||
<Compile Include="Cloneable.cs" />
|
<Compile Include="Cloneable.cs" />
|
||||||
<Compile Include="Graphics\RangeCircleRenderable.cs" />
|
<Compile Include="Graphics\RangeCircleRenderable.cs" />
|
||||||
|
<Compile Include="Widgets\ProductionPaletteWidget.cs" />
|
||||||
|
<Compile Include="Widgets\ProductionTabsWidget.cs" />
|
||||||
|
<Compile Include="Widgets\ProductionTypeButtonWidget.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\ProductionTooltipLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\IngameRadarDisplayLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\IngameCashCounterLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\IngamePowerCounterLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\IngamePowerBarLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\IngameSiloBarLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\AddRaceSuffixLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\ClassicProductionLogic.cs" />
|
||||||
|
<Compile Include="Widgets\SupportPowersWidget.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\SupportPowerTooltipLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\SupportPowerBinLogic.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\Ingame\LoadIngamePlayerOrObserverUILogic.cs" />
|
||||||
|
<Compile Include="Widgets\MenuButtonWidget.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\DebugMenuLogic.cs" />
|
||||||
|
<Compile Include="Widgets\LabelWithTooltipWidget.cs" />
|
||||||
|
<Compile Include="ProductionQueueFromSelection.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||||
@@ -575,4 +587,7 @@ cd "$(SolutionDir)thirdparty/"
|
|||||||
copy "FuzzyLogicLibrary.dll" "$(SolutionDir)"
|
copy "FuzzyLogicLibrary.dll" "$(SolutionDir)"
|
||||||
cd "$(SolutionDir)"</PostBuildEvent>
|
cd "$(SolutionDir)"</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Widgets\Logic\Ingame\" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
73
OpenRA.Mods.RA/ProductionQueueFromSelection.cs
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA
|
||||||
|
{
|
||||||
|
class ProductionQueueFromSelectionInfo : ITraitInfo
|
||||||
|
{
|
||||||
|
public string ProductionTabsWidget = null;
|
||||||
|
public string ProductionPaletteWidget = null;
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new ProductionQueueFromSelection(init.world, this); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProductionQueueFromSelection : INotifySelection
|
||||||
|
{
|
||||||
|
readonly World world;
|
||||||
|
readonly Lazy<ProductionTabsWidget> tabsWidget;
|
||||||
|
readonly Lazy<ProductionPaletteWidget> paletteWidget;
|
||||||
|
|
||||||
|
public ProductionQueueFromSelection(World world, ProductionQueueFromSelectionInfo info)
|
||||||
|
{
|
||||||
|
this.world = world;
|
||||||
|
|
||||||
|
tabsWidget = Exts.Lazy(() => Ui.Root.GetOrNull(info.ProductionTabsWidget) as ProductionTabsWidget);
|
||||||
|
paletteWidget = Exts.Lazy(() => Ui.Root.GetOrNull(info.ProductionPaletteWidget) as ProductionPaletteWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SelectionChanged()
|
||||||
|
{
|
||||||
|
// Disable for spectators
|
||||||
|
if (world.LocalPlayer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Queue-per-actor
|
||||||
|
var queue = world.Selection.Actors
|
||||||
|
.Where(a => a.IsInWorld && a.World.LocalPlayer == a.Owner)
|
||||||
|
.SelectMany(a => a.TraitsImplementing<ProductionQueue>())
|
||||||
|
.FirstOrDefault(q => q.Enabled);
|
||||||
|
|
||||||
|
// Queue-per-player
|
||||||
|
if (queue == null)
|
||||||
|
{
|
||||||
|
var types = world.Selection.Actors.Where(a => a.IsInWorld && a.World.LocalPlayer == a.Owner)
|
||||||
|
.SelectMany(a => a.TraitsImplementing<Production>())
|
||||||
|
.SelectMany(t => t.Info.Produces);
|
||||||
|
|
||||||
|
queue = world.LocalPlayer.PlayerActor.TraitsImplementing<ProductionQueue>()
|
||||||
|
.FirstOrDefault(q => q.Enabled && types.Contains(q.Info.Type));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (queue == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (tabsWidget.Value != null)
|
||||||
|
tabsWidget.Value.CurrentQueue = queue;
|
||||||
|
else if (paletteWidget.Value != null)
|
||||||
|
paletteWidget.Value.CurrentQueue = queue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
62
OpenRA.Mods.RA/Widgets/LabelWithTooltipWidget.cs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
|
{
|
||||||
|
public class LabelWithTooltipWidget : LabelWidget
|
||||||
|
{
|
||||||
|
public readonly string TooltipTemplate;
|
||||||
|
public readonly string TooltipContainer;
|
||||||
|
Lazy<TooltipContainerWidget> tooltipContainer;
|
||||||
|
|
||||||
|
public Func<string> GetTooltipText = () => "";
|
||||||
|
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public LabelWithTooltipWidget(World world)
|
||||||
|
: base()
|
||||||
|
{
|
||||||
|
tooltipContainer = Exts.Lazy(() =>
|
||||||
|
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected LabelWithTooltipWidget(LabelWithTooltipWidget other)
|
||||||
|
: base(other)
|
||||||
|
{
|
||||||
|
TooltipTemplate = other.TooltipTemplate;
|
||||||
|
TooltipContainer = other.TooltipContainer;
|
||||||
|
|
||||||
|
tooltipContainer = Exts.Lazy(() =>
|
||||||
|
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
|
||||||
|
|
||||||
|
GetTooltipText = other.GetTooltipText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Widget Clone() { return new LabelWithTooltipWidget(this); }
|
||||||
|
|
||||||
|
public override void MouseEntered()
|
||||||
|
{
|
||||||
|
if (TooltipContainer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
tooltipContainer.Value.SetTooltip(TooltipTemplate, new WidgetArgs() {{ "getText", GetTooltipText }});
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void MouseExited()
|
||||||
|
{
|
||||||
|
if (TooltipContainer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
tooltipContainer.Value.RemoveTooltip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,19 +18,24 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
public ButtonTooltipLogic(Widget widget, ButtonWidget button)
|
public ButtonTooltipLogic(Widget widget, ButtonWidget button)
|
||||||
{
|
{
|
||||||
var label = widget.Get<LabelWidget>("LABEL");
|
var label = widget.Get<LabelWidget>("LABEL");
|
||||||
var hotkey = widget.Get<LabelWidget>("HOTKEY");
|
var font = Game.Renderer.Fonts[label.Font];
|
||||||
|
var labelWidth = font.Measure(button.TooltipText).X;
|
||||||
|
|
||||||
label.GetText = () => button.TooltipText;
|
label.GetText = () => button.TooltipText;
|
||||||
var labelWidth = Game.Renderer.Fonts[label.Font].Measure(button.TooltipText).X;
|
|
||||||
label.Bounds.Width = labelWidth;
|
label.Bounds.Width = labelWidth;
|
||||||
|
widget.Bounds.Width = 2 * label.Bounds.X + labelWidth;
|
||||||
|
|
||||||
var hotkeyLabel = "({0})".F(button.Key.DisplayString());
|
if (button.Key.IsValid())
|
||||||
hotkey.GetText = () => hotkeyLabel;
|
{
|
||||||
hotkey.Bounds.X = labelWidth + 2 * label.Bounds.X;
|
var hotkey = widget.Get<LabelWidget>("HOTKEY");
|
||||||
|
hotkey.Visible = true;
|
||||||
|
|
||||||
var panelWidth = hotkey.Bounds.X + label.Bounds.X
|
var hotkeyLabel = "({0})".F(button.Key.DisplayString());
|
||||||
+ Game.Renderer.Fonts[label.Font].Measure(hotkeyLabel).X;
|
hotkey.GetText = () => hotkeyLabel;
|
||||||
widget.Bounds.Width = panelWidth;
|
hotkey.Bounds.X = labelWidth + 2 * label.Bounds.X;
|
||||||
|
|
||||||
|
widget.Bounds.Width = hotkey.Bounds.X + label.Bounds.X + font.Measure(hotkeyLabel).X;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
141
OpenRA.Mods.RA/Widgets/Logic/ClassicProductionLogic.cs
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
|
using OpenRA.Network;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class ClassicProductionLogic
|
||||||
|
{
|
||||||
|
readonly ProductionPaletteWidget palette;
|
||||||
|
readonly World world;
|
||||||
|
|
||||||
|
void SetupProductionGroupButton(OrderManager orderManager, ProductionTypeButtonWidget button)
|
||||||
|
{
|
||||||
|
if (button == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Classic production queues are initialized at game start, and then never change.
|
||||||
|
var queues = world.LocalPlayer.PlayerActor.TraitsImplementing<ProductionQueue>()
|
||||||
|
.Where(q => q.Info.Type == button.ProductionGroup)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
Action<bool> selectTab = reverse =>
|
||||||
|
{
|
||||||
|
palette.CurrentQueue = queues.FirstOrDefault(q => q.Enabled);
|
||||||
|
};
|
||||||
|
|
||||||
|
button.IsDisabled = () => !queues.Any(q => q.BuildableItems().Any());
|
||||||
|
button.OnMouseUp = mi => selectTab(mi.Modifiers.HasModifier(Modifiers.Shift));
|
||||||
|
button.OnKeyPress = e => selectTab(e.Modifiers.HasModifier(Modifiers.Shift));
|
||||||
|
button.OnClick = () => selectTab(false);
|
||||||
|
button.IsHighlighted = () => queues.Contains(palette.CurrentQueue);
|
||||||
|
|
||||||
|
var chromeName = button.ProductionGroup.ToLowerInvariant();
|
||||||
|
var icon = button.Get<ImageWidget>("ICON");
|
||||||
|
icon.GetImageName = () => button.IsDisabled() ? chromeName + "-disabled" :
|
||||||
|
queues.Any(q => q.CurrentDone) ? chromeName + "-alert" : chromeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public ClassicProductionLogic(Widget widget, OrderManager orderManager, World world)
|
||||||
|
{
|
||||||
|
this.world = world;
|
||||||
|
palette = widget.Get<ProductionPaletteWidget>("PRODUCTION_PALETTE");
|
||||||
|
|
||||||
|
var background = widget.GetOrNull("PALETTE_BACKGROUND");
|
||||||
|
var foreground = widget.GetOrNull("PALETTE_FOREGROUND");
|
||||||
|
if (background != null || foreground != null)
|
||||||
|
{
|
||||||
|
Widget backgroundTemplate = null;
|
||||||
|
Widget backgroundBottom = null;
|
||||||
|
Widget foregroundTemplate = null;
|
||||||
|
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
backgroundTemplate = background.Get("ROW_TEMPLATE");
|
||||||
|
backgroundBottom = background.GetOrNull("BOTTOM_CAP");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foreground != null)
|
||||||
|
foregroundTemplate = foreground.Get("ROW_TEMPLATE");
|
||||||
|
|
||||||
|
Action<int, int> updateBackground = (_, icons) =>
|
||||||
|
{
|
||||||
|
// Minimum of four rows to make space for the production buttons.
|
||||||
|
var rows = Math.Max(4, (icons + palette.Columns - 1) / palette.Columns);
|
||||||
|
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
background.RemoveChildren();
|
||||||
|
|
||||||
|
var rowHeight = backgroundTemplate.Bounds.Height;
|
||||||
|
for (var i = 0; i < rows; i++)
|
||||||
|
{
|
||||||
|
var row = backgroundTemplate.Clone();
|
||||||
|
row.Bounds.Y = i * rowHeight;
|
||||||
|
background.AddChild(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (backgroundBottom == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
backgroundBottom.Bounds.Y = rows * rowHeight;
|
||||||
|
background.AddChild(backgroundBottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foreground != null)
|
||||||
|
{
|
||||||
|
foreground.RemoveChildren();
|
||||||
|
|
||||||
|
var rowHeight = foregroundTemplate.Bounds.Height;
|
||||||
|
for (var i = 0; i < rows; i++)
|
||||||
|
{
|
||||||
|
var row = foregroundTemplate.Clone();
|
||||||
|
row.Bounds.Y = i * rowHeight;
|
||||||
|
foreground.AddChild(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
palette.OnIconCountChanged += updateBackground;
|
||||||
|
|
||||||
|
// Set the initial palette state
|
||||||
|
updateBackground(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var typesContainer = widget.Get("PRODUCTION_TYPES");
|
||||||
|
foreach (var i in typesContainer.Children)
|
||||||
|
SetupProductionGroupButton(orderManager, i as ProductionTypeButtonWidget);
|
||||||
|
|
||||||
|
var ticker = widget.Get<LogicTickerWidget>("PRODUCTION_TICKER");
|
||||||
|
ticker.OnTick = () =>
|
||||||
|
{
|
||||||
|
if (palette.CurrentQueue == null || palette.IconCount == 0)
|
||||||
|
{
|
||||||
|
// Select the first active tab
|
||||||
|
foreach (var b in typesContainer.Children)
|
||||||
|
{
|
||||||
|
var button = b as ProductionTypeButtonWidget;
|
||||||
|
if (button == null || button.IsDisabled())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
button.OnClick();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,12 +15,10 @@ using OpenRA.Widgets;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class CheatsLogic
|
public class DebugMenuLogic
|
||||||
{
|
{
|
||||||
public static MersenneTwister CosmeticRandom = new MersenneTwister();
|
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public CheatsLogic(Widget widget, Action onExit, World world)
|
public DebugMenuLogic(Widget widget, Action onExit, World world, bool transient)
|
||||||
{
|
{
|
||||||
var devTrait = world.LocalPlayer.PlayerActor.Trait<DeveloperMode>();
|
var devTrait = world.LocalPlayer.PlayerActor.Trait<DeveloperMode>();
|
||||||
|
|
||||||
@@ -117,7 +115,18 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||||
if (close != null)
|
if (close != null)
|
||||||
close.OnClick = () => { Ui.CloseWindow(); onExit(); };
|
{
|
||||||
|
close.OnClick = () =>
|
||||||
|
{
|
||||||
|
if (transient)
|
||||||
|
{
|
||||||
|
Ui.CloseWindow();
|
||||||
|
Ui.Root.RemoveChild(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
onExit();
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Order(World world, string order)
|
public void Order(World world, string order)
|
||||||
@@ -23,13 +23,28 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
ScrollPanelWidget diplomacyPanel;
|
ScrollPanelWidget diplomacyPanel;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public DiplomacyLogic(Widget widget, Action onExit, World world)
|
public DiplomacyLogic(Widget widget, Action onExit, World world, bool transient)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
|
||||||
diplomacyPanel = widget.Get<ScrollPanelWidget>("DIPLOMACY_PANEL");
|
diplomacyPanel = widget.Get<ScrollPanelWidget>("DIPLOMACY_PANEL");
|
||||||
|
|
||||||
LayoutPlayers();
|
LayoutPlayers();
|
||||||
|
|
||||||
|
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||||
|
if (close != null)
|
||||||
|
{
|
||||||
|
close.OnClick = () =>
|
||||||
|
{
|
||||||
|
if (transient)
|
||||||
|
{
|
||||||
|
Ui.CloseWindow();
|
||||||
|
Ui.Root.RemoveChild(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
onExit();
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayoutPlayers()
|
void LayoutPlayers()
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using OpenRA.Network;
|
using OpenRA.Network;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
@@ -19,27 +20,39 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
public GameTimerLogic(Widget widget, OrderManager orderManager, World world)
|
public GameTimerLogic(Widget widget, OrderManager orderManager, World world)
|
||||||
{
|
{
|
||||||
var timer = widget.GetOrNull<LabelWidget>("GAME_TIMER");
|
var timer = widget.GetOrNull<LabelWidget>("GAME_TIMER");
|
||||||
if (timer != null)
|
|
||||||
timer.GetText = () => WidgetUtils.FormatTime(world.WorldTick);
|
|
||||||
|
|
||||||
var status = widget.GetOrNull<LabelWidget>("GAME_TIMER_STATUS");
|
var status = widget.GetOrNull<LabelWidget>("GAME_TIMER_STATUS");
|
||||||
|
var startTick = Ui.LastTickTime;
|
||||||
|
|
||||||
|
Func<bool> shouldShowStatus = () => (world.Paused || world.Timestep != Game.Timestep)
|
||||||
|
&& (Ui.LastTickTime - startTick) / 1000 % 2 == 0;
|
||||||
|
|
||||||
|
Func<string> statusText = () =>
|
||||||
|
{
|
||||||
|
if (world.Paused || world.Timestep == 0)
|
||||||
|
return "Paused";
|
||||||
|
|
||||||
|
if (world.Timestep == 1)
|
||||||
|
return "Max Speed";
|
||||||
|
|
||||||
|
return "{0:F1}x Speed".F(Game.Timestep * 1f / world.Timestep);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (timer != null)
|
||||||
|
{
|
||||||
|
timer.GetText = () =>
|
||||||
|
{
|
||||||
|
if (status == null && shouldShowStatus())
|
||||||
|
return statusText();
|
||||||
|
|
||||||
|
return WidgetUtils.FormatTime(world.WorldTick);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (status != null)
|
if (status != null)
|
||||||
{
|
{
|
||||||
var startTick = Ui.LastTickTime;
|
|
||||||
// Blink the status line
|
// Blink the status line
|
||||||
status.IsVisible = () => (world.Paused || world.Timestep != Game.Timestep)
|
status.IsVisible = shouldShowStatus;
|
||||||
&& (Ui.LastTickTime - startTick) / 1000 % 2 == 0;
|
status.GetText = statusText;
|
||||||
|
|
||||||
status.GetText = () =>
|
|
||||||
{
|
|
||||||
if (world.Paused || world.Timestep == 0)
|
|
||||||
return "Paused";
|
|
||||||
|
|
||||||
if (world.Timestep == 1)
|
|
||||||
return "Max Speed";
|
|
||||||
|
|
||||||
return "{0:F1}x Speed".F(Game.Timestep * 1f / world.Timestep);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
30
OpenRA.Mods.RA/Widgets/Logic/Ingame/AddRaceSuffixLogic.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class AddRaceSuffixLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public AddRaceSuffixLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var suffix = "-" + world.LocalPlayer.Country.Race;
|
||||||
|
if (widget is ButtonWidget)
|
||||||
|
((ButtonWidget)widget).Background += suffix;
|
||||||
|
else if (widget is ImageWidget)
|
||||||
|
((ImageWidget)widget).ImageCollection += suffix;
|
||||||
|
else
|
||||||
|
throw new InvalidOperationException("AddRaceSuffixLogic only supports ButtonWidget and ImageWidget");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using OpenRA.Traits;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class IngameCashCounterLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public IngameCashCounterLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var playerResources = world.LocalPlayer.PlayerActor.Trait<PlayerResources>();
|
||||||
|
var cash = widget.Get<LabelWithTooltipWidget>("CASH");
|
||||||
|
var label = cash.Text;
|
||||||
|
|
||||||
|
cash.GetText = () => label.F(playerResources.DisplayCash + playerResources.DisplayResources);
|
||||||
|
cash.GetTooltipText = () => "Silo Usage: {0}/{1}".F(playerResources.Resources, playerResources.ResourceCapacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
OpenRA.Mods.RA/Widgets/Logic/Ingame/IngamePowerBarLogic.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Drawing;
|
||||||
|
using OpenRA.Mods.RA.Buildings;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class IngamePowerBarLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public IngamePowerBarLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
|
||||||
|
var powerBar = widget.Get<ResourceBarWidget>("POWERBAR");
|
||||||
|
|
||||||
|
powerBar.GetProvided = () => powerManager.PowerProvided;
|
||||||
|
powerBar.GetUsed = () => powerManager.PowerDrained;
|
||||||
|
powerBar.TooltipFormat = "Power Usage: {0}/{1}";
|
||||||
|
powerBar.GetBarColor = () =>
|
||||||
|
{
|
||||||
|
if (powerManager.PowerState == PowerState.Critical)
|
||||||
|
return Color.Red;
|
||||||
|
if (powerManager.PowerState == PowerState.Low)
|
||||||
|
return Color.Orange;
|
||||||
|
return Color.LimeGreen;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using OpenRA.Mods.RA.Buildings;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class IngamePowerCounterLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public IngamePowerCounterLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
|
||||||
|
var power = widget.Get<LabelWithTooltipWidget>("POWER");
|
||||||
|
|
||||||
|
power.GetText = () => powerManager.PowerProvided == 1000000 ? "inf" : powerManager.ExcessPower.ToString();
|
||||||
|
power.GetTooltipText = () => "Power Usage: " + powerManager.PowerDrained.ToString() + (powerManager.PowerProvided != 1000000 ? "/" + powerManager.PowerProvided.ToString() : "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using OpenRA.Mods.RA.Widgets;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class IngameRadarDisplayLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public IngameRadarDisplayLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var radarEnabled = false;
|
||||||
|
var cachedRadarEnabled = false;
|
||||||
|
var blockColor = Color.Transparent;
|
||||||
|
var radar = widget.Get<RadarWidget>("RADAR_MINIMAP");
|
||||||
|
radar.IsEnabled = () => radarEnabled;
|
||||||
|
|
||||||
|
var ticker = widget.Get<LogicTickerWidget>("RADAR_TICKER");
|
||||||
|
ticker.OnTick = () =>
|
||||||
|
{
|
||||||
|
radarEnabled = world.ActorsWithTrait<ProvidesRadar>()
|
||||||
|
.Any(a => a.Actor.Owner == world.LocalPlayer && a.Trait.IsActive);
|
||||||
|
|
||||||
|
if (radarEnabled != cachedRadarEnabled)
|
||||||
|
Sound.PlayNotification(world.Map.Rules, null, "Sounds", radarEnabled ? "RadarUp" : "RadarDown", null);
|
||||||
|
cachedRadarEnabled = radarEnabled;
|
||||||
|
};
|
||||||
|
|
||||||
|
var block = widget.GetOrNull<ColorBlockWidget>("RADAR_FADETOBLACK");
|
||||||
|
if (block != null)
|
||||||
|
{
|
||||||
|
radar.Animating = x => blockColor = Color.FromArgb((int)(255 * x), Color.Black);
|
||||||
|
block.IsVisible = () => blockColor.A != 0;
|
||||||
|
block.GetColor = () => blockColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
40
OpenRA.Mods.RA/Widgets/Logic/Ingame/IngameSiloBarLogic.cs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Drawing;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class IngameSiloBarLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public IngameSiloBarLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var playerResources = world.LocalPlayer.PlayerActor.Trait<PlayerResources>();
|
||||||
|
var siloBar = widget.Get<ResourceBarWidget>("SILOBAR");
|
||||||
|
|
||||||
|
siloBar.GetProvided = () => playerResources.ResourceCapacity;
|
||||||
|
siloBar.GetUsed = () => playerResources.Resources;
|
||||||
|
siloBar.TooltipFormat = "Silo Usage: {0}/{1}";
|
||||||
|
siloBar.GetBarColor = () =>
|
||||||
|
{
|
||||||
|
if (playerResources.Resources == playerResources.ResourceCapacity)
|
||||||
|
return Color.Red;
|
||||||
|
|
||||||
|
if (playerResources.Resources >= 0.8 * playerResources.ResourceCapacity)
|
||||||
|
return Color.Orange;
|
||||||
|
|
||||||
|
return Color.LimeGreen;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class LoadIngamePlayerOrObserverUILogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public LoadIngamePlayerOrObserverUILogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var ingameRoot = widget.Get("INGAME_ROOT");
|
||||||
|
var playerRoot = ingameRoot.Get("PLAYER_ROOT");
|
||||||
|
|
||||||
|
if (world.LocalPlayer == null)
|
||||||
|
Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
|
||||||
|
else
|
||||||
|
Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
|
||||||
|
|
||||||
|
Game.LoadWidget(world, "CHAT_PANEL", ingameRoot, new WidgetArgs());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
class IngameMenuLogic
|
class IngameMenuLogic
|
||||||
{
|
{
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public IngameMenuLogic(Widget widget, World world, Action onExit, WorldRenderer worldRenderer)
|
public IngameMenuLogic(Widget widget, World world, Action onExit, WorldRenderer worldRenderer, bool transient)
|
||||||
{
|
{
|
||||||
var resumeDisabled = false;
|
var resumeDisabled = false;
|
||||||
var mpe = world.WorldActor.TraitOrDefault<MenuPaletteEffect>();
|
var mpe = world.WorldActor.TraitOrDefault<MenuPaletteEffect>();
|
||||||
@@ -71,8 +71,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
};
|
};
|
||||||
|
|
||||||
var resumeButton = widget.Get<ButtonWidget>("RESUME");
|
var resumeButton = widget.Get<ButtonWidget>("RESUME");
|
||||||
resumeButton.OnClick = () => onExit();
|
|
||||||
resumeButton.IsDisabled = () => resumeDisabled;
|
resumeButton.IsDisabled = () => resumeDisabled;
|
||||||
|
resumeButton.OnClick = () =>
|
||||||
|
{
|
||||||
|
if (transient)
|
||||||
|
{
|
||||||
|
Ui.CloseWindow();
|
||||||
|
Ui.Root.RemoveChild(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
onExit();
|
||||||
|
};
|
||||||
|
|
||||||
widget.Get<ButtonWidget>("SURRENDER").OnClick = () =>
|
widget.Get<ButtonWidget>("SURRENDER").OnClick = () =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
WorldRenderer worldRenderer;
|
WorldRenderer worldRenderer;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public ObserverStatsLogic(World world, WorldRenderer worldRenderer, Widget widget)
|
public ObserverStatsLogic(World world, WorldRenderer worldRenderer, Widget widget, Action onExit, bool transient)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.worldRenderer = worldRenderer;
|
this.worldRenderer = worldRenderer;
|
||||||
@@ -136,6 +136,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
ClearStats();
|
ClearStats();
|
||||||
DisplayStats(BasicStats);
|
DisplayStats(BasicStats);
|
||||||
|
|
||||||
|
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||||
|
if (close != null)
|
||||||
|
{
|
||||||
|
close.OnClick = () =>
|
||||||
|
{
|
||||||
|
if (transient)
|
||||||
|
{
|
||||||
|
Ui.CloseWindow();
|
||||||
|
Ui.Root.RemoveChild(widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
onExit();
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearStats()
|
void ClearStats()
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
using OpenRA.Mods.RA.Orders;
|
using OpenRA.Mods.RA.Orders;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
@@ -15,9 +16,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
{
|
{
|
||||||
public class OrderButtonsChromeLogic
|
public class OrderButtonsChromeLogic
|
||||||
{
|
{
|
||||||
|
readonly World world;
|
||||||
|
readonly Widget ingameRoot;
|
||||||
|
bool disableSystemButtons;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public OrderButtonsChromeLogic(Widget widget, World world)
|
public OrderButtonsChromeLogic(Widget widget, World world)
|
||||||
{
|
{
|
||||||
|
this.world = world;
|
||||||
|
ingameRoot = Ui.Root.Get("INGAME_ROOT");
|
||||||
|
|
||||||
|
// Order Buttons
|
||||||
var sell = widget.GetOrNull<ButtonWidget>("SELL_BUTTON");
|
var sell = widget.GetOrNull<ButtonWidget>("SELL_BUTTON");
|
||||||
if (sell != null)
|
if (sell != null)
|
||||||
{
|
{
|
||||||
@@ -45,6 +54,65 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
power.GetKey = _ => Game.Settings.Keys.PowerDownKey;
|
power.GetKey = _ => Game.Settings.Keys.PowerDownKey;
|
||||||
BindOrderButton<PowerDownOrderGenerator>(world, power, "power");
|
BindOrderButton<PowerDownOrderGenerator>(world, power, "power");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// System buttons
|
||||||
|
var options = widget.GetOrNull<MenuButtonWidget>("OPTIONS_BUTTON");
|
||||||
|
if (options != null)
|
||||||
|
{
|
||||||
|
options.IsDisabled = () => disableSystemButtons;
|
||||||
|
options.OnClick = () => OpenMenuPanel(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
var diplomacy = widget.GetOrNull<MenuButtonWidget>("DIPLOMACY_BUTTON");
|
||||||
|
if (diplomacy != null)
|
||||||
|
{
|
||||||
|
diplomacy.Visible = world.Players.Any(a => a != world.LocalPlayer && !a.NonCombatant);
|
||||||
|
diplomacy.IsDisabled = () => disableSystemButtons;
|
||||||
|
diplomacy.OnClick = () => OpenMenuPanel(diplomacy);
|
||||||
|
}
|
||||||
|
|
||||||
|
var debug = widget.GetOrNull<MenuButtonWidget>("DEBUG_BUTTON");
|
||||||
|
if (debug != null)
|
||||||
|
{
|
||||||
|
debug.IsVisible = () => world.LobbyInfo.GlobalSettings.AllowCheats;
|
||||||
|
debug.IsDisabled = () => disableSystemButtons;
|
||||||
|
debug.OnClick = () => OpenMenuPanel(debug);
|
||||||
|
}
|
||||||
|
|
||||||
|
var stats = widget.GetOrNull<MenuButtonWidget>("OBSERVER_STATS_BUTTON");
|
||||||
|
if (stats != null)
|
||||||
|
{
|
||||||
|
stats.IsDisabled = () => disableSystemButtons;
|
||||||
|
stats.OnClick = () => OpenMenuPanel(stats);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OpenMenuPanel(MenuButtonWidget button)
|
||||||
|
{
|
||||||
|
disableSystemButtons = true;
|
||||||
|
var cachedPause = world.PredictedPaused;
|
||||||
|
|
||||||
|
if (button.HideIngameUI)
|
||||||
|
ingameRoot.IsVisible = () => false;
|
||||||
|
|
||||||
|
if (button.Pause && world.LobbyInfo.IsSinglePlayer)
|
||||||
|
world.SetPauseState(true);
|
||||||
|
|
||||||
|
Game.LoadWidget(world, button.MenuContainer, Ui.Root, new WidgetArgs()
|
||||||
|
{
|
||||||
|
{ "transient", true },
|
||||||
|
{ "onExit", () =>
|
||||||
|
{
|
||||||
|
if (button.HideIngameUI)
|
||||||
|
ingameRoot.IsVisible = () => true;
|
||||||
|
|
||||||
|
if (button.Pause && world.LobbyInfo.IsSinglePlayer)
|
||||||
|
world.SetPauseState(cachedPause);
|
||||||
|
|
||||||
|
disableSystemButtons = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BindOrderButton<T>(World world, ButtonWidget w, string icon)
|
static void BindOrderButton<T>(World world, ButtonWidget w, string icon)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ using OpenRA.Mods.RA.Buildings;
|
|||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class ProductionTooltipLogic
|
public class ProductionTooltipLogic
|
||||||
{
|
{
|
||||||
@@ -29,12 +29,18 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
|
|
||||||
widget.IsVisible = () => palette.TooltipActor != null;
|
widget.IsVisible = () => palette.TooltipActor != null;
|
||||||
var nameLabel = widget.Get<LabelWidget>("NAME");
|
var nameLabel = widget.Get<LabelWidget>("NAME");
|
||||||
|
var hotkeyLabel = widget.Get<LabelWidget>("HOTKEY");
|
||||||
var requiresLabel = widget.Get<LabelWidget>("REQUIRES");
|
var requiresLabel = widget.Get<LabelWidget>("REQUIRES");
|
||||||
var powerLabel = widget.Get<LabelWidget>("POWER");
|
var powerLabel = widget.Get<LabelWidget>("POWER");
|
||||||
|
var powerIcon = widget.Get<ImageWidget>("POWER_ICON");
|
||||||
var timeLabel = widget.Get<LabelWidget>("TIME");
|
var timeLabel = widget.Get<LabelWidget>("TIME");
|
||||||
|
var timeIcon = widget.Get<ImageWidget>("TIME_ICON");
|
||||||
var costLabel = widget.Get<LabelWidget>("COST");
|
var costLabel = widget.Get<LabelWidget>("COST");
|
||||||
|
var costIcon = widget.Get<ImageWidget>("COST_ICON");
|
||||||
var descLabel = widget.Get<LabelWidget>("DESC");
|
var descLabel = widget.Get<LabelWidget>("DESC");
|
||||||
|
|
||||||
|
var iconMargin = timeIcon.Bounds.X;
|
||||||
|
|
||||||
var font = Game.Renderer.Fonts[nameLabel.Font];
|
var font = Game.Renderer.Fonts[nameLabel.Font];
|
||||||
var descFont = Game.Renderer.Fonts[descLabel.Font];
|
var descFont = Game.Renderer.Fonts[descLabel.Font];
|
||||||
var requiresFont = Game.Renderer.Fonts[requiresLabel.Font];
|
var requiresFont = Game.Renderer.Fonts[requiresLabel.Font];
|
||||||
@@ -54,25 +60,34 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
|
|
||||||
nameLabel.GetText = () => tooltip.Name;
|
nameLabel.GetText = () => tooltip.Name;
|
||||||
|
|
||||||
|
var nameWidth = font.Measure(tooltip.Name).X;
|
||||||
|
var hotkeyText = "({0})".F(buildable.Hotkey.DisplayString());
|
||||||
|
var hotkeyWidth = buildable.Hotkey.IsValid() ? font.Measure(hotkeyText).X + 2 * nameLabel.Bounds.X : 0;
|
||||||
|
hotkeyLabel.GetText = () => hotkeyText;
|
||||||
|
hotkeyLabel.Bounds.X = nameWidth + 2 * nameLabel.Bounds.X;
|
||||||
|
hotkeyLabel.Visible = buildable.Hotkey.IsValid();
|
||||||
|
|
||||||
|
|
||||||
var prereqs = buildable.Prerequisites.Select(a => ActorName(mapRules, a)).Where(s => !s.StartsWith("~"));
|
var prereqs = buildable.Prerequisites.Select(a => ActorName(mapRules, a)).Where(s => !s.StartsWith("~"));
|
||||||
var requiresString = prereqs.Any() ? requiresLabel.Text.F(prereqs.JoinWith(", ")) : "";
|
var requiresString = prereqs.Any() ? requiresLabel.Text.F(prereqs.JoinWith(", ")) : "";
|
||||||
requiresLabel.GetText = () => requiresString;
|
requiresLabel.GetText = () => requiresString;
|
||||||
|
|
||||||
var power = bi != null ? bi.Power : 0;
|
var power = bi != null ? bi.Power : 0;
|
||||||
var powerString = "P: {0}".F(power);
|
var powerString = power.ToString();
|
||||||
powerLabel.GetText = () => powerString;
|
powerLabel.GetText = () => powerString;
|
||||||
powerLabel.GetColor = () => ((pm.PowerProvided - pm.PowerDrained) >= -power || power > 0)
|
powerLabel.GetColor = () => ((pm.PowerProvided - pm.PowerDrained) >= -power || power > 0)
|
||||||
? Color.White : Color.Red;
|
? Color.White : Color.Red;
|
||||||
powerLabel.IsVisible = () => power != 0;
|
powerLabel.IsVisible = () => power != 0;
|
||||||
|
powerIcon.IsVisible = () => power != 0;
|
||||||
|
|
||||||
var lowpower = pm.PowerState != PowerState.Normal;
|
var lowpower = pm.PowerState != PowerState.Normal;
|
||||||
var time = palette.CurrentQueue == null ? 0 : palette.CurrentQueue.GetBuildTime(actor)
|
var time = palette.CurrentQueue == null ? 0 : palette.CurrentQueue.GetBuildTime(actor)
|
||||||
* (lowpower ? palette.CurrentQueue.Info.LowPowerSlowdown : 1);
|
* (lowpower ? palette.CurrentQueue.Info.LowPowerSlowdown : 1);
|
||||||
var timeString = "T: {0}".F(WidgetUtils.FormatTime(time));
|
var timeString = WidgetUtils.FormatTime(time);
|
||||||
timeLabel.GetText = () => timeString;
|
timeLabel.GetText = () => timeString;
|
||||||
timeLabel.GetColor = () => lowpower ? Color.Red : Color.White;
|
timeLabel.GetColor = () => lowpower ? Color.Red : Color.White;
|
||||||
|
|
||||||
var costString = "$: {0}".F(cost);
|
var costString = cost.ToString();
|
||||||
costLabel.GetText = () => costString;
|
costLabel.GetText = () => costString;
|
||||||
costLabel.GetColor = () => pr.DisplayCash + pr.DisplayResources >= cost
|
costLabel.GetColor = () => pr.DisplayCash + pr.DisplayResources >= cost
|
||||||
? Color.White : Color.Red;
|
? Color.White : Color.Red;
|
||||||
@@ -80,10 +95,12 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
var descString = tooltip.Description.Replace("\\n", "\n");
|
var descString = tooltip.Description.Replace("\\n", "\n");
|
||||||
descLabel.GetText = () => descString;
|
descLabel.GetText = () => descString;
|
||||||
|
|
||||||
var leftWidth = new[] { font.Measure(tooltip.Name).X, requiresFont.Measure(requiresString).X, descFont.Measure(descString).X }.Aggregate(Math.Max);
|
var leftWidth = new[] { nameWidth + hotkeyWidth, requiresFont.Measure(requiresString).X, descFont.Measure(descString).X }.Aggregate(Math.Max);
|
||||||
var rightWidth = new[] { font.Measure(powerString).X, font.Measure(timeString).X, font.Measure(costString).X }.Aggregate(Math.Max);
|
var rightWidth = new[] { font.Measure(powerString).X, font.Measure(timeString).X, font.Measure(costString).X }.Aggregate(Math.Max);
|
||||||
timeLabel.Bounds.X = powerLabel.Bounds.X = costLabel.Bounds.X = leftWidth + 2 * nameLabel.Bounds.X;
|
|
||||||
widget.Bounds.Width = leftWidth + rightWidth + 3 * nameLabel.Bounds.X;
|
timeIcon.Bounds.X = powerIcon.Bounds.X = costIcon.Bounds.X = leftWidth + 2 * nameLabel.Bounds.X;
|
||||||
|
timeLabel.Bounds.X = powerLabel.Bounds.X = costLabel.Bounds.X = timeIcon.Bounds.Right + iconMargin;
|
||||||
|
widget.Bounds.Width = leftWidth + rightWidth + 3 * nameLabel.Bounds.X + timeIcon.Bounds.Width + iconMargin;
|
||||||
|
|
||||||
var leftHeight = font.Measure(tooltip.Name).Y + requiresFont.Measure(requiresString).Y + descFont.Measure(descString).Y;
|
var leftHeight = font.Measure(tooltip.Name).Y + requiresFont.Measure(requiresString).Y + descFont.Measure(descString).Y;
|
||||||
var rightHeight = font.Measure(powerString).Y + font.Measure(timeString).Y + font.Measure(costString).Y;
|
var rightHeight = font.Measure(powerString).Y + font.Measure(timeString).Y + font.Measure(costString).Y;
|
||||||
72
OpenRA.Mods.RA/Widgets/Logic/SupportPowerBinLogic.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class SupportPowerBinLogic
|
||||||
|
{
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public SupportPowerBinLogic(Widget widget, World world)
|
||||||
|
{
|
||||||
|
var palette = widget.Get<SupportPowersWidget>("SUPPORT_PALETTE");
|
||||||
|
|
||||||
|
var background = widget.GetOrNull("PALETTE_BACKGROUND");
|
||||||
|
var foreground = widget.GetOrNull("PALETTE_FOREGROUND");
|
||||||
|
if (background != null || foreground != null)
|
||||||
|
{
|
||||||
|
Widget backgroundTemplate = null;
|
||||||
|
Widget foregroundTemplate = null;
|
||||||
|
|
||||||
|
if (background != null)
|
||||||
|
backgroundTemplate = background.Get("ICON_TEMPLATE");
|
||||||
|
|
||||||
|
if (foreground != null)
|
||||||
|
foregroundTemplate = foreground.Get("ICON_TEMPLATE");
|
||||||
|
|
||||||
|
Action<int, int> updateBackground = (_, icons) =>
|
||||||
|
{
|
||||||
|
var rowHeight = palette.IconSize.Y + palette.IconMargin;
|
||||||
|
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
background.RemoveChildren();
|
||||||
|
|
||||||
|
for (var i = 0; i < icons; i++)
|
||||||
|
{
|
||||||
|
var row = backgroundTemplate.Clone();
|
||||||
|
row.Bounds.Y += i * rowHeight;
|
||||||
|
background.AddChild(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foreground != null)
|
||||||
|
{
|
||||||
|
foreground.RemoveChildren();
|
||||||
|
|
||||||
|
for (var i = 0; i < icons; i++)
|
||||||
|
{
|
||||||
|
var row = foregroundTemplate.Clone();
|
||||||
|
row.Bounds.Y += i * rowHeight;
|
||||||
|
foreground.AddChild(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
palette.OnIconCountChanged += updateBackground;
|
||||||
|
|
||||||
|
// Set the initial palette state
|
||||||
|
updateBackground(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#region Copyright & License Information
|
#region Copyright & License Information
|
||||||
/*
|
/*
|
||||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
* This file is part of OpenRA, which is free software. It is made
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
* available to you under the terms of the GNU General Public License
|
* available to you under the terms of the GNU General Public License
|
||||||
* as published by the Free Software Foundation. For more information,
|
* as published by the Free Software Foundation. For more information,
|
||||||
@@ -12,7 +12,7 @@ using System;
|
|||||||
using OpenRA.Mods.RA;
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class SupportPowerTooltipLogic
|
public class SupportPowerTooltipLogic
|
||||||
{
|
{
|
||||||
33
OpenRA.Mods.RA/Widgets/MenuButtonWidget.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
|
{
|
||||||
|
public class MenuButtonWidget : ButtonWidget
|
||||||
|
{
|
||||||
|
public readonly string MenuContainer = "INGAME_MENU";
|
||||||
|
public readonly bool Pause = true;
|
||||||
|
public readonly bool HideIngameUI = true;
|
||||||
|
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public MenuButtonWidget(Ruleset modRules)
|
||||||
|
: base(modRules) { }
|
||||||
|
|
||||||
|
protected MenuButtonWidget(MenuButtonWidget other)
|
||||||
|
: base(other)
|
||||||
|
{
|
||||||
|
MenuContainer = other.MenuContainer;
|
||||||
|
Pause = other.Pause;
|
||||||
|
HideIngameUI = other.HideIngameUI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,11 +21,12 @@ using OpenRA.Network;
|
|||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
{
|
{
|
||||||
public class ProductionIcon
|
public class ProductionIcon
|
||||||
{
|
{
|
||||||
public string Name;
|
public string Name;
|
||||||
|
public Hotkey Hotkey;
|
||||||
public Sprite Sprite;
|
public Sprite Sprite;
|
||||||
public float2 Pos;
|
public float2 Pos;
|
||||||
public List<ProductionItem> Queued;
|
public List<ProductionItem> Queued;
|
||||||
@@ -34,9 +35,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
public class ProductionPaletteWidget : Widget
|
public class ProductionPaletteWidget : Widget
|
||||||
{
|
{
|
||||||
public enum ReadyTextStyleOptions { Solid, AlternatingColor, Blinking }
|
public enum ReadyTextStyleOptions { Solid, AlternatingColor, Blinking }
|
||||||
public readonly ReadyTextStyleOptions ReadyTextStyle = ReadyTextStyleOptions.Blinking;
|
public readonly ReadyTextStyleOptions ReadyTextStyle = ReadyTextStyleOptions.AlternatingColor;
|
||||||
public readonly Color ReadyTextAltColor = Color.Red;
|
public readonly Color ReadyTextAltColor = Color.Gold;
|
||||||
public readonly int Columns = 3;
|
public readonly int Columns = 3;
|
||||||
|
public readonly int2 IconSize = new int2(64, 48);
|
||||||
|
public readonly int2 IconMargin = int2.Zero;
|
||||||
|
public readonly int2 IconSpriteOffset = int2.Zero;
|
||||||
|
|
||||||
public readonly string TabClick = null;
|
public readonly string TabClick = null;
|
||||||
public readonly string DisabledTabClick = null;
|
public readonly string DisabledTabClick = null;
|
||||||
public readonly string TooltipContainer;
|
public readonly string TooltipContainer;
|
||||||
@@ -45,6 +50,9 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
[Translate] public readonly string ReadyText = "";
|
[Translate] public readonly string ReadyText = "";
|
||||||
[Translate] public readonly string HoldText = "";
|
[Translate] public readonly string HoldText = "";
|
||||||
|
|
||||||
|
public int IconCount { get; private set; }
|
||||||
|
public event Action<int, int> OnIconCountChanged = (a, b) => {};
|
||||||
|
|
||||||
public string TooltipActor { get; private set; }
|
public string TooltipActor { get; private set; }
|
||||||
public readonly World World;
|
public readonly World World;
|
||||||
readonly OrderManager orderManager;
|
readonly OrderManager orderManager;
|
||||||
@@ -113,14 +121,23 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
if (icon == null)
|
if (icon == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Only support left and right clicks
|
||||||
|
if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right)
|
||||||
|
return false;
|
||||||
|
|
||||||
// Eat mouse-up events
|
// Eat mouse-up events
|
||||||
if (mi.Event != MouseInputEvent.Down)
|
if (mi.Event != MouseInputEvent.Down)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
return HandleEvent(icon, mi.Button == MouseButton.Left);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HandleEvent(ProductionIcon icon, bool isLeftClick)
|
||||||
|
{
|
||||||
var actor = World.Map.Rules.Actors[icon.Name];
|
var actor = World.Map.Rules.Actors[icon.Name];
|
||||||
var first = icon.Queued.FirstOrDefault();
|
var first = icon.Queued.FirstOrDefault();
|
||||||
|
|
||||||
if (mi.Button == MouseButton.Left)
|
if (isLeftClick)
|
||||||
{
|
{
|
||||||
// Pick up a completed building
|
// Pick up a completed building
|
||||||
if (first != null && first.Done && actor.Traits.Contains<BuildingInfo>())
|
if (first != null && first.Done && actor.Traits.Contains<BuildingInfo>())
|
||||||
@@ -145,7 +162,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
else
|
else
|
||||||
Sound.Play(DisabledTabClick);
|
Sound.Play(DisabledTabClick);
|
||||||
}
|
}
|
||||||
else if (mi.Button == MouseButton.Right)
|
else
|
||||||
{
|
{
|
||||||
// Hold/Cancel an existing item
|
// Hold/Cancel an existing item
|
||||||
if (first != null)
|
if (first != null)
|
||||||
@@ -172,40 +189,66 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool HandleKeyPress(KeyInput e)
|
||||||
|
{
|
||||||
|
if (e.Event == KeyInputEvent.Up || CurrentQueue == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var hotkey = Hotkey.FromKeyInput(e);
|
||||||
|
var toBuild = icons.Values.FirstOrDefault(i => i.Hotkey == hotkey);
|
||||||
|
return toBuild != null ? HandleEvent(toBuild, true) : false;
|
||||||
|
}
|
||||||
|
|
||||||
public void RefreshIcons()
|
public void RefreshIcons()
|
||||||
{
|
{
|
||||||
icons = new Dictionary<Rectangle, ProductionIcon>();
|
icons = new Dictionary<Rectangle, ProductionIcon>();
|
||||||
if (CurrentQueue == null)
|
if (CurrentQueue == null)
|
||||||
|
{
|
||||||
|
if (IconCount != 0)
|
||||||
|
{
|
||||||
|
OnIconCountChanged(IconCount, 0);
|
||||||
|
IconCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var allBuildables = CurrentQueue.AllItems().OrderBy(a => a.Traits.Get<BuildableInfo>().BuildPaletteOrder);
|
var allBuildables = CurrentQueue.AllItems().OrderBy(a => a.Traits.Get<BuildableInfo>().BuildPaletteOrder);
|
||||||
var i = 0;
|
|
||||||
|
var oldIconCount = IconCount;
|
||||||
|
IconCount = 0;
|
||||||
|
|
||||||
var rb = RenderBounds;
|
var rb = RenderBounds;
|
||||||
foreach (var item in allBuildables)
|
foreach (var item in allBuildables)
|
||||||
{
|
{
|
||||||
var x = i % Columns;
|
var x = IconCount % Columns;
|
||||||
var y = i / Columns;
|
var y = IconCount / Columns;
|
||||||
var rect = new Rectangle(rb.X + x * 64 + 1, rb.Y + y * 48 + 1, 64, 48);
|
var rect = new Rectangle(rb.X + x * (IconSize.X + IconMargin.X), rb.Y + y * (IconSize.Y + IconMargin.Y), IconSize.X, IconSize.Y);
|
||||||
var icon = new Animation(World, RenderSimple.GetImage(item));
|
var icon = new Animation(World, RenderSimple.GetImage(item));
|
||||||
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
||||||
|
|
||||||
var pi = new ProductionIcon()
|
var pi = new ProductionIcon()
|
||||||
{
|
{
|
||||||
Name = item.Name,
|
Name = item.Name,
|
||||||
|
Hotkey = item.Traits.Get<BuildableInfo>().Hotkey,
|
||||||
Sprite = icon.Image,
|
Sprite = icon.Image,
|
||||||
Pos = new float2(rect.Location),
|
Pos = new float2(rect.Location),
|
||||||
Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList(),
|
Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList(),
|
||||||
};
|
};
|
||||||
|
|
||||||
icons.Add(rect, pi);
|
icons.Add(rect, pi);
|
||||||
i++;
|
IconCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
eventBounds = icons.Keys.Aggregate(Rectangle.Union);
|
eventBounds = icons.Any() ? icons.Keys.Aggregate(Rectangle.Union) : Rectangle.Empty;
|
||||||
|
|
||||||
|
if (oldIconCount != IconCount)
|
||||||
|
OnIconCountChanged(oldIconCount, IconCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
var iconSize = new float2(64, 48);
|
var iconOffset = 0.5f * IconSize.ToFloat2() + IconSpriteOffset;
|
||||||
var iconOffset = 0.5f * iconSize;
|
|
||||||
|
|
||||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||||
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
||||||
@@ -218,10 +261,6 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
|
|
||||||
var buildableItems = CurrentQueue.BuildableItems();
|
var buildableItems = CurrentQueue.BuildableItems();
|
||||||
|
|
||||||
// Background
|
|
||||||
foreach (var rect in icons.Keys)
|
|
||||||
WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1, 1, 1, 1));
|
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
foreach (var icon in icons.Values)
|
foreach (var icon in icons.Values)
|
||||||
{
|
{
|
||||||
@@ -235,6 +274,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
() => (first.TotalTime - first.RemainingTime)
|
() => (first.TotalTime - first.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
|
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, worldRenderer);
|
||||||
}
|
}
|
||||||
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
||||||
@@ -16,7 +16,7 @@ using OpenRA.Graphics;
|
|||||||
using OpenRA.Mods.RA;
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
{
|
{
|
||||||
public class ProductionTab
|
public class ProductionTab
|
||||||
{
|
{
|
||||||
@@ -57,12 +57,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProductionTabsWidget : Widget
|
public class ProductionTabsWidget : Widget
|
||||||
{
|
{
|
||||||
readonly World world;
|
readonly World world;
|
||||||
|
|
||||||
public readonly string PaletteWidget = null;
|
public readonly string PaletteWidget = null;
|
||||||
public readonly string TypesContainer = null;
|
public readonly string TypesContainer = null;
|
||||||
|
public readonly string BackgroundContainer = null;
|
||||||
|
|
||||||
public readonly int TabWidth = 30;
|
public readonly int TabWidth = 30;
|
||||||
public readonly int ArrowWidth = 20;
|
public readonly int ArrowWidth = 20;
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
{
|
{
|
||||||
public class ProductionTypeButtonWidget : ButtonWidget
|
public class ProductionTypeButtonWidget : ButtonWidget
|
||||||
{
|
{
|
||||||
@@ -25,6 +25,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
public Func<bool> IsEnabled = () => true;
|
public Func<bool> IsEnabled = () => true;
|
||||||
public Action AfterOpen = () => { };
|
public Action AfterOpen = () => { };
|
||||||
public Action AfterClose = () => { };
|
public Action AfterClose = () => { };
|
||||||
|
public Action<float> Animating = _ => {};
|
||||||
|
|
||||||
float radarMinimapHeight;
|
float radarMinimapHeight;
|
||||||
int frame;
|
int frame;
|
||||||
@@ -227,6 +228,8 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
frame += enabled ? 1 : -1;
|
frame += enabled ? 1 : -1;
|
||||||
radarMinimapHeight = float2.Lerp(0, 1, (float)frame / AnimationLength);
|
radarMinimapHeight = float2.Lerp(0, 1, (float)frame / AnimationLength);
|
||||||
|
|
||||||
|
Animating(frame * 1f / AnimationLength);
|
||||||
|
|
||||||
// Update map rectangle for event handling
|
// Update map rectangle for event handling
|
||||||
var ro = RenderOrigin;
|
var ro = RenderOrigin;
|
||||||
mapRect = new Rectangle(previewOrigin.X + ro.X, previewOrigin.Y + ro.Y, mapRect.Width, mapRect.Height);
|
mapRect = new Rectangle(previewOrigin.X + ro.X, previewOrigin.Y + ro.Y, mapRect.Width, mapRect.Height);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#region Copyright & License Information
|
#region Copyright & License Information
|
||||||
/*
|
/*
|
||||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||||
* This file is part of OpenRA, which is free software. It is made
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
* available to you under the terms of the GNU General Public License
|
* available to you under the terms of the GNU General Public License
|
||||||
* as published by the Free Software Foundation. For more information,
|
* as published by the Free Software Foundation. For more information,
|
||||||
@@ -16,17 +16,22 @@ using OpenRA.Graphics;
|
|||||||
using OpenRA.Mods.RA;
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Cnc.Widgets
|
namespace OpenRA.Mods.RA.Widgets
|
||||||
{
|
{
|
||||||
public class SupportPowersWidget : Widget
|
public class SupportPowersWidget : Widget
|
||||||
{
|
{
|
||||||
[Translate] public readonly string ReadyText = "";
|
[Translate] public readonly string ReadyText = "";
|
||||||
[Translate] public readonly string HoldText = "";
|
[Translate] public readonly string HoldText = "";
|
||||||
|
|
||||||
|
public readonly int2 IconSize = new int2(64, 48);
|
||||||
|
public readonly int IconMargin = 10;
|
||||||
|
public readonly int2 IconSpriteOffset = int2.Zero;
|
||||||
|
|
||||||
public readonly string TooltipContainer;
|
public readonly string TooltipContainer;
|
||||||
public readonly string TooltipTemplate = "SUPPORT_POWER_TOOLTIP";
|
public readonly string TooltipTemplate = "SUPPORT_POWER_TOOLTIP";
|
||||||
|
|
||||||
public int Spacing = 10;
|
public int IconCount { get; private set; }
|
||||||
|
public event Action<int, int> OnIconCountChanged = (a, b) => {};
|
||||||
|
|
||||||
readonly WorldRenderer worldRenderer;
|
readonly WorldRenderer worldRenderer;
|
||||||
readonly SupportPowerManager spm;
|
readonly SupportPowerManager spm;
|
||||||
@@ -67,12 +72,15 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
icons = new Dictionary<Rectangle, SupportPowerIcon>();
|
icons = new Dictionary<Rectangle, SupportPowerIcon>();
|
||||||
var powers = spm.Powers.Values.Where(p => !p.Disabled);
|
var powers = spm.Powers.Values.Where(p => !p.Disabled);
|
||||||
|
|
||||||
var i = 0;
|
var oldIconCount = IconCount;
|
||||||
|
IconCount = 0;
|
||||||
|
|
||||||
var rb = RenderBounds;
|
var rb = RenderBounds;
|
||||||
foreach (var p in powers)
|
foreach (var p in powers)
|
||||||
{
|
{
|
||||||
var rect = new Rectangle(rb.X + 1, rb.Y + i * (48 + Spacing) + 1, 64, 48);
|
var rect = new Rectangle(rb.X, rb.Y + IconCount * (IconSize.Y + IconMargin), IconSize.X, IconSize.Y);
|
||||||
icon.Play(p.Info.Icon);
|
icon.Play(p.Info.Icon);
|
||||||
|
|
||||||
var power = new SupportPowerIcon()
|
var power = new SupportPowerIcon()
|
||||||
{
|
{
|
||||||
Power = p,
|
Power = p,
|
||||||
@@ -81,26 +89,24 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
};
|
};
|
||||||
|
|
||||||
icons.Add(rect, power);
|
icons.Add(rect, power);
|
||||||
i++;
|
IconCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
eventBounds = (icons.Count == 0) ? Rectangle.Empty : icons.Keys.Aggregate(Rectangle.Union);
|
eventBounds = icons.Any() ? icons.Keys.Aggregate(Rectangle.Union) : Rectangle.Empty;
|
||||||
|
|
||||||
|
if (oldIconCount != IconCount)
|
||||||
|
OnIconCountChanged(oldIconCount, IconCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
{
|
{
|
||||||
var iconSize = new float2(64, 48);
|
var iconOffset = 0.5f * IconSize.ToFloat2() + IconSpriteOffset;
|
||||||
var iconOffset = 0.5f * iconSize;
|
|
||||||
|
|
||||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||||
|
|
||||||
holdOffset = iconOffset - overlayFont.Measure(HoldText) / 2;
|
holdOffset = iconOffset - overlayFont.Measure(HoldText) / 2;
|
||||||
readyOffset = iconOffset - overlayFont.Measure(ReadyText) / 2;
|
readyOffset = iconOffset - overlayFont.Measure(ReadyText) / 2;
|
||||||
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
||||||
|
|
||||||
// Background
|
|
||||||
foreach (var rect in icons.Keys)
|
|
||||||
WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1, 1, 1, 1));
|
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
foreach (var p in icons.Values)
|
foreach (var p in icons.Values)
|
||||||
{
|
{
|
||||||
@@ -110,6 +116,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
clock.PlayFetchIndex("idle",
|
clock.PlayFetchIndex("idle",
|
||||||
() => (p.Power.TotalTime - p.Power.RemainingTime)
|
() => (p.Power.TotalTime - p.Power.RemainingTime)
|
||||||
* (clock.CurrentSequence.Length - 1) / p.Power.TotalTime);
|
* (clock.CurrentSequence.Length - 1) / p.Power.TotalTime);
|
||||||
|
|
||||||
clock.Tick();
|
clock.Tick();
|
||||||
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer);
|
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer);
|
||||||
}
|
}
|
||||||
@@ -140,14 +147,18 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
|
|
||||||
public override void MouseEntered()
|
public override void MouseEntered()
|
||||||
{
|
{
|
||||||
if (TooltipContainer == null) return;
|
if (TooltipContainer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
tooltipContainer.Value.SetTooltip(TooltipTemplate,
|
tooltipContainer.Value.SetTooltip(TooltipTemplate,
|
||||||
new WidgetArgs() { { "palette", this } });
|
new WidgetArgs() { { "palette", this } });
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void MouseExited()
|
public override void MouseExited()
|
||||||
{
|
{
|
||||||
if (TooltipContainer == null) return;
|
if (TooltipContainer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
tooltipContainer.Value.RemoveTooltip();
|
tooltipContainer.Value.RemoveTooltip();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +168,8 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
{
|
{
|
||||||
var icon = icons.Where(i => i.Key.Contains(mi.Location))
|
var icon = icons.Where(i => i.Key.Contains(mi.Location))
|
||||||
.Select(i => i.Value).FirstOrDefault();
|
.Select(i => i.Value).FirstOrDefault();
|
||||||
TooltipPower = (icon != null) ? icon.Power : null;
|
|
||||||
|
TooltipPower = icon != null ? icon.Power : null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,6 +183,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
{
|
{
|
||||||
if (!clicked.Power.Active)
|
if (!clicked.Power.Active)
|
||||||
Sound.PlayToPlayer(spm.self.Owner, clicked.Power.Info.InsufficientPowerSound);
|
Sound.PlayToPlayer(spm.self.Owner, clicked.Power.Info.InsufficientPowerSound);
|
||||||
|
|
||||||
spm.Target(clicked.Power.Info.OrderName);
|
spm.Target(clicked.Power.Info.OrderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,16 +99,16 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="7.9999996"
|
inkscape:zoom="8"
|
||||||
inkscape:cx="278.36391"
|
inkscape:cx="468.95592"
|
||||||
inkscape:cy="462.8318"
|
inkscape:cy="426.49296"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="1624"
|
inkscape:window-width="1381"
|
||||||
inkscape:window-height="1006"
|
inkscape:window-height="856"
|
||||||
inkscape:window-x="56"
|
inkscape:window-x="59"
|
||||||
inkscape:window-y="22"
|
inkscape:window-y="0"
|
||||||
inkscape:window-maximized="0"
|
inkscape:window-maximized="0"
|
||||||
showguides="true"
|
showguides="true"
|
||||||
inkscape:guide-bbox="true">
|
inkscape:guide-bbox="true">
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
id="guide3167" />
|
id="guide3167" />
|
||||||
<sodipodi:guide
|
<sodipodi:guide
|
||||||
orientation="0,1"
|
orientation="0,1"
|
||||||
position="389.62502,401.06252"
|
position="518,400.134"
|
||||||
id="guide3995" />
|
id="guide3995" />
|
||||||
</sodipodi:namedview>
|
</sodipodi:namedview>
|
||||||
<metadata
|
<metadata
|
||||||
@@ -201,7 +201,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>
|
||||||
@@ -1393,11 +1393,11 @@
|
|||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
transform="matrix(1.0877731,0,0,1.0877731,435.58282,596.25606)" />
|
transform="matrix(1.0877731,0,0,1.0877731,435.58282,596.25606)" />
|
||||||
<path
|
<path
|
||||||
transform="matrix(1.1517598,0,0,1.1517598,435.05828,595.74983)"
|
transform="matrix(1.1517598,0,0,1.1517598,435.05828,595.74983)"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
@@ -1407,7 +1407,7 @@
|
|||||||
sodipodi:type="arc" />
|
sodipodi:type="arc" />
|
||||||
<path
|
<path
|
||||||
transform="matrix(1.0877731,0,0,1.0877731,458.58282,596.25606)"
|
transform="matrix(1.0877731,0,0,1.0877731,458.58282,596.25606)"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
@@ -1423,7 +1423,7 @@
|
|||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
transform="matrix(1.1517598,0,0,1.1517598,458.05828,595.74983)" />
|
transform="matrix(1.1517598,0,0,1.1517598,458.05828,595.74983)" />
|
||||||
<path
|
<path
|
||||||
sodipodi:type="arc"
|
sodipodi:type="arc"
|
||||||
@@ -1433,11 +1433,11 @@
|
|||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
transform="matrix(0.76783987,0,0,0.76783987,257.70552,574.28728)" />
|
transform="matrix(0.76783987,0,0,0.76783987,257.70552,574.28728)" />
|
||||||
<path
|
<path
|
||||||
transform="matrix(0.83182651,0,0,0.83182651,257.18098,573.78104)"
|
transform="matrix(0.83182651,0,0,0.83182651,257.18098,573.78104)"
|
||||||
d="m 16.011775,7.9116955 a 7.8141294,7.8141294 0 1 1 -15.62825917,0 7.8141294,7.8141294 0 1 1 15.62825917,0 z"
|
d="m 16.011775,7.9116955 c 0,4.3156245 -3.498505,7.8141295 -7.8141298,7.8141295 -4.3156245,0 -7.81412937,-3.498505 -7.81412937,-7.8141295 0,-4.3156245 3.49850487,-7.81412937 7.81412937,-7.81412937 4.3156248,0 7.8141298,3.49850487 7.8141298,7.81412937 z"
|
||||||
sodipodi:ry="7.8141294"
|
sodipodi:ry="7.8141294"
|
||||||
sodipodi:rx="7.8141294"
|
sodipodi:rx="7.8141294"
|
||||||
sodipodi:cy="7.9116955"
|
sodipodi:cy="7.9116955"
|
||||||
@@ -1445,6 +1445,170 @@
|
|||||||
id="path4006"
|
id="path4006"
|
||||||
style="fill:none;stroke:#800000;stroke-width:1.20217383;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
style="fill:none;stroke:#800000;stroke-width:1.20217383;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
sodipodi:type="arc" />
|
sodipodi:type="arc" />
|
||||||
|
<g
|
||||||
|
transform="matrix(2.6666222,0,0,2.6666222,-902.1431,421.1582)"
|
||||||
|
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#808080;fill-opacity:1;stroke:none;font-family:FontAwesome;-inkscape-font-specification:FontAwesome"
|
||||||
|
id="flowRoot4050">
|
||||||
|
<path
|
||||||
|
d="m 527.46317,69.726807 c 0.0424,-0.04241 0.0636,-0.09263 0.0636,-0.15067 -1e-5,-0.05803 -0.0212,-0.108254 -0.0636,-0.150669 -0.0424,-0.04241 -0.0926,-0.06361 -0.15067,-0.06362 -0.058,4e-6 -0.10826,0.02121 -0.15067,0.06362 -0.0424,0.04242 -0.0636,0.09264 -0.0636,0.150669 0,0.05804 0.0212,0.108264 0.0636,0.15067 0.0424,0.04242 0.0926,0.06362 0.15067,0.06362 0.058,4e-6 0.10826,-0.0212 0.15067,-0.06362 m 2.84933,2.99379 0,1.178572 c -10e-6,0.04911 -0.0223,0.08259 -0.067,0.100446 -0.0179,0.0045 -0.0313,0.0067 -0.0402,0.0067 -0.029,-10e-7 -0.0547,-0.01004 -0.077,-0.03013 l -0.31139,-0.311384 c -0.26563,0.319196 -0.62165,0.571428 -1.06808,0.756696 -0.4442,0.187499 -0.92299,0.281249 -1.43638,0.28125 -0.5134,-10e-7 -0.99331,-0.09375 -1.43973,-0.28125 -0.4442,-0.185268 -0.79911,-0.4375 -1.06473,-0.756696 l -0.31139,0.311384 c -0.0201,0.02009 -0.0458,0.03013 -0.077,0.03013 -0.009,-10e-7 -0.0223,-0.0022 -0.0402,-0.0067 -0.0446,-0.01786 -0.067,-0.05134 -0.067,-0.100446 l 0,-1.178572 c 0,-0.03125 0.01,-0.05692 0.0301,-0.07701 0.0201,-0.02009 0.0458,-0.03013 0.077,-0.03013 l 1.17857,0 c 0.0491,2e-6 0.0826,0.02232 0.10045,0.06696 0.0179,0.04241 0.01,0.08147 -0.0234,0.117187 l -0.33482,0.334822 c 0.14955,0.203125 0.36049,0.375 0.63281,0.515625 0.27456,0.138393 0.57813,0.22991 0.91072,0.274553 l 0,-2.166294 -0.64286,0 c -0.058,2e-6 -0.10826,-0.0212 -0.15067,-0.06362 -0.0424,-0.04241 -0.0636,-0.09263 -0.0636,-0.15067 l 0,-0.428572 c -10e-6,-0.05803 0.0212,-0.108256 0.0636,-0.150669 0.0424,-0.04241 0.0926,-0.06361 0.15067,-0.06362 l 0.64286,0 0,-0.583076 c -0.12947,-0.07589 -0.23326,-0.178568 -0.31139,-0.308036 -0.0781,-0.131692 -0.11718,-0.275665 -0.11718,-0.43192 0,-0.236602 0.0837,-0.438611 0.25111,-0.606026 0.16741,-0.167406 0.36942,-0.251111 0.60603,-0.251116 0.2366,5e-6 0.43861,0.08371 0.60603,0.251116 0.1674,0.167415 0.25111,0.369424 0.25111,0.606026 0,0.156255 -0.0391,0.300228 -0.11718,0.43192 -0.0781,0.129468 -0.18193,0.232147 -0.31139,0.308036 l 0,0.583076 0.64286,0 c 0.058,3e-6 0.10825,0.02121 0.15067,0.06362 0.0424,0.04241 0.0636,0.09264 0.0636,0.150669 l 0,0.428572 c 0,0.05804 -0.0212,0.108261 -0.0636,0.15067 -0.0424,0.04241 -0.0926,0.06362 -0.15067,0.06362 l -0.64286,0 0,2.166294 c 0.33259,-0.04464 0.63504,-0.13616 0.90737,-0.274553 0.27455,-0.140625 0.4866,-0.3125 0.63616,-0.515625 l -0.33482,-0.334822 c -0.0335,-0.03571 -0.0413,-0.07478 -0.0234,-0.117187 0.0179,-0.04464 0.0513,-0.06696 0.10045,-0.06696 l 1.17857,0 c 0.0312,2e-6 0.0569,0.01005 0.077,0.03013 0.0201,0.02009 0.0301,0.04576 0.0301,0.07701"
|
||||||
|
id="path4059"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccsccccccccccscccccssssccccccccssccccccscccscccccssssccccccsccc"
|
||||||
|
style="fill:#808080;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4061"
|
||||||
|
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:FontAwesome;-inkscape-font-specification:FontAwesome"
|
||||||
|
transform="matrix(2.6666222,0,0,2.6666222,-902.1431,405.1582)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccsccccccccccscccccssssccccccccssccccccscccscccccssssccccccsccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4063"
|
||||||
|
d="m 527.46317,69.726807 c 0.0424,-0.04241 0.0636,-0.09263 0.0636,-0.15067 -1e-5,-0.05803 -0.0212,-0.108254 -0.0636,-0.150669 -0.0424,-0.04241 -0.0926,-0.06361 -0.15067,-0.06362 -0.058,4e-6 -0.10826,0.02121 -0.15067,0.06362 -0.0424,0.04242 -0.0636,0.09264 -0.0636,0.150669 0,0.05804 0.0212,0.108264 0.0636,0.15067 0.0424,0.04242 0.0926,0.06362 0.15067,0.06362 0.058,4e-6 0.10826,-0.0212 0.15067,-0.06362 m 2.84933,2.99379 0,1.178572 c -10e-6,0.04911 -0.0223,0.08259 -0.067,0.100446 -0.0179,0.0045 -0.0313,0.0067 -0.0402,0.0067 -0.029,-10e-7 -0.0547,-0.01004 -0.077,-0.03013 l -0.31139,-0.311384 c -0.26563,0.319196 -0.62165,0.571428 -1.06808,0.756696 -0.4442,0.187499 -0.92299,0.281249 -1.43638,0.28125 -0.5134,-10e-7 -0.99331,-0.09375 -1.43973,-0.28125 -0.4442,-0.185268 -0.79911,-0.4375 -1.06473,-0.756696 l -0.31139,0.311384 c -0.0201,0.02009 -0.0458,0.03013 -0.077,0.03013 -0.009,-10e-7 -0.0223,-0.0022 -0.0402,-0.0067 -0.0446,-0.01786 -0.067,-0.05134 -0.067,-0.100446 l 0,-1.178572 c 0,-0.03125 0.01,-0.05692 0.0301,-0.07701 0.0201,-0.02009 0.0458,-0.03013 0.077,-0.03013 l 1.17857,0 c 0.0491,2e-6 0.0826,0.02232 0.10045,0.06696 0.0179,0.04241 0.01,0.08147 -0.0234,0.117187 l -0.33482,0.334822 c 0.14955,0.203125 0.36049,0.375 0.63281,0.515625 0.27456,0.138393 0.57813,0.22991 0.91072,0.274553 l 0,-2.166294 -0.64286,0 c -0.058,2e-6 -0.10826,-0.0212 -0.15067,-0.06362 -0.0424,-0.04241 -0.0636,-0.09263 -0.0636,-0.15067 l 0,-0.428572 c -10e-6,-0.05803 0.0212,-0.108256 0.0636,-0.150669 0.0424,-0.04241 0.0926,-0.06361 0.15067,-0.06362 l 0.64286,0 0,-0.583076 c -0.12947,-0.07589 -0.23326,-0.178568 -0.31139,-0.308036 -0.0781,-0.131692 -0.11718,-0.275665 -0.11718,-0.43192 0,-0.236602 0.0837,-0.438611 0.25111,-0.606026 0.16741,-0.167406 0.36942,-0.251111 0.60603,-0.251116 0.2366,5e-6 0.43861,0.08371 0.60603,0.251116 0.1674,0.167415 0.25111,0.369424 0.25111,0.606026 0,0.156255 -0.0391,0.300228 -0.11718,0.43192 -0.0781,0.129468 -0.18193,0.232147 -0.31139,0.308036 l 0,0.583076 0.64286,0 c 0.058,3e-6 0.10825,0.02121 0.15067,0.06362 0.0424,0.04241 0.0636,0.09264 0.0636,0.150669 l 0,0.428572 c 0,0.05804 -0.0212,0.108261 -0.0636,0.15067 -0.0424,0.04241 -0.0926,0.06362 -0.15067,0.06362 l -0.64286,0 0,2.166294 c 0.33259,-0.04464 0.63504,-0.13616 0.90737,-0.274553 0.27455,-0.140625 0.4866,-0.3125 0.63616,-0.515625 l -0.33482,-0.334822 c -0.0335,-0.03571 -0.0413,-0.07478 -0.0234,-0.117187 0.0179,-0.04464 0.0513,-0.06696 0.10045,-0.06696 l 1.17857,0 c 0.0312,2e-6 0.0569,0.01005 0.077,0.03013 0.0201,0.02009 0.0301,0.04576 0.0301,0.07701" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(2.6666222,0,0,2.6666222,-902.1431,437.1582)"
|
||||||
|
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffc000;fill-opacity:1;stroke:none;font-family:FontAwesome;-inkscape-font-specification:FontAwesome"
|
||||||
|
id="g4065">
|
||||||
|
<path
|
||||||
|
d="m 527.46317,69.726807 c 0.0424,-0.04241 0.0636,-0.09263 0.0636,-0.15067 -1e-5,-0.05803 -0.0212,-0.108254 -0.0636,-0.150669 -0.0424,-0.04241 -0.0926,-0.06361 -0.15067,-0.06362 -0.058,4e-6 -0.10826,0.02121 -0.15067,0.06362 -0.0424,0.04242 -0.0636,0.09264 -0.0636,0.150669 0,0.05804 0.0212,0.108264 0.0636,0.15067 0.0424,0.04242 0.0926,0.06362 0.15067,0.06362 0.058,4e-6 0.10826,-0.0212 0.15067,-0.06362 m 2.84933,2.99379 0,1.178572 c -10e-6,0.04911 -0.0223,0.08259 -0.067,0.100446 -0.0179,0.0045 -0.0313,0.0067 -0.0402,0.0067 -0.029,-10e-7 -0.0547,-0.01004 -0.077,-0.03013 l -0.31139,-0.311384 c -0.26563,0.319196 -0.62165,0.571428 -1.06808,0.756696 -0.4442,0.187499 -0.92299,0.281249 -1.43638,0.28125 -0.5134,-10e-7 -0.99331,-0.09375 -1.43973,-0.28125 -0.4442,-0.185268 -0.79911,-0.4375 -1.06473,-0.756696 l -0.31139,0.311384 c -0.0201,0.02009 -0.0458,0.03013 -0.077,0.03013 -0.009,-10e-7 -0.0223,-0.0022 -0.0402,-0.0067 -0.0446,-0.01786 -0.067,-0.05134 -0.067,-0.100446 l 0,-1.178572 c 0,-0.03125 0.01,-0.05692 0.0301,-0.07701 0.0201,-0.02009 0.0458,-0.03013 0.077,-0.03013 l 1.17857,0 c 0.0491,2e-6 0.0826,0.02232 0.10045,0.06696 0.0179,0.04241 0.01,0.08147 -0.0234,0.117187 l -0.33482,0.334822 c 0.14955,0.203125 0.36049,0.375 0.63281,0.515625 0.27456,0.138393 0.57813,0.22991 0.91072,0.274553 l 0,-2.166294 -0.64286,0 c -0.058,2e-6 -0.10826,-0.0212 -0.15067,-0.06362 -0.0424,-0.04241 -0.0636,-0.09263 -0.0636,-0.15067 l 0,-0.428572 c -10e-6,-0.05803 0.0212,-0.108256 0.0636,-0.150669 0.0424,-0.04241 0.0926,-0.06361 0.15067,-0.06362 l 0.64286,0 0,-0.583076 c -0.12947,-0.07589 -0.23326,-0.178568 -0.31139,-0.308036 -0.0781,-0.131692 -0.11718,-0.275665 -0.11718,-0.43192 0,-0.236602 0.0837,-0.438611 0.25111,-0.606026 0.16741,-0.167406 0.36942,-0.251111 0.60603,-0.251116 0.2366,5e-6 0.43861,0.08371 0.60603,0.251116 0.1674,0.167415 0.25111,0.369424 0.25111,0.606026 0,0.156255 -0.0391,0.300228 -0.11718,0.43192 -0.0781,0.129468 -0.18193,0.232147 -0.31139,0.308036 l 0,0.583076 0.64286,0 c 0.058,3e-6 0.10825,0.02121 0.15067,0.06362 0.0424,0.04241 0.0636,0.09264 0.0636,0.150669 l 0,0.428572 c 0,0.05804 -0.0212,0.108261 -0.0636,0.15067 -0.0424,0.04241 -0.0926,0.06362 -0.15067,0.06362 l -0.64286,0 0,2.166294 c 0.33259,-0.04464 0.63504,-0.13616 0.90737,-0.274553 0.27455,-0.140625 0.4866,-0.3125 0.63616,-0.515625 l -0.33482,-0.334822 c -0.0335,-0.03571 -0.0413,-0.07478 -0.0234,-0.117187 0.0179,-0.04464 0.0513,-0.06696 0.10045,-0.06696 l 1.17857,0 c 0.0312,2e-6 0.0569,0.01005 0.077,0.03013 0.0201,0.02009 0.0301,0.04576 0.0301,0.07701"
|
||||||
|
id="path4067"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccsccccccccccscccccssssccccccccssccccccscccscccccssssccccccsccc"
|
||||||
|
style="fill:#ffc000;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="font-size:17.23077011px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
|
||||||
|
id="text4069">
|
||||||
|
<path
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
id="path4078"
|
||||||
|
style="" />
|
||||||
|
<path
|
||||||
|
id="path4080"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4110"
|
||||||
|
style="font-size:17.23077011000000169px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#808080;fill-opacity:1;stroke:none;font-family:Sans"
|
||||||
|
transform="translate(0,16)">
|
||||||
|
<path
|
||||||
|
id="path4112"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#808080;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
id="path4114"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(0,32)"
|
||||||
|
style="font-size:17.23077011000000169px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffc000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||||
|
id="g4116">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
id="path4118"
|
||||||
|
style="fill:#ffc000;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4122"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
style="fill:#ffc000;fill-opacity:1;stroke:none" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||||
|
id="path3234"
|
||||||
|
sodipodi:cx="504.62503"
|
||||||
|
sodipodi:cy="98.374992"
|
||||||
|
sodipodi:rx="2.625"
|
||||||
|
sodipodi:ry="2.3749907"
|
||||||
|
d="m 507.25003,98.374992 c 0,1.311672 -1.17525,2.374988 -2.625,2.374988 -1.44975,0 -2.625,-1.063316 -2.625,-2.374988 0,-1.311671 1.17525,-2.37499 2.625,-2.37499 1.44975,0 2.625,1.063319 2.625,2.37499 z"
|
||||||
|
transform="matrix(1.5238095,0,0,1.6842171,-264.88993,475.67736)" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||||
|
d="m 500.5,645.36218 7,0 c 2.493,0 4.5,2.007 4.5,4.5 l 0,2.50002 -16,0 0,-2.50002 c 0,-2.493 2.007,-4.5 4.5,-4.5 z"
|
||||||
|
id="rect4029"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="sssccss" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.5238095,0,0,1.6842171,-264.88993,491.67736)"
|
||||||
|
d="m 507.25003,98.374992 c 0,1.311672 -1.17525,2.374988 -2.625,2.374988 -1.44975,0 -2.625,-1.063316 -2.625,-2.374988 0,-1.311671 1.17525,-2.37499 2.625,-2.37499 1.44975,0 2.625,1.063319 2.625,2.37499 z"
|
||||||
|
sodipodi:ry="2.3749907"
|
||||||
|
sodipodi:rx="2.625"
|
||||||
|
sodipodi:cy="98.374992"
|
||||||
|
sodipodi:cx="504.62503"
|
||||||
|
id="path4032"
|
||||||
|
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="sssccss"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4034"
|
||||||
|
d="m 500.5,661.36218 7,0 c 2.493,0 4.5,2.007 4.5,4.5 l 0,2.50002 -16,0 0,-2.50002 c 0,-2.493 2.007,-4.5 4.5,-4.5 z"
|
||||||
|
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#ffc000;fill-opacity:1;stroke:none"
|
||||||
|
id="path4036"
|
||||||
|
sodipodi:cx="504.62503"
|
||||||
|
sodipodi:cy="98.374992"
|
||||||
|
sodipodi:rx="2.625"
|
||||||
|
sodipodi:ry="2.3749907"
|
||||||
|
d="m 507.25003,98.374992 c 0,1.311672 -1.17525,2.374988 -2.625,2.374988 -1.44975,0 -2.625,-1.063316 -2.625,-2.374988 0,-1.311671 1.17525,-2.37499 2.625,-2.37499 1.44975,0 2.625,1.063319 2.625,2.37499 z"
|
||||||
|
transform="matrix(1.5238095,0,0,1.6842171,-264.88993,507.67736)" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffc000;fill-opacity:1;stroke:none"
|
||||||
|
d="m 500.5,677.36218 7,0 c 2.493,0 4.5,2.007 4.5,4.5 l 0,2.50002 -16,0 0,-2.50002 c 0,-2.493 2.007,-4.5 4.5,-4.5 z"
|
||||||
|
id="path4038"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="sssccss" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:0.95312506;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="path3248"
|
||||||
|
sodipodi:cx="439.81253"
|
||||||
|
sodipodi:cy="88.562477"
|
||||||
|
sodipodi:rx="3.8125002"
|
||||||
|
sodipodi:ry="3.8125002"
|
||||||
|
d="m 443.62503,88.562477 a 3.8125002,3.8125002 0 1 1 -7.625,0 3.8125002,3.8125002 0 1 1 7.625,0 z"
|
||||||
|
transform="matrix(1.5737704,0,0,1.5737704,-252.16394,488.98519)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 440.0416,625.02887 -0.0412,3.41667 2.87503,1.83333"
|
||||||
|
id="path4030"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4039"
|
||||||
|
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:FreeSans;-inkscape-font-specification:FreeSans Bold"
|
||||||
|
transform="matrix(2.6246719,0,0,2.6246719,-764.958,391.85385)"><flowRegion
|
||||||
|
id="flowRegion4041"><rect
|
||||||
|
id="rect4043"
|
||||||
|
width="9.875"
|
||||||
|
height="10.375"
|
||||||
|
x="469.625"
|
||||||
|
y="86.625"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;font-family:FreeSans;-inkscape-font-specification:FreeSans Bold" /></flowRegion><flowPara
|
||||||
|
id="flowPara4045">$</flowPara></flowRoot> <g
|
||||||
|
id="g4047"
|
||||||
|
style="font-size:17.23077011px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
|
||||||
|
transform="matrix(0.87502461,0,0,0.87502461,29.205207,106.53043)">
|
||||||
|
<path
|
||||||
|
id="path4049"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||||
|
d="m 492.54807,592.57371 c 0.11537,0.12822 0.13781,0.26924 0.0673,0.42308 l -5.19231,11.125 c -0.0833,0.16025 -0.21795,0.24038 -0.40385,0.24038 -0.0256,0 -0.0705,-0.006 -0.13461,-0.0192 -0.10898,-0.0321 -0.19231,-0.0929 -0.25,-0.18269 -0.0513,-0.0897 -0.0641,-0.1859 -0.0385,-0.28846 l 1.89424,-7.76923 -3.90385,0.97115 c -0.0256,0.006 -0.0641,0.01 -0.11539,0.01 -0.11538,0 -0.21474,-0.0353 -0.29807,-0.10577 -0.11539,-0.0962 -0.15705,-0.22115 -0.125,-0.375 l 1.93269,-7.9327 c 0.0256,-0.0897 0.0769,-0.16344 0.15385,-0.22115 0.0769,-0.0577 0.16666,-0.0865 0.26923,-0.0865 l 3.15384,0 c 0.12179,2e-5 0.22436,0.0417 0.3077,0.125 0.0833,0.0769 0.12499,0.16989 0.125,0.27885 -1e-5,0.0513 -0.016,0.10899 -0.0481,0.17308 l -1.64423,4.45192 3.80769,-0.94231 c 0.0513,-0.0128 0.0897,-0.0192 0.11538,-0.0192 0.12179,10e-6 0.23077,0.0481 0.32693,0.14423"
|
||||||
|
id="path4051"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 108 KiB |
BIN
artsrc/ra/chrome.psd
Normal file
@@ -429,6 +429,9 @@ strategic: strategic.png
|
|||||||
sidebar-bits: chrome.png
|
sidebar-bits: chrome.png
|
||||||
indicator-left: 416,48,16,8
|
indicator-left: 416,48,16,8
|
||||||
indicator-right: 416,56,16,8
|
indicator-right: 416,56,16,8
|
||||||
|
production-tooltip-time: 432, 80, 16, 16
|
||||||
|
production-tooltip-power: 448, 80, 16, 16
|
||||||
|
production-tooltip-cost: 464, 80, 16, 16
|
||||||
|
|
||||||
production-icons: chrome.png
|
production-icons: chrome.png
|
||||||
building: 384,0,16,16
|
building: 384,0,16,16
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Container@CHEATS_PANEL:
|
Container@DEBUG_PANEL:
|
||||||
Logic: CheatsLogic
|
Logic: DebugMenuLogic
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
Height: PARENT_BOTTOM
|
Height: PARENT_BOTTOM
|
||||||
Children:
|
Children:
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
Container@INGAME_ROOT:
|
Container@INGAME_ROOT:
|
||||||
Logic: CncIngameChromeLogic
|
Logic: LoadIngamePlayerOrObserverUILogic
|
||||||
Children:
|
Children:
|
||||||
LogicTicker@DISCONNECT_WATCHER:
|
LogicTicker@DISCONNECT_WATCHER:
|
||||||
Logic: DisconnectWatcherLogic
|
Logic: DisconnectWatcherLogic
|
||||||
@@ -59,7 +59,8 @@ Container@INGAME_ROOT:
|
|||||||
|
|
||||||
Container@OBSERVER_WIDGETS:
|
Container@OBSERVER_WIDGETS:
|
||||||
Children:
|
Children:
|
||||||
Button@OPTIONS_BUTTON:
|
MenuButton@OPTIONS_BUTTON:
|
||||||
|
Logic: OrderButtonsChromeLogic
|
||||||
Key: escape
|
Key: escape
|
||||||
X: WINDOW_RIGHT-202
|
X: WINDOW_RIGHT-202
|
||||||
Y: 5
|
Y: 5
|
||||||
@@ -182,12 +183,24 @@ Container@PLAYER_WIDGETS:
|
|||||||
WorldCommand:
|
WorldCommand:
|
||||||
Width: WINDOW_RIGHT
|
Width: WINDOW_RIGHT
|
||||||
Height: WINDOW_BOTTOM
|
Height: WINDOW_BOTTOM
|
||||||
SupportPowers:
|
Container@SUPPORT_POWERS:
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
Logic: SupportPowerBinLogic
|
||||||
X: 10
|
X: 10
|
||||||
Y: 10
|
Y: 10
|
||||||
ReadyText: Ready
|
Children:
|
||||||
HoldText: On Hold
|
Container@PALETTE_BACKGROUND:
|
||||||
|
Children:
|
||||||
|
Background@ICON_TEMPLATE:
|
||||||
|
Width: 66
|
||||||
|
Height: 50
|
||||||
|
ClickThrough: false
|
||||||
|
Background: panel-black
|
||||||
|
SupportPowers@SUPPORT_PALETTE:
|
||||||
|
X: 1
|
||||||
|
Y: 1
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ReadyText: Ready
|
||||||
|
HoldText: On Hold
|
||||||
Background@SIDEBAR_BACKGROUND:
|
Background@SIDEBAR_BACKGROUND:
|
||||||
Logic: OrderButtonsChromeLogic
|
Logic: OrderButtonsChromeLogic
|
||||||
X: WINDOW_RIGHT - 204
|
X: WINDOW_RIGHT - 204
|
||||||
@@ -196,7 +209,7 @@ Container@PLAYER_WIDGETS:
|
|||||||
Height: 240
|
Height: 240
|
||||||
Background: panel-black
|
Background: panel-black
|
||||||
Children:
|
Children:
|
||||||
Button@OPTIONS_BUTTON:
|
MenuButton@OPTIONS_BUTTON:
|
||||||
Key: escape
|
Key: escape
|
||||||
X: 22
|
X: 22
|
||||||
Y: 0-24
|
Y: 0-24
|
||||||
@@ -258,12 +271,16 @@ Container@PLAYER_WIDGETS:
|
|||||||
Background: panel-gray
|
Background: panel-gray
|
||||||
Children:
|
Children:
|
||||||
Radar@RADAR_MINIMAP:
|
Radar@RADAR_MINIMAP:
|
||||||
|
Logic: IngameRadarDisplayLogic
|
||||||
X: 1
|
X: 1
|
||||||
Y: 1
|
Y: 1
|
||||||
Width: PARENT_RIGHT-2
|
Width: PARENT_RIGHT-2
|
||||||
Height: PARENT_BOTTOM-2
|
Height: PARENT_BOTTOM-2
|
||||||
WorldInteractionController: INTERACTION_CONTROLLER
|
WorldInteractionController: INTERACTION_CONTROLLER
|
||||||
|
Children:
|
||||||
|
LogicTicker@RADAR_TICKER:
|
||||||
Background@POWERBAR_PANEL:
|
Background@POWERBAR_PANEL:
|
||||||
|
Logic: IngamePowerBarLogic
|
||||||
X: 4
|
X: 4
|
||||||
Y: 5
|
Y: 5
|
||||||
Width: 10
|
Width: 10
|
||||||
@@ -279,6 +296,7 @@ Container@PLAYER_WIDGETS:
|
|||||||
TooltipTemplate: SIMPLE_TOOLTIP
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
IndicatorImage: indicator-left
|
IndicatorImage: indicator-left
|
||||||
Background@SILOBAR_PANEL:
|
Background@SILOBAR_PANEL:
|
||||||
|
Logic: IngameSiloBarLogic
|
||||||
X: 180
|
X: 180
|
||||||
Y: 5
|
Y: 5
|
||||||
Width: 10
|
Width: 10
|
||||||
@@ -293,12 +311,14 @@ Container@PLAYER_WIDGETS:
|
|||||||
TooltipContainer: TOOLTIP_CONTAINER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
TooltipTemplate: SIMPLE_TOOLTIP
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
IndicatorImage: indicator-right
|
IndicatorImage: indicator-right
|
||||||
Label@CASH:
|
LabelWithTooltip@CASH:
|
||||||
|
Logic: IngameCashCounterLogic
|
||||||
Y: 170
|
Y: 170
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
Height: 25
|
Height: 25
|
||||||
Align: Center
|
Align: Center
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
Text: ${0}
|
||||||
Container@PRODUCTION_TYPES:
|
Container@PRODUCTION_TYPES:
|
||||||
X: 12
|
X: 12
|
||||||
Y: 197
|
Y: 197
|
||||||
@@ -369,21 +389,29 @@ Container@PLAYER_WIDGETS:
|
|||||||
X: 7
|
X: 7
|
||||||
Y: 7
|
Y: 7
|
||||||
ImageCollection: production-icons
|
ImageCollection: production-icons
|
||||||
|
Container@PRODUCTION_BACKGROUND:
|
||||||
|
X: WINDOW_RIGHT - 204
|
||||||
|
Y: 287
|
||||||
|
Children:
|
||||||
|
Background@ICON_TEMPLATE:
|
||||||
|
Width: 66
|
||||||
|
Height: 50
|
||||||
|
Background: panel-black
|
||||||
|
ProductionPalette@PRODUCTION_PALETTE:
|
||||||
|
X: WINDOW_RIGHT - 203
|
||||||
|
Y: 288
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ReadyText: Ready
|
||||||
|
HoldText: On Hold
|
||||||
ProductionTabs@PRODUCTION_TABS:
|
ProductionTabs@PRODUCTION_TABS:
|
||||||
Logic: ProductionTabsLogic
|
Logic: ProductionTabsLogic
|
||||||
PaletteWidget: PRODUCTION_PALETTE
|
PaletteWidget: PRODUCTION_PALETTE
|
||||||
TypesContainer: PRODUCTION_TYPES
|
TypesContainer: PRODUCTION_TYPES
|
||||||
|
BackgroundContainer: PRODUCTION_BACKGROUND
|
||||||
X: WINDOW_RIGHT - 204
|
X: WINDOW_RIGHT - 204
|
||||||
Y: 268
|
Y: 268
|
||||||
Width: 194
|
Width: 194
|
||||||
Height: 20
|
Height: 20
|
||||||
ProductionPalette@PRODUCTION_PALETTE:
|
|
||||||
X: WINDOW_RIGHT - 204
|
|
||||||
Y: 287
|
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
|
||||||
ReadyText: Ready
|
|
||||||
HoldText: On Hold
|
|
||||||
|
|
||||||
Background@FMVPLAYER:
|
Background@FMVPLAYER:
|
||||||
Width: WINDOW_RIGHT
|
Width: WINDOW_RIGHT
|
||||||
Height: WINDOW_BOTTOM
|
Height: WINDOW_BOTTOM
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ Background@BUTTON_TOOLTIP:
|
|||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Label@HOTKEY:
|
Label@HOTKEY:
|
||||||
|
Visible: false
|
||||||
TextColor: 255,255,0
|
TextColor: 255,255,0
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
@@ -55,6 +56,11 @@ Background@PRODUCTION_TOOLTIP:
|
|||||||
X: 5
|
X: 5
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
Label@HOTKEY:
|
||||||
|
Visible: false
|
||||||
|
Height: 23
|
||||||
|
TextColor: 255,255,0
|
||||||
|
Font: Bold
|
||||||
Label@REQUIRES:
|
Label@REQUIRES:
|
||||||
X: 5
|
X: 5
|
||||||
Y: 19
|
Y: 19
|
||||||
@@ -67,21 +73,33 @@ Background@PRODUCTION_TOOLTIP:
|
|||||||
Height: 23
|
Height: 23
|
||||||
Font: TinyBold
|
Font: TinyBold
|
||||||
VAlign: Top
|
VAlign: Top
|
||||||
|
Image@COST_ICON:
|
||||||
|
Y: 5
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-cost
|
||||||
Label@COST:
|
Label@COST:
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
Image@TIME_ICON:
|
||||||
|
X: 3
|
||||||
|
Y: 24
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-time
|
||||||
Label@TIME:
|
Label@TIME:
|
||||||
Y: 19
|
Y: 19
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
Image@POWER_ICON:
|
||||||
|
Y: 44
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-power
|
||||||
Label@POWER:
|
Label@POWER:
|
||||||
Y: 39
|
Y: 39
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Label@TIME:
|
|
||||||
Y: 39
|
|
||||||
Height: 23
|
|
||||||
Font: Bold
|
|
||||||
|
|
||||||
Background@SUPPORT_POWER_TOOLTIP:
|
Background@SUPPORT_POWER_TOOLTIP:
|
||||||
Logic: SupportPowerTooltipLogic
|
Logic: SupportPowerTooltipLogic
|
||||||
|
|||||||
@@ -88,11 +88,11 @@ ChromeLayout:
|
|||||||
mods/cnc/chrome/replaybrowser.yaml
|
mods/cnc/chrome/replaybrowser.yaml
|
||||||
mods/cnc/chrome/ingame.yaml
|
mods/cnc/chrome/ingame.yaml
|
||||||
mods/cnc/chrome/ingame-chat.yaml
|
mods/cnc/chrome/ingame-chat.yaml
|
||||||
mods/cnc/chrome/ingamemenu.yaml
|
mods/cnc/chrome/ingame-debug.yaml
|
||||||
|
mods/cnc/chrome/ingame-menu.yaml
|
||||||
mods/cnc/chrome/music.yaml
|
mods/cnc/chrome/music.yaml
|
||||||
mods/cnc/chrome/settings.yaml
|
mods/cnc/chrome/settings.yaml
|
||||||
mods/cnc/chrome/credits.yaml
|
mods/cnc/chrome/credits.yaml
|
||||||
mods/cnc/chrome/cheats.yaml
|
|
||||||
mods/cnc/chrome/dialogs.yaml
|
mods/cnc/chrome/dialogs.yaml
|
||||||
mods/cnc/chrome/objectives.yaml
|
mods/cnc/chrome/objectives.yaml
|
||||||
mods/cnc/chrome/tooltips.yaml
|
mods/cnc/chrome/tooltips.yaml
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 78 KiB |
@@ -1,6 +1,6 @@
|
|||||||
Container@OBSERVER_WIDGETS:
|
Container@OBSERVER_WIDGETS:
|
||||||
Children:
|
Children:
|
||||||
Button@INGAME_STATS_BUTTON:
|
Button@OBSERVER_STATS_BUTTON:
|
||||||
X: 162
|
X: 162
|
||||||
Y: 0
|
Y: 0
|
||||||
Width: 160
|
Width: 160
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ Container@PLAYER_WIDGETS:
|
|||||||
Text: Diplomacy (F1)
|
Text: Diplomacy (F1)
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Key: f1
|
Key: f1
|
||||||
Button@CHEATS_BUTTON:
|
Button@INGAME_DEBUG_BUTTON:
|
||||||
X: 324
|
X: 324
|
||||||
Y: 0
|
Y: 0
|
||||||
Width: 160
|
Width: 160
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Cheats (F2)
|
Text: Debug (F2)
|
||||||
Visible: false
|
Visible: false
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Key: f2
|
Key: f2
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ Background@BUTTON_TOOLTIP:
|
|||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Label@HOTKEY:
|
Label@HOTKEY:
|
||||||
|
Visible: false
|
||||||
Y: 3
|
Y: 3
|
||||||
Height: 23
|
Height: 23
|
||||||
TextColor: 255,255,0
|
TextColor: 255,255,0
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ ChromeLayout:
|
|||||||
mods/d2k/chrome/ingame-observer.yaml
|
mods/d2k/chrome/ingame-observer.yaml
|
||||||
mods/ra/chrome/ingame-observerstats.yaml
|
mods/ra/chrome/ingame-observerstats.yaml
|
||||||
mods/d2k/chrome/ingame-player.yaml
|
mods/d2k/chrome/ingame-player.yaml
|
||||||
|
mods/ra/chrome/ingame-debug.yaml
|
||||||
mods/d2k/chrome/mainmenu.yaml
|
mods/d2k/chrome/mainmenu.yaml
|
||||||
mods/ra/chrome/settings.yaml
|
mods/ra/chrome/settings.yaml
|
||||||
mods/ra/chrome/credits.yaml
|
mods/ra/chrome/credits.yaml
|
||||||
@@ -80,7 +81,6 @@ ChromeLayout:
|
|||||||
mods/ra/chrome/directconnect.yaml
|
mods/ra/chrome/directconnect.yaml
|
||||||
mods/ra/chrome/replaybrowser.yaml
|
mods/ra/chrome/replaybrowser.yaml
|
||||||
mods/d2k/chrome/dropdowns.yaml
|
mods/d2k/chrome/dropdowns.yaml
|
||||||
mods/ra/chrome/cheats.yaml
|
|
||||||
mods/ra/chrome/musicplayer.yaml
|
mods/ra/chrome/musicplayer.yaml
|
||||||
mods/d2k/chrome/tooltips.yaml
|
mods/d2k/chrome/tooltips.yaml
|
||||||
mods/ra/chrome/assetbrowser.yaml
|
mods/ra/chrome/assetbrowser.yaml
|
||||||
|
|||||||
@@ -1,118 +1,94 @@
|
|||||||
chrome-allies: chrome-allies.png
|
sidebar-allies: chrome.png
|
||||||
specialbin-top: 0,0,30,51
|
background-top: 0,167,238,290
|
||||||
specialbin-middle: 0,51,30,51
|
background-iconrow: 0,457,238,47
|
||||||
specialbin-bottom: 0,153,30,39
|
background-bottom: 0,504,238,8
|
||||||
moneybin: 192,0,320,31
|
background-supportoverlay: 184,118,64,48
|
||||||
radar: 297,31,210,222
|
|
||||||
tooltip-bg: 0,288,272,136
|
|
||||||
|
|
||||||
power-allies: chrome-allies.png
|
sidebar-button-allies: chrome.png
|
||||||
power-indicator: 187,4,4,7
|
background: 56,28,28,28
|
||||||
|
sidebar-button-allies-hover: chrome.png
|
||||||
|
background: 56,0,28,28
|
||||||
|
sidebar-button-allies-pressed: chrome.png
|
||||||
|
background: 56,28,28,28
|
||||||
|
sidebar-button-allies-highlighted: chrome.png
|
||||||
|
background: 84,28,28,28
|
||||||
|
sidebar-button-allies-highlighted-hover: chrome.png
|
||||||
|
background: 84,0,28,28
|
||||||
|
sidebar-button-allies-highlighted-pressed: chrome.png
|
||||||
|
background: 84,28,28,28
|
||||||
|
sidebar-button-allies-disabled: chrome.png
|
||||||
|
background: 112,0,28,28
|
||||||
|
sidebar-button-allies-highlighted-disabled: chrome.png
|
||||||
|
background: 112,0,28,28
|
||||||
|
|
||||||
palette-allies: chrome-allies.png
|
sidebar-soviet: chrome.png
|
||||||
top: 297,288,201,9
|
background-top: 274,167,238,290
|
||||||
dock-top: 498,274,14,23
|
background-iconrow: 274,457,238,47
|
||||||
bottom: 297,489,201,9
|
background-bottom: 274,504,238,8
|
||||||
dock-bottom: 498,489,14,23
|
background-supportoverlay: 249,118,64,48
|
||||||
bg-0: 297,297,201,48
|
|
||||||
dock-0: 498,297,14,48
|
|
||||||
bg-1: 297,345,201,48
|
|
||||||
dock-1: 498,345,14,48
|
|
||||||
bg-2: 297,393,201,48
|
|
||||||
dock-2: 498,393,14,48
|
|
||||||
bg-3: 297,441,201,48
|
|
||||||
dock-3: 498,441,14,48
|
|
||||||
|
|
||||||
digits-allies: chrome-allies.png
|
sidebar-button-soviet: chrome.png
|
||||||
0: 32,0,13,17
|
background: 0,28,28,28
|
||||||
1: 45,0,13,17
|
sidebar-button-soviet-hover: chrome.png
|
||||||
2: 58,0,13,17
|
background: 0,0,28,28
|
||||||
3: 71,0,13,17
|
sidebar-button-soviet-pressed: chrome.png
|
||||||
4: 84,0,13,17
|
background: 0,28,28,28
|
||||||
5: 97,0,13,17
|
sidebar-button-soviet-highlighted: chrome.png
|
||||||
6: 110,0,13,17
|
background: 28,28,28,28
|
||||||
7: 123,0,13,17
|
sidebar-button-soviet-highlighted-hover: chrome.png
|
||||||
8: 136,0,13,17
|
background: 28,0,28,28
|
||||||
9: 149,0,13,17
|
sidebar-button-soviet-highlighted-pressed: chrome.png
|
||||||
|
background: 28,28,28,28
|
||||||
|
sidebar-button-soviet-disabled: chrome.png
|
||||||
|
background: 112,0,28,28
|
||||||
|
sidebar-button-soviet-highlighted-disabled: chrome.png
|
||||||
|
background: 112,0,28,28
|
||||||
|
|
||||||
chrome-soviet: chrome-soviet.png
|
sidebar-bits: chrome.png
|
||||||
specialbin-top: 0,0,30,51
|
production-tooltip-time: 416, 80, 16, 16
|
||||||
specialbin-middle: 0,51,30,51
|
production-tooltip-power: 432, 80, 16, 16
|
||||||
specialbin-bottom: 0,153,30,39
|
production-tooltip-cost: 448, 80, 16, 16
|
||||||
moneybin: 192,0,320,31
|
production-iconoverlay: 314,118,238,48
|
||||||
radar: 297,31,210,222
|
|
||||||
tooltip-bg: 0,288,272,136
|
|
||||||
|
|
||||||
power-soviet: chrome-soviet.png
|
production-icons: chrome.png
|
||||||
power-indicator: 187,4,4,7
|
building: 384,0,16,16
|
||||||
|
building-disabled: 384,16,16,16
|
||||||
|
building-alert: 384,32,16,16
|
||||||
|
defense: 400,0,16,16
|
||||||
|
defense-disabled: 400,16,16,16
|
||||||
|
defense-alert: 400,32,16,16
|
||||||
|
infantry: 416,0,16,16
|
||||||
|
infantry-disabled: 416,16,16,16
|
||||||
|
infantry-alert: 416,32,16,16
|
||||||
|
vehicle: 432,0,16,16
|
||||||
|
vehicle-disabled: 432,16,16,16
|
||||||
|
vehicle-alert: 432,32,16,16
|
||||||
|
aircraft: 448,0,16,16
|
||||||
|
aircraft-disabled: 448,16,16,16
|
||||||
|
aircraft-alert: 448,32,16,16
|
||||||
|
ship: 496,48,16,16
|
||||||
|
ship-disabled: 496,64,16,16
|
||||||
|
ship-alert: 496,80,16,16
|
||||||
|
|
||||||
palette-soviet: chrome-soviet.png
|
order-icons: chrome.png
|
||||||
top: 297,288,201,9
|
options: 480,0,16,16
|
||||||
dock-top: 498,274,14,23
|
options-disabled: 480,16,16,16
|
||||||
bottom: 297,489,201,9
|
options-active: 480,32,16,16
|
||||||
dock-bottom: 498,489,14,23
|
diplomacy: 464,48,16,16
|
||||||
bg-0: 297,297,201,48
|
diplomacy-disabled: 464,64,16,16
|
||||||
dock-0: 498,297,14,48
|
diplomacy-active: 464,80,16,16
|
||||||
bg-1: 297,345,201,48
|
sell: 496,0,16,16
|
||||||
dock-1: 498,345,14,48
|
sell-disabled: 496,16,16,16
|
||||||
bg-2: 297,393,201,48
|
sell-active: 496,32,16,16
|
||||||
dock-2: 498,393,14,48
|
repair: 384,48,16,16
|
||||||
bg-3: 297,441,201,48
|
repair-disabled: 384,64,16,16
|
||||||
dock-3: 498,441,14,48
|
repair-active: 384,80,16,16
|
||||||
|
beacon: 400,48,16,16
|
||||||
digits-soviet: chrome-soviet.png
|
beacon-disabled: 400,64,16,16
|
||||||
0: 32,0,13,17
|
beacon-active: 400,80,16,16
|
||||||
1: 45,0,13,17
|
power: 480,48,16,16
|
||||||
2: 58,0,13,17
|
power-disabled: 480,64,16,16
|
||||||
3: 71,0,13,17
|
power-active: 480,80,16,16
|
||||||
4: 84,0,13,17
|
|
||||||
5: 97,0,13,17
|
|
||||||
6: 110,0,13,17
|
|
||||||
7: 123,0,13,17
|
|
||||||
8: 136,0,13,17
|
|
||||||
9: 149,0,13,17
|
|
||||||
|
|
||||||
tabs-selected: tabs.png
|
|
||||||
allies-Building: 0,0,27,41
|
|
||||||
allies-Defense: 0,40,27,41
|
|
||||||
allies-Infantry: 0,80,27,41
|
|
||||||
allies-Vehicle: 0,120,27,41
|
|
||||||
allies-Aircraft: 162,200,27,41
|
|
||||||
allies-Ship: 0,200,27,41
|
|
||||||
soviet-Building: 81,0,27,41
|
|
||||||
soviet-Defense: 81,40,27,41
|
|
||||||
soviet-Infantry: 81,80,27,41
|
|
||||||
soviet-Vehicle: 81,120,27,41
|
|
||||||
soviet-Aircraft: 81,160,27,41
|
|
||||||
soviet-Ship: 81,200,27,41
|
|
||||||
|
|
||||||
tabs-ready: tabs.png
|
|
||||||
allies-Building: 27,0,27,41
|
|
||||||
allies-Defense: 27,40,27,41
|
|
||||||
allies-Infantry: 27,80,27,41
|
|
||||||
allies-Vehicle: 27,120,27,41
|
|
||||||
allies-Aircraft: 162,160,27,41
|
|
||||||
allies-Ship: 27,200,27,41
|
|
||||||
soviet-Building: 108,0,27,41
|
|
||||||
soviet-Defense: 108,40,27,41
|
|
||||||
soviet-Infantry: 108,80,27,41
|
|
||||||
soviet-Vehicle: 108,120,27,41
|
|
||||||
soviet-Aircraft: 108,160,27,41
|
|
||||||
soviet-Ship: 108,200,27,41
|
|
||||||
|
|
||||||
tabs-normal: tabs.png
|
|
||||||
allies-Building: 54,0,27,41
|
|
||||||
allies-Defense: 54,40,27,41
|
|
||||||
allies-Infantry: 54,80,27,41
|
|
||||||
allies-Vehicle: 54,120,27,41
|
|
||||||
allies-Aircraft: 162,120,27,41
|
|
||||||
allies-Ship: 54,200,27,41
|
|
||||||
soviet-Building: 135,0,27,41
|
|
||||||
soviet-Defense: 135,40,27,41
|
|
||||||
soviet-Infantry: 135,80,27,41
|
|
||||||
soviet-Vehicle: 135,120,27,41
|
|
||||||
soviet-Aircraft: 135,160,27,41
|
|
||||||
soviet-Ship: 135,200,27,41
|
|
||||||
|
|
||||||
# Used for the menu
|
# Used for the menu
|
||||||
dialog: dialog.png
|
dialog: dialog.png
|
||||||
@@ -175,20 +151,6 @@ strategic: strategic.png
|
|||||||
enemy_owned: 32,32,32,32
|
enemy_owned: 32,32,32,32
|
||||||
player_owned: 96,0,32,32
|
player_owned: 96,0,32,32
|
||||||
|
|
||||||
order-icons: buttons.png
|
|
||||||
sell: 0,0,34,28
|
|
||||||
sell-disabled: 68,0,34,28
|
|
||||||
sell-active: 34,0,34,28
|
|
||||||
repair: 0,28,34,28
|
|
||||||
repair-disabled: 68,28,34,28
|
|
||||||
repair-active: 34,28,34,28
|
|
||||||
power: 0,56,34,28
|
|
||||||
power-disabled: 68,56,34,28
|
|
||||||
power-active: 34,56,34,28
|
|
||||||
beacon: 0,84,34,28
|
|
||||||
beacon-disabled: 68,84,34,28
|
|
||||||
beacon-active: 34,84,34,28
|
|
||||||
|
|
||||||
flags: buttons.png
|
flags: buttons.png
|
||||||
allies: 30,112,30,15
|
allies: 30,112,30,15
|
||||||
soviet: 0,112,30,15
|
soviet: 0,112,30,15
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
Background@CHEATS_PANEL:
|
Background@INGAME_DEBUG_BG:
|
||||||
Logic: CheatsLogic
|
Logic: DebugMenuLogic
|
||||||
X: (WINDOW_RIGHT - WIDTH)/2
|
X: (WINDOW_RIGHT - WIDTH)/2
|
||||||
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||||
Width: 350
|
Width: 350
|
||||||
Height: 475
|
Height: 475
|
||||||
Visible: false
|
|
||||||
Children:
|
Children:
|
||||||
Label@LABEL_TITLE:
|
Label@LABEL_TITLE:
|
||||||
X: (PARENT_RIGHT - WIDTH)/2
|
X: (PARENT_RIGHT - WIDTH)/2
|
||||||
Y: 20
|
Y: 20
|
||||||
Width: 250
|
Width: 250
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Cheats
|
Text: Debug Options
|
||||||
Align: Center
|
Align: Center
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Checkbox@DISABLE_SHROUD:
|
Checkbox@DISABLE_SHROUD:
|
||||||
@@ -107,4 +106,5 @@ Background@CHEATS_PANEL:
|
|||||||
Height: 25
|
Height: 25
|
||||||
Text: Close
|
Text: Close
|
||||||
Key: escape
|
Key: escape
|
||||||
|
Font: Bold
|
||||||
|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
Background@DIPLOMACY:
|
Background@INGAME_DIPLOMACY_BG:
|
||||||
Logic: DiplomacyLogic
|
Logic: DiplomacyLogic
|
||||||
X: 25
|
X: (WINDOW_RIGHT - WIDTH)/2
|
||||||
Y: 50
|
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||||
Width: 490
|
Width: 490
|
||||||
Height: 300
|
Height: 355
|
||||||
Visible: false
|
|
||||||
Children:
|
Children:
|
||||||
Label@LABEL_TITLE:
|
Label@LABEL_TITLE:
|
||||||
X: (PARENT_RIGHT - WIDTH)/2
|
X: (PARENT_RIGHT - WIDTH)/2
|
||||||
@@ -44,7 +43,7 @@ Background@DIPLOMACY:
|
|||||||
X: 20
|
X: 20
|
||||||
Y: 67
|
Y: 67
|
||||||
Width: PARENT_RIGHT-40
|
Width: PARENT_RIGHT-40
|
||||||
Height: PARENT_BOTTOM-87
|
Height: PARENT_BOTTOM-87-35
|
||||||
ItemSpacing: 5
|
ItemSpacing: 5
|
||||||
Children:
|
Children:
|
||||||
ScrollItem@TEAM_TEMPLATE:
|
ScrollItem@TEAM_TEMPLATE:
|
||||||
@@ -82,3 +81,11 @@ Background@DIPLOMACY:
|
|||||||
Width: 100
|
Width: 100
|
||||||
Height: PARENT_BOTTOM
|
Height: PARENT_BOTTOM
|
||||||
|
|
||||||
|
Button@CLOSE:
|
||||||
|
X: PARENT_RIGHT-145
|
||||||
|
Y: PARENT_BOTTOM - 45
|
||||||
|
Width: 120
|
||||||
|
Height: 25
|
||||||
|
Text: Close
|
||||||
|
Key: escape
|
||||||
|
Font: Bold
|
||||||
@@ -4,7 +4,6 @@ Background@INGAME_OPTIONS_BG:
|
|||||||
Width: 300
|
Width: 300
|
||||||
Height: 295
|
Height: 295
|
||||||
Logic: IngameMenuLogic
|
Logic: IngameMenuLogic
|
||||||
Visible: false
|
|
||||||
Children:
|
Children:
|
||||||
Label@LABEL_TITLE:
|
Label@LABEL_TITLE:
|
||||||
X: (PARENT_RIGHT - WIDTH)/2
|
X: (PARENT_RIGHT - WIDTH)/2
|
||||||
|
|||||||
@@ -1,6 +1,40 @@
|
|||||||
Container@OBSERVER_WIDGETS:
|
Container@OBSERVER_WIDGETS:
|
||||||
|
Logic: OrderButtonsChromeLogic
|
||||||
Children:
|
Children:
|
||||||
Button@INGAME_STATS_BUTTON:
|
Container@GAME_TIMER_BLOCK:
|
||||||
|
Logic: GameTimerLogic
|
||||||
|
X: WINDOW_RIGHT/2 - WIDTH
|
||||||
|
Width: 100
|
||||||
|
Height: 55
|
||||||
|
Children:
|
||||||
|
Label@GAME_TIMER:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 15
|
||||||
|
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_OPTIONS_BG
|
||||||
|
HideIngameUI: false
|
||||||
|
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
|
X: 162
|
||||||
Y: 0
|
Y: 0
|
||||||
Width: 160
|
Width: 160
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
Container@OBSERVER_STATS:
|
Background@INGAME_OBSERVERSTATS_BG:
|
||||||
Logic: ObserverStatsLogic
|
Logic: ObserverStatsLogic
|
||||||
X: 25
|
X: 25
|
||||||
Y: 50
|
Y: 50
|
||||||
Width: 950
|
Width: 950
|
||||||
Height: 500
|
Height: 500
|
||||||
Visible: false
|
Background: dialog
|
||||||
Children:
|
Children:
|
||||||
Background@BACKGROUND:
|
Container@BACKGROUND:
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
Height: PARENT_BOTTOM
|
Height: PARENT_BOTTOM - 35
|
||||||
Background: dialog
|
|
||||||
Children:
|
Children:
|
||||||
Label@TITLE:
|
Label@TITLE:
|
||||||
X: 0
|
X: 0
|
||||||
@@ -486,4 +485,11 @@ Container@OBSERVER_STATS:
|
|||||||
YAxisLabel: $
|
YAxisLabel: $
|
||||||
LabelFont: TinyBold
|
LabelFont: TinyBold
|
||||||
AxisFont: Bold
|
AxisFont: Bold
|
||||||
|
Button@CLOSE:
|
||||||
|
X: PARENT_RIGHT - 145
|
||||||
|
Y: PARENT_BOTTOM - 45
|
||||||
|
Width: 120
|
||||||
|
Height: 25
|
||||||
|
Text: Close
|
||||||
|
Key: escape
|
||||||
|
Font: Bold
|
||||||
|
|||||||
@@ -3,23 +3,6 @@ Container@PLAYER_WIDGETS:
|
|||||||
LogicKeyListener@CONTROLGROUP_KEYHANDLER:
|
LogicKeyListener@CONTROLGROUP_KEYHANDLER:
|
||||||
Logic: ControlGroupLogic
|
Logic: ControlGroupLogic
|
||||||
LogicTicker@SIDEBAR_TICKER:
|
LogicTicker@SIDEBAR_TICKER:
|
||||||
Button@INGAME_DIPLOMACY_BUTTON:
|
|
||||||
X: 162
|
|
||||||
Y: 0
|
|
||||||
Width: 160
|
|
||||||
Height: 25
|
|
||||||
Text: Diplomacy (F1)
|
|
||||||
Font: Bold
|
|
||||||
Key: f1
|
|
||||||
Button@CHEATS_BUTTON:
|
|
||||||
X: 324
|
|
||||||
Y: 0
|
|
||||||
Width: 160
|
|
||||||
Height: 25
|
|
||||||
Text: Cheats (F2)
|
|
||||||
Visible: false
|
|
||||||
Font: Bold
|
|
||||||
Key: f2
|
|
||||||
Button@OBJECTIVES_BUTTON:
|
Button@OBJECTIVES_BUTTON:
|
||||||
X: 486
|
X: 486
|
||||||
Y: 0
|
Y: 0
|
||||||
@@ -29,87 +12,333 @@ Container@PLAYER_WIDGETS:
|
|||||||
Visible: false
|
Visible: false
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Key: f3
|
Key: f3
|
||||||
SlidingContainer@INGAME_RADAR_BIN:
|
Container@SUPPORT_POWERS:
|
||||||
X: WINDOW_RIGHT-215
|
Logic: SupportPowerBinLogic
|
||||||
Y: 0
|
X: 10
|
||||||
OpenOffset: 0,29
|
Y: 10
|
||||||
ClosedOffset: 0,-166
|
|
||||||
AnimationLength: 15
|
|
||||||
Children:
|
Children:
|
||||||
Image@RADAR_BIN_BG:
|
SupportPowers@SUPPORT_PALETTE:
|
||||||
ImageName: radar
|
IconSize: 62, 46
|
||||||
Radar@RADAR_MINIMAP:
|
IconSpriteOffset: -1, -1
|
||||||
WorldInteractionController: INTERACTION_CONTROLLER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ReadyText: READY
|
||||||
|
HoldText: ON HOLD
|
||||||
|
Container@PALETTE_FOREGROUND:
|
||||||
|
Children:
|
||||||
|
Image@ICON_TEMPLATE:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
X:0-2
|
||||||
|
Y:0-2
|
||||||
|
Width: 62
|
||||||
|
Height: 46
|
||||||
|
IgnoreMouseOver: true
|
||||||
|
ImageCollection: sidebar
|
||||||
|
ImageName: background-supportoverlay
|
||||||
|
Image@SIDEBAR_BACKGROUND_TOP:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
X: WINDOW_RIGHT - 250
|
||||||
|
Y: 10
|
||||||
|
Width: 238
|
||||||
|
Height: 291
|
||||||
|
ImageCollection: sidebar
|
||||||
|
ImageName: background-top
|
||||||
|
ClickThrough: false
|
||||||
|
Children:
|
||||||
|
Container@TOP_BUTTONS:
|
||||||
|
Logic: OrderButtonsChromeLogic
|
||||||
X: 9
|
X: 9
|
||||||
Width: 192
|
Y: 7
|
||||||
Height: 192
|
Children:
|
||||||
ResourceBar@POWERBAR:
|
Button@BEACON_BUTTON:
|
||||||
X: 42
|
Logic: AddRaceSuffixLogic
|
||||||
Y: 205
|
Width: 28
|
||||||
Width: 138
|
Height: 28
|
||||||
Height: 5
|
Background: sidebar-button
|
||||||
|
TooltipText: Place Beacon
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@SELL_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
X: 32
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Sell
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@POWER_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
X: 64
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Power Down
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@REPAIR_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
X: 96
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Repair
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
MenuButton@DEBUG_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
MenuContainer: INGAME_DEBUG_BG
|
||||||
|
HideIngameUI: false
|
||||||
|
Pause: false
|
||||||
|
Key: f2
|
||||||
|
X: 128
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Debug Menu
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
ImageName: options
|
||||||
|
MenuButton@DIPLOMACY_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
MenuContainer: INGAME_DIPLOMACY_BG
|
||||||
|
HideIngameUI: false
|
||||||
|
Pause: false
|
||||||
|
Key: f1
|
||||||
|
X: 160
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Diplomacy
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
ImageName: diplomacy
|
||||||
|
MenuButton@OPTIONS_BUTTON:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
MenuContainer: INGAME_OPTIONS_BG
|
||||||
|
HideIngameUI: false
|
||||||
|
Key: escape
|
||||||
|
X: 192
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Options
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: order-icons
|
||||||
|
ImageName: options
|
||||||
|
Container@RADAR:
|
||||||
|
Logic: IngameRadarDisplayLogic
|
||||||
|
Children:
|
||||||
|
LogicTicker@RADAR_TICKER:
|
||||||
|
ColorBlock@RADAR_FADETOBLACK:
|
||||||
|
X: 8
|
||||||
|
Y: 40
|
||||||
|
Width: 222
|
||||||
|
Height: 222
|
||||||
|
Radar@RADAR_MINIMAP:
|
||||||
|
WorldInteractionController: INTERACTION_CONTROLLER
|
||||||
|
X: 9
|
||||||
|
Y: 41
|
||||||
|
Width: 220
|
||||||
|
Height: 220
|
||||||
|
Children:
|
||||||
|
Label@GAME_TIMER:
|
||||||
|
Logic: GameTimerLogic
|
||||||
|
Y: 263
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 22
|
||||||
|
Align: Center
|
||||||
|
Font: TinyBold
|
||||||
|
LabelWithTooltip@CASH:
|
||||||
|
Logic: IngameCashCounterLogic
|
||||||
|
X: 35
|
||||||
|
Y: 262
|
||||||
|
Width: 50
|
||||||
|
Height: 22
|
||||||
|
Font: Bold
|
||||||
|
Text: {0}
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
TooltipTemplate: SIMPLE_TOOLTIP
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
IndicatorImage: power-indicator
|
LabelWithTooltip@POWER:
|
||||||
Orientation: Horizontal
|
Logic: IngamePowerCounterLogic
|
||||||
Style: Bevelled
|
X: PARENT_RIGHT - WIDTH - 30
|
||||||
MoneyBin@INGAME_MONEY_BIN:
|
Y: 262
|
||||||
Logic: OrderButtonsChromeLogic
|
Width: 50
|
||||||
X: WINDOW_RIGHT - WIDTH
|
Height: 22
|
||||||
Width: 320
|
Align: Right
|
||||||
Height: 32
|
Font: Bold
|
||||||
Children:
|
Text: {0}
|
||||||
Button@BEACON_BUTTON:
|
|
||||||
X: 3-36
|
|
||||||
Width: 34
|
|
||||||
Height: 28
|
|
||||||
TooltipText: Place Beacon
|
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
VisualHeight: 0
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
Children:
|
Container@SIDEBAR_PRODUCTION:
|
||||||
Image@ICON:
|
Logic: ClassicProductionLogic
|
||||||
ImageCollection: order-icons
|
|
||||||
Button@SELL_BUTTON:
|
|
||||||
X: 3
|
|
||||||
Width: 34
|
|
||||||
Height: 28
|
|
||||||
TooltipText: Sell
|
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
|
||||||
VisualHeight: 0
|
|
||||||
Children:
|
|
||||||
Image@ICON:
|
|
||||||
ImageCollection: order-icons
|
|
||||||
Button@POWER_BUTTON:
|
|
||||||
X: 39
|
|
||||||
Width: 34
|
|
||||||
Height: 28
|
|
||||||
TooltipText: Power Down
|
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
|
||||||
VisualHeight: 0
|
|
||||||
Children:
|
|
||||||
Image@ICON:
|
|
||||||
ImageCollection: order-icons
|
|
||||||
Button@REPAIR_BUTTON:
|
|
||||||
X: 75
|
|
||||||
Width: 34
|
|
||||||
Height: 28
|
|
||||||
TooltipText: Repair
|
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
|
||||||
VisualHeight: 0
|
|
||||||
Children:
|
|
||||||
Image@ICON:
|
|
||||||
ImageCollection: order-icons
|
|
||||||
SupportPowerBin@INGAME_POWERS_BIN:
|
|
||||||
X: 0
|
|
||||||
Y: 25
|
|
||||||
ReadyText: READY
|
|
||||||
HoldText: ON HOLD
|
|
||||||
BuildPalette@INGAME_BUILD_PALETTE:
|
|
||||||
X: WINDOW_RIGHT - 250
|
X: WINDOW_RIGHT - 250
|
||||||
Y: 280
|
Y: 300
|
||||||
Width: 250
|
Width: 238
|
||||||
Height: 500
|
Height: 250
|
||||||
ReadyText: READY
|
Children:
|
||||||
HoldText: ON HOLD
|
Container@PALETTE_BACKGROUND:
|
||||||
RequiresText: Requires {0}
|
Children:
|
||||||
|
Image@ROW_TEMPLATE:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Width: 238
|
||||||
|
Height: 47
|
||||||
|
ClickThrough: false
|
||||||
|
ImageCollection: sidebar
|
||||||
|
ImageName: background-iconrow
|
||||||
|
Image@BOTTOM_CAP:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Width: 238
|
||||||
|
Height: 8
|
||||||
|
ClickThrough: false
|
||||||
|
ImageCollection: sidebar
|
||||||
|
ImageName: background-bottom
|
||||||
|
LogicTicker@PRODUCTION_TICKER:
|
||||||
|
ProductionPalette@PRODUCTION_PALETTE:
|
||||||
|
X: 42
|
||||||
|
Y: 1
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ReadyText: READY
|
||||||
|
HoldText: ON HOLD
|
||||||
|
IconSize: 62, 46
|
||||||
|
IconMargin: 1, 1
|
||||||
|
IconSpriteOffset: -1, -1
|
||||||
|
Container@PALETTE_FOREGROUND:
|
||||||
|
X: 40
|
||||||
|
Y: 0-1
|
||||||
|
Children:
|
||||||
|
Image@ROW_TEMPLATE:
|
||||||
|
Width: 238
|
||||||
|
Height: 47
|
||||||
|
IgnoreMouseOver: true
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-iconoverlay
|
||||||
|
Container@PRODUCTION_TYPES:
|
||||||
|
X: 7
|
||||||
|
Y: 2
|
||||||
|
Width: 29
|
||||||
|
Height: 240
|
||||||
|
Children:
|
||||||
|
ProductionTypeButton@BUILDING:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Buildings
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Building
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
ProductionTypeButton@DEFENSE:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Y: 31
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Defense
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Defense
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
ProductionTypeButton@INFANTRY:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Y: 62
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Infantry
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Infantry
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
ProductionTypeButton@VEHICLE:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Y: 93
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Vehicles
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Vehicle
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
ProductionTypeButton@AIRCRAFT:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Y: 124
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Aircraft
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Aircraft
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
ProductionTypeButton@AIRCRAFT:
|
||||||
|
Logic: AddRaceSuffixLogic
|
||||||
|
Y: 155
|
||||||
|
Width: 28
|
||||||
|
Height: 28
|
||||||
|
VisualHeight: 0
|
||||||
|
Background: sidebar-button
|
||||||
|
TooltipText: Naval
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
ProductionGroup: Ship
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
X: 6
|
||||||
|
Y: 6
|
||||||
|
ImageCollection: production-icons
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Container@INGAME_ROOT:
|
Container@INGAME_ROOT:
|
||||||
Logic: IngameChromeLogic
|
Logic: LoadIngamePlayerOrObserverUILogic
|
||||||
Children:
|
Children:
|
||||||
LogicTicker@DISCONNECT_WATCHER:
|
LogicTicker@DISCONNECT_WATCHER:
|
||||||
Logic: DisconnectWatcherLogic
|
Logic: DisconnectWatcherLogic
|
||||||
@@ -19,41 +19,14 @@ Container@INGAME_ROOT:
|
|||||||
Y: 0
|
Y: 0
|
||||||
Width: WINDOW_RIGHT
|
Width: WINDOW_RIGHT
|
||||||
Height: WINDOW_BOTTOM
|
Height: WINDOW_BOTTOM
|
||||||
Container@GAME_TIMER_BLOCK:
|
|
||||||
Logic: GameTimerLogic
|
|
||||||
X: WINDOW_RIGHT/2 - WIDTH
|
|
||||||
Width: 100
|
|
||||||
Height: 55
|
|
||||||
Children:
|
|
||||||
Label@GAME_TIMER:
|
|
||||||
Width: PARENT_RIGHT
|
|
||||||
Height: 15
|
|
||||||
Align: Center
|
|
||||||
Font: Title
|
|
||||||
Contrast: true
|
|
||||||
Label@GAME_TIMER_STATUS:
|
|
||||||
Y: 35
|
|
||||||
Width: PARENT_RIGHT
|
|
||||||
Height: 15
|
|
||||||
Align: Center
|
|
||||||
Font: Bold
|
|
||||||
Contrast: true
|
|
||||||
StrategicProgress@STRATEGIC_PROGRESS:
|
StrategicProgress@STRATEGIC_PROGRESS:
|
||||||
X: WINDOW_RIGHT/2
|
X: WINDOW_RIGHT/2
|
||||||
Y: 40
|
Y: 40
|
||||||
SupportPowerTimer@SUPPORT_POWER_TIMER:
|
SupportPowerTimer@SUPPORT_POWER_TIMER:
|
||||||
X: 80
|
X: 80
|
||||||
Y: 34
|
Y: 10
|
||||||
Order: Descending
|
Order: Descending
|
||||||
Container@PLAYER_ROOT:
|
Container@PLAYER_ROOT:
|
||||||
Button@INGAME_OPTIONS_BUTTON:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Width: 160
|
|
||||||
Height: 25
|
|
||||||
Text: Options (ESC)
|
|
||||||
Font: Bold
|
|
||||||
Key: escape
|
|
||||||
Container@PERFORMANCE_INFO:
|
Container@PERFORMANCE_INFO:
|
||||||
Logic: PerfDebugLogic
|
Logic: PerfDebugLogic
|
||||||
Children:
|
Children:
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ Background@BUTTON_TOOLTIP:
|
|||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Label@HOTKEY:
|
Label@HOTKEY:
|
||||||
|
Visible: false
|
||||||
Y: 2
|
Y: 2
|
||||||
Height: 23
|
Height: 23
|
||||||
TextColor: 255,255,0
|
TextColor: 255,255,0
|
||||||
@@ -107,3 +108,81 @@ Background@CLIENT_TOOLTIP:
|
|||||||
Height: 10
|
Height: 10
|
||||||
Font: TinyBold
|
Font: TinyBold
|
||||||
|
|
||||||
|
Background@PRODUCTION_TOOLTIP:
|
||||||
|
Logic: ProductionTooltipLogic
|
||||||
|
Background: dialog4
|
||||||
|
Width: 200
|
||||||
|
Height: 65
|
||||||
|
Children:
|
||||||
|
Label@NAME:
|
||||||
|
X: 7
|
||||||
|
Y: 2
|
||||||
|
Height: 23
|
||||||
|
Font: Bold
|
||||||
|
Label@HOTKEY:
|
||||||
|
Visible: false
|
||||||
|
Y: 2
|
||||||
|
Height: 23
|
||||||
|
TextColor: 255,255,0
|
||||||
|
Font: Bold
|
||||||
|
Label@REQUIRES:
|
||||||
|
X: 7
|
||||||
|
Y: 21
|
||||||
|
Height: 23
|
||||||
|
Font: TinyBold
|
||||||
|
Text: Requires {0}
|
||||||
|
Label@DESC:
|
||||||
|
X: 7
|
||||||
|
Y: 41
|
||||||
|
Height: 23
|
||||||
|
Font: TinyBold
|
||||||
|
VAlign: Top
|
||||||
|
Image@COST_ICON:
|
||||||
|
Y: 5
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-cost
|
||||||
|
Label@COST:
|
||||||
|
Height: 23
|
||||||
|
Font: Bold
|
||||||
|
Image@TIME_ICON:
|
||||||
|
X: 3
|
||||||
|
Y: 26
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-time
|
||||||
|
Label@TIME:
|
||||||
|
Y: 21
|
||||||
|
Height: 23
|
||||||
|
Font: Bold
|
||||||
|
Image@POWER_ICON:
|
||||||
|
Y: 46
|
||||||
|
Width: 16
|
||||||
|
ImageCollection: sidebar-bits
|
||||||
|
ImageName: production-tooltip-power
|
||||||
|
Label@POWER:
|
||||||
|
Y: 41
|
||||||
|
Height: 23
|
||||||
|
Font: Bold
|
||||||
|
|
||||||
|
Background@SUPPORT_POWER_TOOLTIP:
|
||||||
|
Logic: SupportPowerTooltipLogic
|
||||||
|
Background: dialog4
|
||||||
|
Width: 200
|
||||||
|
Height: 29
|
||||||
|
Children:
|
||||||
|
Label@NAME:
|
||||||
|
X: 7
|
||||||
|
Y: 2
|
||||||
|
Height: 20
|
||||||
|
Font: Bold
|
||||||
|
Label@TIME:
|
||||||
|
X: 20
|
||||||
|
Y: 8
|
||||||
|
Font: TinyBold
|
||||||
|
VAlign: Top
|
||||||
|
Label@DESC:
|
||||||
|
X: 7
|
||||||
|
Y: 22
|
||||||
|
Font: TinyBold
|
||||||
|
VAlign: Top
|
||||||
@@ -79,6 +79,7 @@ ChromeLayout:
|
|||||||
mods/ra/chrome/ingame-observer.yaml
|
mods/ra/chrome/ingame-observer.yaml
|
||||||
mods/ra/chrome/ingame-observerstats.yaml
|
mods/ra/chrome/ingame-observerstats.yaml
|
||||||
mods/ra/chrome/ingame-player.yaml
|
mods/ra/chrome/ingame-player.yaml
|
||||||
|
mods/ra/chrome/ingame-debug.yaml
|
||||||
mods/ra/chrome/mainmenu.yaml
|
mods/ra/chrome/mainmenu.yaml
|
||||||
mods/ra/chrome/settings.yaml
|
mods/ra/chrome/settings.yaml
|
||||||
mods/ra/chrome/credits.yaml
|
mods/ra/chrome/credits.yaml
|
||||||
@@ -94,7 +95,6 @@ ChromeLayout:
|
|||||||
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/ra/chrome/dropdowns.yaml
|
||||||
mods/ra/chrome/cheats.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
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ Sounds:
|
|||||||
DisablePower: bleep11
|
DisablePower: bleep11
|
||||||
EnablePower: bleep12
|
EnablePower: bleep12
|
||||||
ChatLine: scold1
|
ChatLine: scold1
|
||||||
BuildPaletteOpen: bleep13
|
ClickSound: ramenu1
|
||||||
BuildPaletteClose: bleep13
|
|
||||||
TabClick: ramenu1
|
|
||||||
ClickSound:
|
|
||||||
ClickDisabledSound:
|
ClickDisabledSound:
|
||||||
Beacon: beepslct
|
Beacon: beepslct
|
||||||
@@ -16,7 +16,8 @@ World:
|
|||||||
LightPaletteRotator:
|
LightPaletteRotator:
|
||||||
ExcludePalettes: terrain, effect
|
ExcludePalettes: terrain, effect
|
||||||
BuildingInfluence:
|
BuildingInfluence:
|
||||||
ChooseBuildTabOnSelect:
|
ProductionQueueFromSelection:
|
||||||
|
ProductionPaletteWidget: PRODUCTION_PALETTE
|
||||||
BridgeLayer:
|
BridgeLayer:
|
||||||
Bridges: bridge1, bridge2, br1, br2, br3, sbridge1, sbridge2, sbridge3, sbridge4
|
Bridges: bridge1, bridge2, br1, br2, br3, sbridge1, sbridge2, sbridge3, sbridge4
|
||||||
CrateSpawner:
|
CrateSpawner:
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 39 KiB |
BIN
mods/ra/uibits/chrome.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 32 KiB |
115
mods/ts/chrome/ingame-player.yaml
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
Container@PLAYER_WIDGETS:
|
||||||
|
Children:
|
||||||
|
LogicKeyListener@CONTROLGROUP_KEYHANDLER:
|
||||||
|
Logic: ControlGroupLogic
|
||||||
|
LogicTicker@SIDEBAR_TICKER:
|
||||||
|
Button@INGAME_DIPLOMACY_BUTTON:
|
||||||
|
X: 162
|
||||||
|
Y: 0
|
||||||
|
Width: 160
|
||||||
|
Height: 25
|
||||||
|
Text: Diplomacy (F1)
|
||||||
|
Font: Bold
|
||||||
|
Key: f1
|
||||||
|
Button@INGAME_DEBUG_BUTTON:
|
||||||
|
X: 324
|
||||||
|
Y: 0
|
||||||
|
Width: 160
|
||||||
|
Height: 25
|
||||||
|
Text: Cheats (F2)
|
||||||
|
Visible: false
|
||||||
|
Font: Bold
|
||||||
|
Key: f2
|
||||||
|
Button@OBJECTIVES_BUTTON:
|
||||||
|
X: 486
|
||||||
|
Y: 0
|
||||||
|
Width: 160
|
||||||
|
Height: 25
|
||||||
|
Text: Objectives (F3)
|
||||||
|
Visible: false
|
||||||
|
Font: Bold
|
||||||
|
Key: f3
|
||||||
|
SlidingContainer@INGAME_RADAR_BIN:
|
||||||
|
X: WINDOW_RIGHT-215
|
||||||
|
Y: 0
|
||||||
|
OpenOffset: 0,29
|
||||||
|
ClosedOffset: 0,-166
|
||||||
|
AnimationLength: 15
|
||||||
|
Children:
|
||||||
|
Image@RADAR_BIN_BG:
|
||||||
|
ImageName: radar
|
||||||
|
Radar@RADAR_MINIMAP:
|
||||||
|
WorldInteractionController: INTERACTION_CONTROLLER
|
||||||
|
X: 9
|
||||||
|
Width: 192
|
||||||
|
Height: 192
|
||||||
|
ResourceBar@POWERBAR:
|
||||||
|
X: 42
|
||||||
|
Y: 205
|
||||||
|
Width: 138
|
||||||
|
Height: 5
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
IndicatorImage: power-indicator
|
||||||
|
Orientation: Horizontal
|
||||||
|
Style: Bevelled
|
||||||
|
MoneyBin@INGAME_MONEY_BIN:
|
||||||
|
Logic: OrderButtonsChromeLogic
|
||||||
|
X: WINDOW_RIGHT - WIDTH
|
||||||
|
Width: 320
|
||||||
|
Height: 32
|
||||||
|
Children:
|
||||||
|
Button@BEACON_BUTTON:
|
||||||
|
X: 3-36
|
||||||
|
Width: 34
|
||||||
|
Height: 28
|
||||||
|
TooltipText: Place Beacon
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@SELL_BUTTON:
|
||||||
|
X: 3
|
||||||
|
Width: 34
|
||||||
|
Height: 28
|
||||||
|
TooltipText: Sell
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@POWER_BUTTON:
|
||||||
|
X: 39
|
||||||
|
Width: 34
|
||||||
|
Height: 28
|
||||||
|
TooltipText: Power Down
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
ImageCollection: order-icons
|
||||||
|
Button@REPAIR_BUTTON:
|
||||||
|
X: 75
|
||||||
|
Width: 34
|
||||||
|
Height: 28
|
||||||
|
TooltipText: Repair
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
VisualHeight: 0
|
||||||
|
Children:
|
||||||
|
Image@ICON:
|
||||||
|
ImageCollection: order-icons
|
||||||
|
SupportPowerBin@INGAME_POWERS_BIN:
|
||||||
|
X: 0
|
||||||
|
Y: 25
|
||||||
|
ReadyText: READY
|
||||||
|
HoldText: ON HOLD
|
||||||
|
BuildPalette@INGAME_BUILD_PALETTE:
|
||||||
|
X: WINDOW_RIGHT - 250
|
||||||
|
Y: 280
|
||||||
|
Width: 250
|
||||||
|
Height: 500
|
||||||
|
ReadyText: READY
|
||||||
|
HoldText: ON HOLD
|
||||||
|
RequiresText: Requires {0}
|
||||||
|
|
||||||
80
mods/ts/chrome/ingame.yaml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
Container@INGAME_ROOT:
|
||||||
|
Logic: IngameChromeLogic
|
||||||
|
Children:
|
||||||
|
LogicTicker@DISCONNECT_WATCHER:
|
||||||
|
Logic: DisconnectWatcherLogic
|
||||||
|
WorldInteractionController@INTERACTION_CONTROLLER:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Width: WINDOW_RIGHT
|
||||||
|
Height: WINDOW_BOTTOM
|
||||||
|
ViewportController:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Width: WINDOW_RIGHT
|
||||||
|
Height: WINDOW_BOTTOM
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
WorldCommand:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Width: WINDOW_RIGHT
|
||||||
|
Height: WINDOW_BOTTOM
|
||||||
|
Container@GAME_TIMER_BLOCK:
|
||||||
|
Logic: GameTimerLogic
|
||||||
|
X: WINDOW_RIGHT/2 - WIDTH
|
||||||
|
Width: 100
|
||||||
|
Height: 55
|
||||||
|
Children:
|
||||||
|
Label@GAME_TIMER:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 15
|
||||||
|
Align: Center
|
||||||
|
Font: Title
|
||||||
|
Contrast: true
|
||||||
|
Label@GAME_TIMER_STATUS:
|
||||||
|
Y: 35
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 15
|
||||||
|
Align: Center
|
||||||
|
Font: Bold
|
||||||
|
Contrast: true
|
||||||
|
StrategicProgress@STRATEGIC_PROGRESS:
|
||||||
|
X: WINDOW_RIGHT/2
|
||||||
|
Y: 40
|
||||||
|
SupportPowerTimer@SUPPORT_POWER_TIMER:
|
||||||
|
X: 80
|
||||||
|
Y: 34
|
||||||
|
Order: Descending
|
||||||
|
Container@PLAYER_ROOT:
|
||||||
|
Button@INGAME_OPTIONS_BUTTON:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Width: 160
|
||||||
|
Height: 25
|
||||||
|
Text: Options (ESC)
|
||||||
|
Font: Bold
|
||||||
|
Key: escape
|
||||||
|
Container@PERFORMANCE_INFO:
|
||||||
|
Logic: PerfDebugLogic
|
||||||
|
Children:
|
||||||
|
Label@PERF_TEXT:
|
||||||
|
X: WINDOW_RIGHT - 200
|
||||||
|
Y: WINDOW_BOTTOM - 70
|
||||||
|
Width: 170
|
||||||
|
Height: 40
|
||||||
|
Contrast: true
|
||||||
|
Background@GRAPH_BG:
|
||||||
|
ClickThrough: true
|
||||||
|
Background: dialog4
|
||||||
|
X: 30
|
||||||
|
Y: WINDOW_BOTTOM - 240
|
||||||
|
Width: 210
|
||||||
|
Height: 210
|
||||||
|
Children:
|
||||||
|
PerfGraph@GRAPH:
|
||||||
|
X: 5
|
||||||
|
Y: 5
|
||||||
|
Width: 200
|
||||||
|
Height: 200
|
||||||
|
TooltipContainer@TOOLTIP_CONTAINER:
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ Assemblies:
|
|||||||
|
|
||||||
ChromeLayout:
|
ChromeLayout:
|
||||||
mods/ts/chrome/install.yaml
|
mods/ts/chrome/install.yaml
|
||||||
mods/ra/chrome/ingame.yaml
|
mods/ts/chrome/ingame.yaml
|
||||||
mods/ra/chrome/ingame-chat.yaml
|
mods/ra/chrome/ingame-chat.yaml
|
||||||
mods/ra/chrome/ingame-diplomacy.yaml
|
mods/ra/chrome/ingame-diplomacy.yaml
|
||||||
mods/ra/chrome/ingame-fmvplayer.yaml
|
mods/ra/chrome/ingame-fmvplayer.yaml
|
||||||
@@ -107,7 +107,8 @@ ChromeLayout:
|
|||||||
mods/ra/chrome/ingame-objectives.yaml
|
mods/ra/chrome/ingame-objectives.yaml
|
||||||
mods/ra/chrome/ingame-observer.yaml
|
mods/ra/chrome/ingame-observer.yaml
|
||||||
mods/ra/chrome/ingame-observerstats.yaml
|
mods/ra/chrome/ingame-observerstats.yaml
|
||||||
mods/ra/chrome/ingame-player.yaml
|
mods/ts/chrome/ingame-player.yaml
|
||||||
|
mods/ra/chrome/ingame-debug.yaml
|
||||||
mods/ra/chrome/mainmenu.yaml
|
mods/ra/chrome/mainmenu.yaml
|
||||||
mods/ra/chrome/settings.yaml
|
mods/ra/chrome/settings.yaml
|
||||||
mods/ra/chrome/credits.yaml
|
mods/ra/chrome/credits.yaml
|
||||||
@@ -123,7 +124,6 @@ ChromeLayout:
|
|||||||
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/ra/chrome/dropdowns.yaml
|
||||||
mods/ra/chrome/cheats.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
|
||||||
|
|||||||