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)
|
||||
{
|
||||
if (ClickThrough || !Bounds.Contains(mi.Location))
|
||||
if (ClickThrough || !RenderBounds.Contains(mi.Location))
|
||||
return false;
|
||||
|
||||
if (!Draggable || moving && (!TakeMouseFocus(mi) || mi.Button != MouseButton.Left))
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
public string ImageCollection = "";
|
||||
public string ImageName = "";
|
||||
public bool ClickThrough = true;
|
||||
public Func<string> GetImageName;
|
||||
public Func<string> GetImageCollection;
|
||||
|
||||
@@ -29,6 +30,7 @@ namespace OpenRA.Widgets
|
||||
protected ImageWidget(ImageWidget other)
|
||||
: base(other)
|
||||
{
|
||||
ClickThrough = other.ClickThrough;
|
||||
ImageName = other.ImageName;
|
||||
GetImageName = other.GetImageName;
|
||||
ImageCollection = other.ImageCollection;
|
||||
@@ -48,5 +50,10 @@ namespace OpenRA.Widgets
|
||||
|
||||
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;
|
||||
IgnoreChildMouseOver = widget.IgnoreChildMouseOver;
|
||||
IgnoreMouseOver = widget.IgnoreMouseOver;
|
||||
|
||||
foreach (var child in widget.Children)
|
||||
AddChild(child.Clone());
|
||||
|
||||
@@ -71,24 +71,16 @@
|
||||
<Compile Include="IonCannonPower.cs" />
|
||||
<Compile Include="PoisonedByTiberium.cs" />
|
||||
<Compile Include="ProductionAirdrop.cs" />
|
||||
<Compile Include="ProductionQueueFromSelection.cs" />
|
||||
<Compile Include="WithCargo.cs" />
|
||||
<Compile Include="RenderGunboat.cs" />
|
||||
<Compile Include="SpawnViceroid.cs" />
|
||||
<Compile Include="TiberiumRefinery.cs" />
|
||||
<Compile Include="Widgets\Logic\CncConquestObjectivesLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\CncIngameChromeLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\CncIngameMenuLogic.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="WithRoof.cs" />
|
||||
<Compile Include="Widgets\Logic\ProductionTabsLogic.cs" />
|
||||
<Compile Include="Widgets\ProductionTypeButtonWidget.cs" />
|
||||
<Compile Include="WithDeliveryAnimation.cs" />
|
||||
</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;
|
||||
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;
|
||||
debugButton.IsVisible = () => visibleButtons > 1;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using OpenRA.Mods.RA.Widgets;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
@@ -54,6 +55,34 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
var typesContainer = Ui.Root.Get(tabs.TypesContainer);
|
||||
foreach (var i in typesContainer.Children)
|
||||
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()
|
||||
|
||||
@@ -9,11 +9,12 @@
|
||||
#endregion
|
||||
|
||||
using System.Linq;
|
||||
using OpenRA.Mods.RA.Widgets;
|
||||
using OpenRA.Mods.D2k.Widgets;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
namespace OpenRA.Mods.D2k
|
||||
{
|
||||
class ChooseBuildTabOnSelectInfo : ITraitInfo
|
||||
{
|
||||
@@ -77,6 +77,12 @@
|
||||
<Compile Include="Render\WithDockingOverlay.cs" />
|
||||
<Compile Include="Render\WithDeliveryOverlay.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>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
@@ -112,4 +118,8 @@ cd "$(SolutionDir)"</PostBuildEvent>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<Folder Include="Widgets\" />
|
||||
<Folder Include="Widgets\Logic\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -13,15 +13,17 @@ using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Mods.RA.Buildings;
|
||||
using OpenRA.Mods.RA.Orders;
|
||||
using OpenRA.Mods.RA.Render;
|
||||
using OpenRA.Mods.RA.Widgets;
|
||||
using OpenRA.Network;
|
||||
using OpenRA.Primitives;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
namespace OpenRA.Mods.D2k.Widgets
|
||||
{
|
||||
class BuildPaletteWidget : Widget
|
||||
{
|
||||
@@ -10,11 +10,13 @@
|
||||
|
||||
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.RA.Widgets.Logic
|
||||
namespace OpenRA.Mods.D2k.Widgets.Logic
|
||||
{
|
||||
public class IngameChromeLogic
|
||||
{
|
||||
@@ -42,6 +44,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
Widget optionsBG = null;
|
||||
optionsBG = Game.LoadWidget(world, "INGAME_OPTIONS_BG", Ui.Root, new WidgetArgs
|
||||
{
|
||||
{ "transient", false },
|
||||
{ "onExit", () =>
|
||||
{
|
||||
optionsBG.Visible = false;
|
||||
@@ -52,6 +55,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
}
|
||||
});
|
||||
|
||||
optionsBG.Visible = false;
|
||||
|
||||
gameRoot.Get<ButtonWidget>("INGAME_OPTIONS_BUTTON").OnClick = () =>
|
||||
{
|
||||
optionsBG.Visible ^= true;
|
||||
@@ -73,8 +78,16 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
var observerWidgets = Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
|
||||
|
||||
Game.LoadWidget(world, "OBSERVER_STATS", observerWidgets, new WidgetArgs());
|
||||
observerWidgets.Get<ButtonWidget>("INGAME_STATS_BUTTON").OnClick = () => gameRoot.Get("OBSERVER_STATS").Visible ^= true;
|
||||
Widget observerstats = null;
|
||||
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 };
|
||||
@@ -83,10 +96,13 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
|
||||
|
||||
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 }
|
||||
});
|
||||
diplomacy.Visible = false;
|
||||
|
||||
var diplomacyButton = playerWidgets.Get<ButtonWidget>("INGAME_DIPLOMACY_BUTTON");
|
||||
diplomacyButton.OnClick = () => diplomacy.Visible ^= true;
|
||||
var validPlayers = 0;
|
||||
@@ -94,11 +110,14 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
diplomacyButton.IsVisible = () => validPlayers > 0;
|
||||
|
||||
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 }
|
||||
});
|
||||
var cheatsButton = playerWidgets.Get<ButtonWidget>("CHEATS_BUTTON");
|
||||
cheats.Visible = false;
|
||||
|
||||
var cheatsButton = playerWidgets.Get<ButtonWidget>("INGAME_DEBUG_BUTTON");
|
||||
cheatsButton.OnClick = () => cheats.Visible ^= true;
|
||||
cheatsButton.IsVisible = () => world.LobbyInfo.GlobalSettings.AllowCheats;
|
||||
|
||||
@@ -13,7 +13,7 @@ using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
namespace OpenRA.Mods.D2k.Widgets
|
||||
{
|
||||
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 OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
namespace OpenRA.Mods.D2k.Widgets
|
||||
{
|
||||
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.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Primitives;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
namespace OpenRA.Mods.D2k.Widgets
|
||||
{
|
||||
class SupportPowerBinWidget : Widget
|
||||
{
|
||||
@@ -367,7 +367,6 @@
|
||||
<Compile Include="Turreted.cs" />
|
||||
<Compile Include="Valued.cs" />
|
||||
<Compile Include="WaterPaletteRotation.cs" />
|
||||
<Compile Include="Widgets\BuildPaletteWidget.cs" />
|
||||
<Compile Include="Widgets\LogicTickerWidget.cs" />
|
||||
<Compile Include="Widgets\Logic\KickSpectatorsLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\MissionBrowserLogic.cs" />
|
||||
@@ -381,7 +380,6 @@
|
||||
<Compile Include="Widgets\Logic\DirectConnectLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\DownloadPackagesLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\IngameChatLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\IngameChromeLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\LobbyLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\LobbyUtils.cs" />
|
||||
<Compile Include="Widgets\Logic\MainMenuLogic.cs" />
|
||||
@@ -393,15 +391,12 @@
|
||||
<Compile Include="Widgets\Logic\ReplayBrowserLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\ServerBrowserLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\ServerCreationLogic.cs" />
|
||||
<Compile Include="Widgets\MoneyBinWidget.cs" />
|
||||
<Compile Include="Widgets\ObserverProductionIconsWidget.cs" />
|
||||
<Compile Include="Widgets\ObserverSupportPowerIconsWidget.cs" />
|
||||
<Compile Include="Widgets\RadarWidget.cs" />
|
||||
<Compile Include="Widgets\StrategicProgressWidget.cs" />
|
||||
<Compile Include="Widgets\SupportPowerTimerWidget.cs" />
|
||||
<Compile Include="Widgets\SupportPowerBinWidget.cs" />
|
||||
<Compile Include="Widgets\WorldCommandWidget.cs" />
|
||||
<Compile Include="World\ChooseBuildTabOnSelect.cs" />
|
||||
<Compile Include="World\ResourceClaim.cs" />
|
||||
<Compile Include="World\ResourceClaimLayer.cs" />
|
||||
<Compile Include="World\PlayMusicOnMapLoad.cs" />
|
||||
@@ -411,7 +406,6 @@
|
||||
<Compile Include="InfiltrateForExploration.cs" />
|
||||
<Compile Include="InfiltrateForCash.cs" />
|
||||
<Compile Include="RenderShroudCircle.cs" />
|
||||
<Compile Include="Widgets\Logic\CheatsLogic.cs" />
|
||||
<Compile Include="CloakPaletteEffect.cs" />
|
||||
<Compile Include="Widgets\ColorPreviewManagerWidget.cs" />
|
||||
<Compile Include="Infiltrates.cs" />
|
||||
@@ -437,7 +431,6 @@
|
||||
<Compile Include="Widgets\Logic\CreditsLogic.cs" />
|
||||
<Compile Include="Render\WithResources.cs" />
|
||||
<Compile Include="Render\WithHarvestAnimation.cs" />
|
||||
<Compile Include="Widgets\SlidingContainerWidget.cs" />
|
||||
<Compile Include="Widgets\ResourceBarWidget.cs" />
|
||||
<Compile Include="Widgets\Logic\SimpleTooltipLogic.cs" />
|
||||
<Compile Include="World\DomainIndex.cs" />
|
||||
@@ -531,6 +524,25 @@
|
||||
<Compile Include="Buildings\ClonesProducedUnits.cs" />
|
||||
<Compile Include="Cloneable.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>
|
||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||
@@ -575,4 +587,7 @@ cd "$(SolutionDir)thirdparty/"
|
||||
copy "FuzzyLogicLibrary.dll" "$(SolutionDir)"
|
||||
cd "$(SolutionDir)"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Widgets\Logic\Ingame\" />
|
||||
</ItemGroup>
|
||||
</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)
|
||||
{
|
||||
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;
|
||||
var labelWidth = Game.Renderer.Fonts[label.Font].Measure(button.TooltipText).X;
|
||||
label.Bounds.Width = labelWidth;
|
||||
widget.Bounds.Width = 2 * label.Bounds.X + labelWidth;
|
||||
|
||||
var hotkeyLabel = "({0})".F(button.Key.DisplayString());
|
||||
hotkey.GetText = () => hotkeyLabel;
|
||||
hotkey.Bounds.X = labelWidth + 2 * label.Bounds.X;
|
||||
if (button.Key.IsValid())
|
||||
{
|
||||
var hotkey = widget.Get<LabelWidget>("HOTKEY");
|
||||
hotkey.Visible = true;
|
||||
|
||||
var panelWidth = hotkey.Bounds.X + label.Bounds.X
|
||||
+ Game.Renderer.Fonts[label.Font].Measure(hotkeyLabel).X;
|
||||
widget.Bounds.Width = panelWidth;
|
||||
var hotkeyLabel = "({0})".F(button.Key.DisplayString());
|
||||
hotkey.GetText = () => hotkeyLabel;
|
||||
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
|
||||
{
|
||||
public class CheatsLogic
|
||||
public class DebugMenuLogic
|
||||
{
|
||||
public static MersenneTwister CosmeticRandom = new MersenneTwister();
|
||||
|
||||
[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>();
|
||||
|
||||
@@ -117,7 +115,18 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
|
||||
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||
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)
|
||||
@@ -23,13 +23,28 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
ScrollPanelWidget diplomacyPanel;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public DiplomacyLogic(Widget widget, Action onExit, World world)
|
||||
public DiplomacyLogic(Widget widget, Action onExit, World world, bool transient)
|
||||
{
|
||||
this.world = world;
|
||||
|
||||
diplomacyPanel = widget.Get<ScrollPanelWidget>("DIPLOMACY_PANEL");
|
||||
|
||||
LayoutPlayers();
|
||||
|
||||
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||
if (close != null)
|
||||
{
|
||||
close.OnClick = () =>
|
||||
{
|
||||
if (transient)
|
||||
{
|
||||
Ui.CloseWindow();
|
||||
Ui.Root.RemoveChild(widget);
|
||||
}
|
||||
|
||||
onExit();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
void LayoutPlayers()
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using OpenRA.Network;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
@@ -19,27 +20,39 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
public GameTimerLogic(Widget widget, OrderManager orderManager, World world)
|
||||
{
|
||||
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 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)
|
||||
{
|
||||
var startTick = Ui.LastTickTime;
|
||||
// Blink the status line
|
||||
status.IsVisible = () => (world.Paused || world.Timestep != Game.Timestep)
|
||||
&& (Ui.LastTickTime - startTick) / 1000 % 2 == 0;
|
||||
|
||||
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);
|
||||
};
|
||||
status.IsVisible = shouldShowStatus;
|
||||
status.GetText = statusText;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
[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 mpe = world.WorldActor.TraitOrDefault<MenuPaletteEffect>();
|
||||
@@ -71,8 +71,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
};
|
||||
|
||||
var resumeButton = widget.Get<ButtonWidget>("RESUME");
|
||||
resumeButton.OnClick = () => onExit();
|
||||
resumeButton.IsDisabled = () => resumeDisabled;
|
||||
resumeButton.OnClick = () =>
|
||||
{
|
||||
if (transient)
|
||||
{
|
||||
Ui.CloseWindow();
|
||||
Ui.Root.RemoveChild(widget);
|
||||
}
|
||||
|
||||
onExit();
|
||||
};
|
||||
|
||||
widget.Get<ButtonWidget>("SURRENDER").OnClick = () =>
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
WorldRenderer worldRenderer;
|
||||
|
||||
[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.worldRenderer = worldRenderer;
|
||||
@@ -136,6 +136,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
|
||||
ClearStats();
|
||||
DisplayStats(BasicStats);
|
||||
|
||||
var close = widget.GetOrNull<ButtonWidget>("CLOSE");
|
||||
if (close != null)
|
||||
{
|
||||
close.OnClick = () =>
|
||||
{
|
||||
if (transient)
|
||||
{
|
||||
Ui.CloseWindow();
|
||||
Ui.Root.RemoveChild(widget);
|
||||
}
|
||||
|
||||
onExit();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
void ClearStats()
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System.Linq;
|
||||
using OpenRA.Mods.RA.Orders;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
@@ -15,9 +16,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
public class OrderButtonsChromeLogic
|
||||
{
|
||||
readonly World world;
|
||||
readonly Widget ingameRoot;
|
||||
bool disableSystemButtons;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public OrderButtonsChromeLogic(Widget widget, World world)
|
||||
{
|
||||
this.world = world;
|
||||
ingameRoot = Ui.Root.Get("INGAME_ROOT");
|
||||
|
||||
// Order Buttons
|
||||
var sell = widget.GetOrNull<ButtonWidget>("SELL_BUTTON");
|
||||
if (sell != null)
|
||||
{
|
||||
@@ -45,6 +54,65 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
power.GetKey = _ => Game.Settings.Keys.PowerDownKey;
|
||||
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)
|
||||
|
||||
@@ -16,7 +16,7 @@ using OpenRA.Mods.RA.Buildings;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
public class ProductionTooltipLogic
|
||||
{
|
||||
@@ -29,12 +29,18 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
|
||||
widget.IsVisible = () => palette.TooltipActor != null;
|
||||
var nameLabel = widget.Get<LabelWidget>("NAME");
|
||||
var hotkeyLabel = widget.Get<LabelWidget>("HOTKEY");
|
||||
var requiresLabel = widget.Get<LabelWidget>("REQUIRES");
|
||||
var powerLabel = widget.Get<LabelWidget>("POWER");
|
||||
var powerIcon = widget.Get<ImageWidget>("POWER_ICON");
|
||||
var timeLabel = widget.Get<LabelWidget>("TIME");
|
||||
var timeIcon = widget.Get<ImageWidget>("TIME_ICON");
|
||||
var costLabel = widget.Get<LabelWidget>("COST");
|
||||
var costIcon = widget.Get<ImageWidget>("COST_ICON");
|
||||
var descLabel = widget.Get<LabelWidget>("DESC");
|
||||
|
||||
var iconMargin = timeIcon.Bounds.X;
|
||||
|
||||
var font = Game.Renderer.Fonts[nameLabel.Font];
|
||||
var descFont = Game.Renderer.Fonts[descLabel.Font];
|
||||
var requiresFont = Game.Renderer.Fonts[requiresLabel.Font];
|
||||
@@ -54,25 +60,34 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
|
||||
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 requiresString = prereqs.Any() ? requiresLabel.Text.F(prereqs.JoinWith(", ")) : "";
|
||||
requiresLabel.GetText = () => requiresString;
|
||||
|
||||
var power = bi != null ? bi.Power : 0;
|
||||
var powerString = "P: {0}".F(power);
|
||||
var powerString = power.ToString();
|
||||
powerLabel.GetText = () => powerString;
|
||||
powerLabel.GetColor = () => ((pm.PowerProvided - pm.PowerDrained) >= -power || power > 0)
|
||||
? Color.White : Color.Red;
|
||||
powerLabel.IsVisible = () => power != 0;
|
||||
powerIcon.IsVisible = () => power != 0;
|
||||
|
||||
var lowpower = pm.PowerState != PowerState.Normal;
|
||||
var time = palette.CurrentQueue == null ? 0 : palette.CurrentQueue.GetBuildTime(actor)
|
||||
* (lowpower ? palette.CurrentQueue.Info.LowPowerSlowdown : 1);
|
||||
var timeString = "T: {0}".F(WidgetUtils.FormatTime(time));
|
||||
var timeString = WidgetUtils.FormatTime(time);
|
||||
timeLabel.GetText = () => timeString;
|
||||
timeLabel.GetColor = () => lowpower ? Color.Red : Color.White;
|
||||
|
||||
var costString = "$: {0}".F(cost);
|
||||
var costString = cost.ToString();
|
||||
costLabel.GetText = () => costString;
|
||||
costLabel.GetColor = () => pr.DisplayCash + pr.DisplayResources >= cost
|
||||
? Color.White : Color.Red;
|
||||
@@ -80,10 +95,12 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
var descString = tooltip.Description.Replace("\\n", "\n");
|
||||
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);
|
||||
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 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
|
||||
/*
|
||||
* 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
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
@@ -12,7 +12,7 @@ using System;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
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.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
public class ProductionIcon
|
||||
{
|
||||
public string Name;
|
||||
public Hotkey Hotkey;
|
||||
public Sprite Sprite;
|
||||
public float2 Pos;
|
||||
public List<ProductionItem> Queued;
|
||||
@@ -34,9 +35,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
public class ProductionPaletteWidget : Widget
|
||||
{
|
||||
public enum ReadyTextStyleOptions { Solid, AlternatingColor, Blinking }
|
||||
public readonly ReadyTextStyleOptions ReadyTextStyle = ReadyTextStyleOptions.Blinking;
|
||||
public readonly Color ReadyTextAltColor = Color.Red;
|
||||
public readonly ReadyTextStyleOptions ReadyTextStyle = ReadyTextStyleOptions.AlternatingColor;
|
||||
public readonly Color ReadyTextAltColor = Color.Gold;
|
||||
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 DisabledTabClick = null;
|
||||
public readonly string TooltipContainer;
|
||||
@@ -45,6 +50,9 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
[Translate] public readonly string ReadyText = "";
|
||||
[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 readonly World World;
|
||||
readonly OrderManager orderManager;
|
||||
@@ -113,14 +121,23 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
if (icon == null)
|
||||
return false;
|
||||
|
||||
// Only support left and right clicks
|
||||
if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right)
|
||||
return false;
|
||||
|
||||
// Eat mouse-up events
|
||||
if (mi.Event != MouseInputEvent.Down)
|
||||
return true;
|
||||
|
||||
return HandleEvent(icon, mi.Button == MouseButton.Left);
|
||||
}
|
||||
|
||||
bool HandleEvent(ProductionIcon icon, bool isLeftClick)
|
||||
{
|
||||
var actor = World.Map.Rules.Actors[icon.Name];
|
||||
var first = icon.Queued.FirstOrDefault();
|
||||
|
||||
if (mi.Button == MouseButton.Left)
|
||||
if (isLeftClick)
|
||||
{
|
||||
// Pick up a completed building
|
||||
if (first != null && first.Done && actor.Traits.Contains<BuildingInfo>())
|
||||
@@ -145,7 +162,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
else
|
||||
Sound.Play(DisabledTabClick);
|
||||
}
|
||||
else if (mi.Button == MouseButton.Right)
|
||||
else
|
||||
{
|
||||
// Hold/Cancel an existing item
|
||||
if (first != null)
|
||||
@@ -172,40 +189,66 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
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()
|
||||
{
|
||||
icons = new Dictionary<Rectangle, ProductionIcon>();
|
||||
if (CurrentQueue == null)
|
||||
{
|
||||
if (IconCount != 0)
|
||||
{
|
||||
OnIconCountChanged(IconCount, 0);
|
||||
IconCount = 0;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var allBuildables = CurrentQueue.AllItems().OrderBy(a => a.Traits.Get<BuildableInfo>().BuildPaletteOrder);
|
||||
var i = 0;
|
||||
|
||||
var oldIconCount = IconCount;
|
||||
IconCount = 0;
|
||||
|
||||
var rb = RenderBounds;
|
||||
foreach (var item in allBuildables)
|
||||
{
|
||||
var x = i % Columns;
|
||||
var y = i / Columns;
|
||||
var rect = new Rectangle(rb.X + x * 64 + 1, rb.Y + y * 48 + 1, 64, 48);
|
||||
var x = IconCount % Columns;
|
||||
var y = IconCount / Columns;
|
||||
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));
|
||||
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
||||
|
||||
var pi = new ProductionIcon()
|
||||
{
|
||||
Name = item.Name,
|
||||
Hotkey = item.Traits.Get<BuildableInfo>().Hotkey,
|
||||
Sprite = icon.Image,
|
||||
Pos = new float2(rect.Location),
|
||||
Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList(),
|
||||
};
|
||||
|
||||
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()
|
||||
{
|
||||
var iconSize = new float2(64, 48);
|
||||
var iconOffset = 0.5f * iconSize;
|
||||
var iconOffset = 0.5f * IconSize.ToFloat2() + IconSpriteOffset;
|
||||
|
||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||
timeOffset = iconOffset - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2;
|
||||
@@ -218,10 +261,6 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
|
||||
var buildableItems = CurrentQueue.BuildableItems();
|
||||
|
||||
// Background
|
||||
foreach (var rect in icons.Keys)
|
||||
WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1, 1, 1, 1));
|
||||
|
||||
// Icons
|
||||
foreach (var icon in icons.Values)
|
||||
{
|
||||
@@ -235,6 +274,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
() => (first.TotalTime - first.RemainingTime)
|
||||
* (clock.CurrentSequence.Length - 1) / first.TotalTime);
|
||||
clock.Tick();
|
||||
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, icon.Pos + iconOffset, worldRenderer);
|
||||
}
|
||||
else if (!buildableItems.Any(a => a.Name == icon.Name))
|
||||
@@ -16,7 +16,7 @@ using OpenRA.Graphics;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
public class ProductionTab
|
||||
{
|
||||
@@ -57,12 +57,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
}
|
||||
}
|
||||
|
||||
class ProductionTabsWidget : Widget
|
||||
public class ProductionTabsWidget : Widget
|
||||
{
|
||||
readonly World world;
|
||||
|
||||
public readonly string PaletteWidget = null;
|
||||
public readonly string TypesContainer = null;
|
||||
public readonly string BackgroundContainer = null;
|
||||
|
||||
public readonly int TabWidth = 30;
|
||||
public readonly int ArrowWidth = 20;
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
public class ProductionTypeButtonWidget : ButtonWidget
|
||||
{
|
||||
@@ -25,6 +25,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
public Func<bool> IsEnabled = () => true;
|
||||
public Action AfterOpen = () => { };
|
||||
public Action AfterClose = () => { };
|
||||
public Action<float> Animating = _ => {};
|
||||
|
||||
float radarMinimapHeight;
|
||||
int frame;
|
||||
@@ -227,6 +228,8 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
frame += enabled ? 1 : -1;
|
||||
radarMinimapHeight = float2.Lerp(0, 1, (float)frame / AnimationLength);
|
||||
|
||||
Animating(frame * 1f / AnimationLength);
|
||||
|
||||
// Update map rectangle for event handling
|
||||
var ro = RenderOrigin;
|
||||
mapRect = new Rectangle(previewOrigin.X + ro.X, previewOrigin.Y + ro.Y, mapRect.Width, mapRect.Height);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#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
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
@@ -16,17 +16,22 @@ using OpenRA.Graphics;
|
||||
using OpenRA.Mods.RA;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
public class SupportPowersWidget : Widget
|
||||
{
|
||||
[Translate] public readonly string ReadyText = "";
|
||||
[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 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 SupportPowerManager spm;
|
||||
@@ -67,12 +72,15 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
icons = new Dictionary<Rectangle, SupportPowerIcon>();
|
||||
var powers = spm.Powers.Values.Where(p => !p.Disabled);
|
||||
|
||||
var i = 0;
|
||||
var oldIconCount = IconCount;
|
||||
IconCount = 0;
|
||||
|
||||
var rb = RenderBounds;
|
||||
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);
|
||||
|
||||
var power = new SupportPowerIcon()
|
||||
{
|
||||
Power = p,
|
||||
@@ -81,26 +89,24 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
};
|
||||
|
||||
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()
|
||||
{
|
||||
var iconSize = new float2(64, 48);
|
||||
var iconOffset = 0.5f * iconSize;
|
||||
|
||||
var iconOffset = 0.5f * IconSize.ToFloat2() + IconSpriteOffset;
|
||||
overlayFont = Game.Renderer.Fonts["TinyBold"];
|
||||
|
||||
holdOffset = iconOffset - overlayFont.Measure(HoldText) / 2;
|
||||
readyOffset = iconOffset - overlayFont.Measure(ReadyText) / 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
|
||||
foreach (var p in icons.Values)
|
||||
{
|
||||
@@ -110,6 +116,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
clock.PlayFetchIndex("idle",
|
||||
() => (p.Power.TotalTime - p.Power.RemainingTime)
|
||||
* (clock.CurrentSequence.Length - 1) / p.Power.TotalTime);
|
||||
|
||||
clock.Tick();
|
||||
WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer);
|
||||
}
|
||||
@@ -140,14 +147,18 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
|
||||
public override void MouseEntered()
|
||||
{
|
||||
if (TooltipContainer == null) return;
|
||||
if (TooltipContainer == null)
|
||||
return;
|
||||
|
||||
tooltipContainer.Value.SetTooltip(TooltipTemplate,
|
||||
new WidgetArgs() { { "palette", this } });
|
||||
}
|
||||
|
||||
public override void MouseExited()
|
||||
{
|
||||
if (TooltipContainer == null) return;
|
||||
if (TooltipContainer == null)
|
||||
return;
|
||||
|
||||
tooltipContainer.Value.RemoveTooltip();
|
||||
}
|
||||
|
||||
@@ -157,7 +168,8 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
var icon = icons.Where(i => i.Key.Contains(mi.Location))
|
||||
.Select(i => i.Value).FirstOrDefault();
|
||||
TooltipPower = (icon != null) ? icon.Power : null;
|
||||
|
||||
TooltipPower = icon != null ? icon.Power : null;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -171,6 +183,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
if (!clicked.Power.Active)
|
||||
Sound.PlayToPlayer(spm.self.Owner, clicked.Power.Info.InsufficientPowerSound);
|
||||
|
||||
spm.Target(clicked.Power.Info.OrderName);
|
||||
}
|
||||
|
||||
@@ -99,16 +99,16 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9999996"
|
||||
inkscape:cx="278.36391"
|
||||
inkscape:cy="462.8318"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="468.95592"
|
||||
inkscape:cy="426.49296"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1624"
|
||||
inkscape:window-height="1006"
|
||||
inkscape:window-x="56"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-width="1381"
|
||||
inkscape:window-height="856"
|
||||
inkscape:window-x="59"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true">
|
||||
@@ -190,7 +190,7 @@
|
||||
id="guide3167" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="389.62502,401.06252"
|
||||
position="518,400.134"
|
||||
id="guide3995" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
@@ -201,7 +201,7 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
@@ -1393,11 +1393,11 @@
|
||||
sodipodi:cy="7.9116955"
|
||||
sodipodi:rx="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)" />
|
||||
<path
|
||||
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:rx="7.8141294"
|
||||
sodipodi:cy="7.9116955"
|
||||
@@ -1407,7 +1407,7 @@
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
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:rx="7.8141294"
|
||||
sodipodi:cy="7.9116955"
|
||||
@@ -1423,7 +1423,7 @@
|
||||
sodipodi:cy="7.9116955"
|
||||
sodipodi:rx="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)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
@@ -1433,11 +1433,11 @@
|
||||
sodipodi:cy="7.9116955"
|
||||
sodipodi:rx="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)" />
|
||||
<path
|
||||
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:rx="7.8141294"
|
||||
sodipodi:cy="7.9116955"
|
||||
@@ -1445,6 +1445,170 @@
|
||||
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"
|
||||
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
|
||||
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
|
||||
indicator-left: 416,48,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
|
||||
building: 384,0,16,16
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Container@CHEATS_PANEL:
|
||||
Logic: CheatsLogic
|
||||
Container@DEBUG_PANEL:
|
||||
Logic: DebugMenuLogic
|
||||
Width: PARENT_RIGHT
|
||||
Height: PARENT_BOTTOM
|
||||
Children:
|
||||
@@ -1,5 +1,5 @@
|
||||
Container@INGAME_ROOT:
|
||||
Logic: CncIngameChromeLogic
|
||||
Logic: LoadIngamePlayerOrObserverUILogic
|
||||
Children:
|
||||
LogicTicker@DISCONNECT_WATCHER:
|
||||
Logic: DisconnectWatcherLogic
|
||||
@@ -59,7 +59,8 @@ Container@INGAME_ROOT:
|
||||
|
||||
Container@OBSERVER_WIDGETS:
|
||||
Children:
|
||||
Button@OPTIONS_BUTTON:
|
||||
MenuButton@OPTIONS_BUTTON:
|
||||
Logic: OrderButtonsChromeLogic
|
||||
Key: escape
|
||||
X: WINDOW_RIGHT-202
|
||||
Y: 5
|
||||
@@ -182,12 +183,24 @@ Container@PLAYER_WIDGETS:
|
||||
WorldCommand:
|
||||
Width: WINDOW_RIGHT
|
||||
Height: WINDOW_BOTTOM
|
||||
SupportPowers:
|
||||
TooltipContainer: TOOLTIP_CONTAINER
|
||||
Container@SUPPORT_POWERS:
|
||||
Logic: SupportPowerBinLogic
|
||||
X: 10
|
||||
Y: 10
|
||||
ReadyText: Ready
|
||||
HoldText: On Hold
|
||||
Children:
|
||||
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:
|
||||
Logic: OrderButtonsChromeLogic
|
||||
X: WINDOW_RIGHT - 204
|
||||
@@ -196,7 +209,7 @@ Container@PLAYER_WIDGETS:
|
||||
Height: 240
|
||||
Background: panel-black
|
||||
Children:
|
||||
Button@OPTIONS_BUTTON:
|
||||
MenuButton@OPTIONS_BUTTON:
|
||||
Key: escape
|
||||
X: 22
|
||||
Y: 0-24
|
||||
@@ -258,12 +271,16 @@ Container@PLAYER_WIDGETS:
|
||||
Background: panel-gray
|
||||
Children:
|
||||
Radar@RADAR_MINIMAP:
|
||||
Logic: IngameRadarDisplayLogic
|
||||
X: 1
|
||||
Y: 1
|
||||
Width: PARENT_RIGHT-2
|
||||
Height: PARENT_BOTTOM-2
|
||||
WorldInteractionController: INTERACTION_CONTROLLER
|
||||
Children:
|
||||
LogicTicker@RADAR_TICKER:
|
||||
Background@POWERBAR_PANEL:
|
||||
Logic: IngamePowerBarLogic
|
||||
X: 4
|
||||
Y: 5
|
||||
Width: 10
|
||||
@@ -279,6 +296,7 @@ Container@PLAYER_WIDGETS:
|
||||
TooltipTemplate: SIMPLE_TOOLTIP
|
||||
IndicatorImage: indicator-left
|
||||
Background@SILOBAR_PANEL:
|
||||
Logic: IngameSiloBarLogic
|
||||
X: 180
|
||||
Y: 5
|
||||
Width: 10
|
||||
@@ -293,12 +311,14 @@ Container@PLAYER_WIDGETS:
|
||||
TooltipContainer: TOOLTIP_CONTAINER
|
||||
TooltipTemplate: SIMPLE_TOOLTIP
|
||||
IndicatorImage: indicator-right
|
||||
Label@CASH:
|
||||
LabelWithTooltip@CASH:
|
||||
Logic: IngameCashCounterLogic
|
||||
Y: 170
|
||||
Width: PARENT_RIGHT
|
||||
Height: 25
|
||||
Align: Center
|
||||
Font: Bold
|
||||
Text: ${0}
|
||||
Container@PRODUCTION_TYPES:
|
||||
X: 12
|
||||
Y: 197
|
||||
@@ -369,21 +389,29 @@ Container@PLAYER_WIDGETS:
|
||||
X: 7
|
||||
Y: 7
|
||||
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:
|
||||
Logic: ProductionTabsLogic
|
||||
PaletteWidget: PRODUCTION_PALETTE
|
||||
TypesContainer: PRODUCTION_TYPES
|
||||
BackgroundContainer: PRODUCTION_BACKGROUND
|
||||
X: WINDOW_RIGHT - 204
|
||||
Y: 268
|
||||
Width: 194
|
||||
Height: 20
|
||||
ProductionPalette@PRODUCTION_PALETTE:
|
||||
X: WINDOW_RIGHT - 204
|
||||
Y: 287
|
||||
TooltipContainer: TOOLTIP_CONTAINER
|
||||
ReadyText: Ready
|
||||
HoldText: On Hold
|
||||
|
||||
Background@FMVPLAYER:
|
||||
Width: WINDOW_RIGHT
|
||||
Height: WINDOW_BOTTOM
|
||||
|
||||
@@ -18,6 +18,7 @@ Background@BUTTON_TOOLTIP:
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
TextColor: 255,255,0
|
||||
Height: 23
|
||||
Font: Bold
|
||||
@@ -55,6 +56,11 @@ Background@PRODUCTION_TOOLTIP:
|
||||
X: 5
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
Font: Bold
|
||||
Label@REQUIRES:
|
||||
X: 5
|
||||
Y: 19
|
||||
@@ -67,21 +73,33 @@ Background@PRODUCTION_TOOLTIP:
|
||||
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: 24
|
||||
Width: 16
|
||||
ImageCollection: sidebar-bits
|
||||
ImageName: production-tooltip-time
|
||||
Label@TIME:
|
||||
Y: 19
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Image@POWER_ICON:
|
||||
Y: 44
|
||||
Width: 16
|
||||
ImageCollection: sidebar-bits
|
||||
ImageName: production-tooltip-power
|
||||
Label@POWER:
|
||||
Y: 39
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Label@TIME:
|
||||
Y: 39
|
||||
Height: 23
|
||||
Font: Bold
|
||||
|
||||
Background@SUPPORT_POWER_TOOLTIP:
|
||||
Logic: SupportPowerTooltipLogic
|
||||
|
||||
@@ -88,11 +88,11 @@ ChromeLayout:
|
||||
mods/cnc/chrome/replaybrowser.yaml
|
||||
mods/cnc/chrome/ingame.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/settings.yaml
|
||||
mods/cnc/chrome/credits.yaml
|
||||
mods/cnc/chrome/cheats.yaml
|
||||
mods/cnc/chrome/dialogs.yaml
|
||||
mods/cnc/chrome/objectives.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:
|
||||
Children:
|
||||
Button@INGAME_STATS_BUTTON:
|
||||
Button@OBSERVER_STATS_BUTTON:
|
||||
X: 162
|
||||
Y: 0
|
||||
Width: 160
|
||||
|
||||
@@ -11,12 +11,12 @@ Container@PLAYER_WIDGETS:
|
||||
Text: Diplomacy (F1)
|
||||
Font: Bold
|
||||
Key: f1
|
||||
Button@CHEATS_BUTTON:
|
||||
Button@INGAME_DEBUG_BUTTON:
|
||||
X: 324
|
||||
Y: 0
|
||||
Width: 160
|
||||
Height: 25
|
||||
Text: Cheats (F2)
|
||||
Text: Debug (F2)
|
||||
Visible: false
|
||||
Font: Bold
|
||||
Key: f2
|
||||
|
||||
@@ -20,6 +20,7 @@ Background@BUTTON_TOOLTIP:
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
Y: 3
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
|
||||
@@ -65,6 +65,7 @@ ChromeLayout:
|
||||
mods/d2k/chrome/ingame-observer.yaml
|
||||
mods/ra/chrome/ingame-observerstats.yaml
|
||||
mods/d2k/chrome/ingame-player.yaml
|
||||
mods/ra/chrome/ingame-debug.yaml
|
||||
mods/d2k/chrome/mainmenu.yaml
|
||||
mods/ra/chrome/settings.yaml
|
||||
mods/ra/chrome/credits.yaml
|
||||
@@ -80,7 +81,6 @@ ChromeLayout:
|
||||
mods/ra/chrome/directconnect.yaml
|
||||
mods/ra/chrome/replaybrowser.yaml
|
||||
mods/d2k/chrome/dropdowns.yaml
|
||||
mods/ra/chrome/cheats.yaml
|
||||
mods/ra/chrome/musicplayer.yaml
|
||||
mods/d2k/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
|
||||
@@ -1,118 +1,94 @@
|
||||
chrome-allies: chrome-allies.png
|
||||
specialbin-top: 0,0,30,51
|
||||
specialbin-middle: 0,51,30,51
|
||||
specialbin-bottom: 0,153,30,39
|
||||
moneybin: 192,0,320,31
|
||||
radar: 297,31,210,222
|
||||
tooltip-bg: 0,288,272,136
|
||||
sidebar-allies: chrome.png
|
||||
background-top: 0,167,238,290
|
||||
background-iconrow: 0,457,238,47
|
||||
background-bottom: 0,504,238,8
|
||||
background-supportoverlay: 184,118,64,48
|
||||
|
||||
power-allies: chrome-allies.png
|
||||
power-indicator: 187,4,4,7
|
||||
sidebar-button-allies: chrome.png
|
||||
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
|
||||
top: 297,288,201,9
|
||||
dock-top: 498,274,14,23
|
||||
bottom: 297,489,201,9
|
||||
dock-bottom: 498,489,14,23
|
||||
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
|
||||
sidebar-soviet: chrome.png
|
||||
background-top: 274,167,238,290
|
||||
background-iconrow: 274,457,238,47
|
||||
background-bottom: 274,504,238,8
|
||||
background-supportoverlay: 249,118,64,48
|
||||
|
||||
digits-allies: chrome-allies.png
|
||||
0: 32,0,13,17
|
||||
1: 45,0,13,17
|
||||
2: 58,0,13,17
|
||||
3: 71,0,13,17
|
||||
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
|
||||
sidebar-button-soviet: chrome.png
|
||||
background: 0,28,28,28
|
||||
sidebar-button-soviet-hover: chrome.png
|
||||
background: 0,0,28,28
|
||||
sidebar-button-soviet-pressed: chrome.png
|
||||
background: 0,28,28,28
|
||||
sidebar-button-soviet-highlighted: chrome.png
|
||||
background: 28,28,28,28
|
||||
sidebar-button-soviet-highlighted-hover: chrome.png
|
||||
background: 28,0,28,28
|
||||
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
|
||||
specialbin-top: 0,0,30,51
|
||||
specialbin-middle: 0,51,30,51
|
||||
specialbin-bottom: 0,153,30,39
|
||||
moneybin: 192,0,320,31
|
||||
radar: 297,31,210,222
|
||||
tooltip-bg: 0,288,272,136
|
||||
sidebar-bits: chrome.png
|
||||
production-tooltip-time: 416, 80, 16, 16
|
||||
production-tooltip-power: 432, 80, 16, 16
|
||||
production-tooltip-cost: 448, 80, 16, 16
|
||||
production-iconoverlay: 314,118,238,48
|
||||
|
||||
power-soviet: chrome-soviet.png
|
||||
power-indicator: 187,4,4,7
|
||||
production-icons: chrome.png
|
||||
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
|
||||
top: 297,288,201,9
|
||||
dock-top: 498,274,14,23
|
||||
bottom: 297,489,201,9
|
||||
dock-bottom: 498,489,14,23
|
||||
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-soviet: chrome-soviet.png
|
||||
0: 32,0,13,17
|
||||
1: 45,0,13,17
|
||||
2: 58,0,13,17
|
||||
3: 71,0,13,17
|
||||
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
|
||||
order-icons: chrome.png
|
||||
options: 480,0,16,16
|
||||
options-disabled: 480,16,16,16
|
||||
options-active: 480,32,16,16
|
||||
diplomacy: 464,48,16,16
|
||||
diplomacy-disabled: 464,64,16,16
|
||||
diplomacy-active: 464,80,16,16
|
||||
sell: 496,0,16,16
|
||||
sell-disabled: 496,16,16,16
|
||||
sell-active: 496,32,16,16
|
||||
repair: 384,48,16,16
|
||||
repair-disabled: 384,64,16,16
|
||||
repair-active: 384,80,16,16
|
||||
beacon: 400,48,16,16
|
||||
beacon-disabled: 400,64,16,16
|
||||
beacon-active: 400,80,16,16
|
||||
power: 480,48,16,16
|
||||
power-disabled: 480,64,16,16
|
||||
power-active: 480,80,16,16
|
||||
|
||||
# Used for the menu
|
||||
dialog: dialog.png
|
||||
@@ -175,20 +151,6 @@ strategic: strategic.png
|
||||
enemy_owned: 32,32,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
|
||||
allies: 30,112,30,15
|
||||
soviet: 0,112,30,15
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
Background@CHEATS_PANEL:
|
||||
Logic: CheatsLogic
|
||||
Background@INGAME_DEBUG_BG:
|
||||
Logic: DebugMenuLogic
|
||||
X: (WINDOW_RIGHT - WIDTH)/2
|
||||
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width: 350
|
||||
Height: 475
|
||||
Visible: false
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X: (PARENT_RIGHT - WIDTH)/2
|
||||
Y: 20
|
||||
Width: 250
|
||||
Height: 25
|
||||
Text: Cheats
|
||||
Text: Debug Options
|
||||
Align: Center
|
||||
Font: Bold
|
||||
Checkbox@DISABLE_SHROUD:
|
||||
@@ -107,4 +106,5 @@ Background@CHEATS_PANEL:
|
||||
Height: 25
|
||||
Text: Close
|
||||
Key: escape
|
||||
Font: Bold
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
Background@DIPLOMACY:
|
||||
Background@INGAME_DIPLOMACY_BG:
|
||||
Logic: DiplomacyLogic
|
||||
X: 25
|
||||
Y: 50
|
||||
X: (WINDOW_RIGHT - WIDTH)/2
|
||||
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width: 490
|
||||
Height: 300
|
||||
Visible: false
|
||||
Height: 355
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X: (PARENT_RIGHT - WIDTH)/2
|
||||
@@ -44,7 +43,7 @@ Background@DIPLOMACY:
|
||||
X: 20
|
||||
Y: 67
|
||||
Width: PARENT_RIGHT-40
|
||||
Height: PARENT_BOTTOM-87
|
||||
Height: PARENT_BOTTOM-87-35
|
||||
ItemSpacing: 5
|
||||
Children:
|
||||
ScrollItem@TEAM_TEMPLATE:
|
||||
@@ -82,3 +81,11 @@ Background@DIPLOMACY:
|
||||
Width: 100
|
||||
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
|
||||
Height: 295
|
||||
Logic: IngameMenuLogic
|
||||
Visible: false
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X: (PARENT_RIGHT - WIDTH)/2
|
||||
|
||||
@@ -1,6 +1,40 @@
|
||||
Container@OBSERVER_WIDGETS:
|
||||
Logic: OrderButtonsChromeLogic
|
||||
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
|
||||
Y: 0
|
||||
Width: 160
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
Container@OBSERVER_STATS:
|
||||
Background@INGAME_OBSERVERSTATS_BG:
|
||||
Logic: ObserverStatsLogic
|
||||
X: 25
|
||||
Y: 50
|
||||
Width: 950
|
||||
Height: 500
|
||||
Visible: false
|
||||
Background: dialog
|
||||
Children:
|
||||
Background@BACKGROUND:
|
||||
Container@BACKGROUND:
|
||||
Width: PARENT_RIGHT
|
||||
Height: PARENT_BOTTOM
|
||||
Background: dialog
|
||||
Height: PARENT_BOTTOM - 35
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X: 0
|
||||
@@ -486,4 +485,11 @@ Container@OBSERVER_STATS:
|
||||
YAxisLabel: $
|
||||
LabelFont: TinyBold
|
||||
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:
|
||||
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@CHEATS_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
|
||||
@@ -29,87 +12,333 @@ Container@PLAYER_WIDGETS:
|
||||
Visible: false
|
||||
Font: Bold
|
||||
Key: f3
|
||||
SlidingContainer@INGAME_RADAR_BIN:
|
||||
X: WINDOW_RIGHT-215
|
||||
Y: 0
|
||||
OpenOffset: 0,29
|
||||
ClosedOffset: 0,-166
|
||||
AnimationLength: 15
|
||||
Container@SUPPORT_POWERS:
|
||||
Logic: SupportPowerBinLogic
|
||||
X: 10
|
||||
Y: 10
|
||||
Children:
|
||||
Image@RADAR_BIN_BG:
|
||||
ImageName: radar
|
||||
Radar@RADAR_MINIMAP:
|
||||
WorldInteractionController: INTERACTION_CONTROLLER
|
||||
SupportPowers@SUPPORT_PALETTE:
|
||||
IconSize: 62, 46
|
||||
IconSpriteOffset: -1, -1
|
||||
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
|
||||
Width: 192
|
||||
Height: 192
|
||||
ResourceBar@POWERBAR:
|
||||
X: 42
|
||||
Y: 205
|
||||
Width: 138
|
||||
Height: 5
|
||||
Y: 7
|
||||
Children:
|
||||
Button@BEACON_BUTTON:
|
||||
Logic: AddRaceSuffixLogic
|
||||
Width: 28
|
||||
Height: 28
|
||||
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
|
||||
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
|
||||
LabelWithTooltip@POWER:
|
||||
Logic: IngamePowerCounterLogic
|
||||
X: PARENT_RIGHT - WIDTH - 30
|
||||
Y: 262
|
||||
Width: 50
|
||||
Height: 22
|
||||
Align: Right
|
||||
Font: Bold
|
||||
Text: {0}
|
||||
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:
|
||||
TooltipTemplate: SIMPLE_TOOLTIP
|
||||
Container@SIDEBAR_PRODUCTION:
|
||||
Logic: ClassicProductionLogic
|
||||
X: WINDOW_RIGHT - 250
|
||||
Y: 280
|
||||
Width: 250
|
||||
Height: 500
|
||||
ReadyText: READY
|
||||
HoldText: ON HOLD
|
||||
RequiresText: Requires {0}
|
||||
|
||||
Y: 300
|
||||
Width: 238
|
||||
Height: 250
|
||||
Children:
|
||||
Container@PALETTE_BACKGROUND:
|
||||
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:
|
||||
Logic: IngameChromeLogic
|
||||
Logic: LoadIngamePlayerOrObserverUILogic
|
||||
Children:
|
||||
LogicTicker@DISCONNECT_WATCHER:
|
||||
Logic: DisconnectWatcherLogic
|
||||
@@ -19,41 +19,14 @@ Container@INGAME_ROOT:
|
||||
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
|
||||
Y: 10
|
||||
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:
|
||||
|
||||
@@ -20,6 +20,7 @@ Background@BUTTON_TOOLTIP:
|
||||
Height: 23
|
||||
Font: Bold
|
||||
Label@HOTKEY:
|
||||
Visible: false
|
||||
Y: 2
|
||||
Height: 23
|
||||
TextColor: 255,255,0
|
||||
@@ -107,3 +108,81 @@ Background@CLIENT_TOOLTIP:
|
||||
Height: 10
|
||||
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-observerstats.yaml
|
||||
mods/ra/chrome/ingame-player.yaml
|
||||
mods/ra/chrome/ingame-debug.yaml
|
||||
mods/ra/chrome/mainmenu.yaml
|
||||
mods/ra/chrome/settings.yaml
|
||||
mods/ra/chrome/credits.yaml
|
||||
@@ -94,7 +95,6 @@ ChromeLayout:
|
||||
mods/ra/chrome/directconnect.yaml
|
||||
mods/ra/chrome/replaybrowser.yaml
|
||||
mods/ra/chrome/dropdowns.yaml
|
||||
mods/ra/chrome/cheats.yaml
|
||||
mods/ra/chrome/musicplayer.yaml
|
||||
mods/ra/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
|
||||
@@ -39,9 +39,6 @@ Sounds:
|
||||
DisablePower: bleep11
|
||||
EnablePower: bleep12
|
||||
ChatLine: scold1
|
||||
BuildPaletteOpen: bleep13
|
||||
BuildPaletteClose: bleep13
|
||||
TabClick: ramenu1
|
||||
ClickSound:
|
||||
ClickSound: ramenu1
|
||||
ClickDisabledSound:
|
||||
Beacon: beepslct
|
||||
@@ -16,7 +16,8 @@ World:
|
||||
LightPaletteRotator:
|
||||
ExcludePalettes: terrain, effect
|
||||
BuildingInfluence:
|
||||
ChooseBuildTabOnSelect:
|
||||
ProductionQueueFromSelection:
|
||||
ProductionPaletteWidget: PRODUCTION_PALETTE
|
||||
BridgeLayer:
|
||||
Bridges: bridge1, bridge2, br1, br2, br3, sbridge1, sbridge2, sbridge3, sbridge4
|
||||
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:
|
||||
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-diplomacy.yaml
|
||||
mods/ra/chrome/ingame-fmvplayer.yaml
|
||||
@@ -107,7 +107,8 @@ ChromeLayout:
|
||||
mods/ra/chrome/ingame-objectives.yaml
|
||||
mods/ra/chrome/ingame-observer.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/settings.yaml
|
||||
mods/ra/chrome/credits.yaml
|
||||
@@ -123,7 +124,6 @@ ChromeLayout:
|
||||
mods/ra/chrome/directconnect.yaml
|
||||
mods/ra/chrome/replaybrowser.yaml
|
||||
mods/ra/chrome/dropdowns.yaml
|
||||
mods/ra/chrome/cheats.yaml
|
||||
mods/ra/chrome/musicplayer.yaml
|
||||
mods/ra/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
|
||||