Make UI cursors configurable.

This commit is contained in:
Matthias Mailänder
2020-10-18 18:37:04 +02:00
committed by Paul Chote
parent 96c4554644
commit e7cfd2765c
7 changed files with 28 additions and 5 deletions

View File

@@ -190,7 +190,7 @@ namespace OpenRA
OrderManager.LastTickTime = RunTime;
OrderManager.StartGame();
worldRenderer.RefreshPalette();
Cursor.SetCursor("default");
Cursor.SetCursor(ChromeMetrics.Get<string>("DefaultCursor"));
// Now loading is completed, now is the ideal time to run a GC and compact the LOH.
// - All the temporary garbage created during loading can be collected.

View File

@@ -13,11 +13,15 @@ using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Traits;
using OpenRA.Widgets;
namespace OpenRA.Orders
{
public class UnitOrderGenerator : IOrderGenerator
{
readonly string worldSelectCursor = ChromeMetrics.Get<string>("WorldSelectCursor");
readonly string worldDefaultCursor = ChromeMetrics.Get<string>("WorldDefaultCursor");
static Target TargetForInput(World world, CPos cell, int2 worldPixel, MouseInput mi)
{
var actor = world.ScreenMap.ActorsAtMouse(mi)
@@ -85,7 +89,7 @@ namespace OpenRA.Orders
(mi.Modifiers.HasModifier(Modifiers.Shift) || !world.Selection.Actors.Any());
}
return useSelect ? "select" : "default";
return useSelect ? worldSelectCursor : worldDefaultCursor;
}
public void Deactivate() { }

View File

@@ -167,6 +167,8 @@ namespace OpenRA.Widgets
public abstract class Widget
{
string defaultCursor = null;
public readonly List<Widget> Children = new List<Widget>();
// Info defined in YAML
@@ -235,6 +237,8 @@ namespace OpenRA.Widgets
public virtual void Initialize(WidgetArgs args)
{
defaultCursor = ChromeMetrics.Get<string>("DefaultCursor");
// Parse the YAML equations to find the widget bounds
var parentBounds = (Parent == null)
? new Rectangle(0, 0, Game.Renderer.Resolution.Width, Game.Renderer.Resolution.Height)
@@ -347,7 +351,7 @@ namespace OpenRA.Widgets
Ui.KeyboardFocusWidget = null;
}
public virtual string GetCursor(int2 pos) { return "default"; }
public virtual string GetCursor(int2 pos) { return defaultCursor; }
public string GetCursorOuter(int2 pos)
{
// Is the cursor on top of us?

View File

@@ -16,6 +16,7 @@ using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives;
using OpenRA.Traits;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Orders
{
@@ -38,6 +39,8 @@ namespace OpenRA.Mods.Common.Orders
public class PlaceBuildingOrderGenerator : IOrderGenerator
{
readonly string worldDefaultCursor = ChromeMetrics.Get<string>("WorldDefaultCursor");
class VariantWrapper
{
public readonly ActorInfo ActorInfo;
@@ -288,7 +291,10 @@ namespace OpenRA.Mods.Common.Orders
return preview != null ? preview.RenderAnnotations(wr, TopLeft) : Enumerable.Empty<IRenderable>();
}
string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { return "default"; }
string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{
return worldDefaultCursor;
}
bool IOrderGenerator.HandleKeyPress(KeyInput e)
{

View File

@@ -68,6 +68,8 @@ namespace OpenRA.Mods.Common.Widgets
public Action OnDoubleClick = () => { };
public Action<KeyInput> OnKeyPress = _ => { };
public string Cursor = ChromeMetrics.Get<string>("ButtonCursor");
protected readonly Ruleset ModRules;
[ObjectCreator.UseCtor]
@@ -221,6 +223,8 @@ namespace OpenRA.Mods.Common.Widgets
tooltipContainer.Value.RemoveTooltip();
}
public override string GetCursor(int2 pos) { return Cursor; }
public override int2 ChildOrigin
{
get

View File

@@ -38,6 +38,7 @@ namespace OpenRA.Mods.Common.Widgets
readonly int cellWidth;
readonly int previewWidth;
readonly int previewHeight;
readonly string worldDefaultCursor = ChromeMetrics.Get<string>("WorldDefaultCursor");
float radarMinimapHeight;
int frame;
@@ -283,7 +284,7 @@ namespace OpenRA.Mods.Common.Widgets
var cursor = world.OrderGenerator.GetCursor(world, cell, worldPixel, mi);
if (cursor == null)
return "default";
return worldDefaultCursor;
return Game.ModData.CursorProvider.HasCursorSequence(cursor + "-minimap") ? cursor + "-minimap" : cursor;
}

View File

@@ -54,3 +54,7 @@ Metrics:
NormalSelectionColor: FFFFFF
AltSelectionColor: 00FFFF
CtrlSelectionColor: FFFF00
ButtonCursor: default
DefaultCursor: default
WorldSelectCursor: select
WorldDefaultCursor: default