Add a lint check for cursor definitions.

This commit is contained in:
Matthias Mailänder
2021-03-14 16:01:33 +01:00
committed by reaperrr
parent cefb2e7cc6
commit bbbed49f82
40 changed files with 211 additions and 28 deletions

View File

@@ -38,6 +38,18 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Can the actor be ordered to move in to shroud?")]
public readonly bool MoveIntoShroud = true;
[CursorReference]
public readonly string AttackMoveCursor = "attackmove";
[CursorReference]
public readonly string AttackMoveBlockedCursor = "attackmove-blocked";
[CursorReference]
public readonly string AssaultMoveCursor = "assaultmove";
[CursorReference]
public readonly string AssaultMoveBlockedCursor = "assaultmove-blocked";
public override object Create(ActorInitializer init) { return new AttackMove(init.Self, this); }
}
@@ -137,16 +149,31 @@ namespace OpenRA.Mods.Common.Traits
public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{
var prefix = mi.Modifiers.HasModifier(Modifiers.Ctrl) ? "assaultmove" : "attackmove";
var isAssaultMove = mi.Modifiers.HasModifier(Modifiers.Ctrl);
if (world.Map.Contains(cell) && subjects.Any())
var subject = subjects.FirstOrDefault();
if (subject.Actor != null)
{
var explored = subjects.First().Actor.Owner.Shroud.IsExplored(cell);
var blocked = !explored && subjects.Any(a => !a.Trait.Info.MoveIntoShroud);
return blocked ? prefix + "-blocked" : prefix;
var info = subject.Trait.Info;
if (world.Map.Contains(cell))
{
var explored = subject.Actor.Owner.Shroud.IsExplored(cell);
var cannotMove = subjects.FirstOrDefault(a => !a.Trait.Info.MoveIntoShroud).Trait;
var blocked = !explored && cannotMove != null;
if (isAssaultMove)
return blocked ? cannotMove.Info.AssaultMoveBlockedCursor : info.AssaultMoveCursor;
return blocked ? cannotMove.Info.AttackMoveBlockedCursor : info.AttackMoveCursor;
}
if (isAssaultMove)
return info.AssaultMoveBlockedCursor;
else
return info.AttackMoveBlockedCursor;
}
return prefix + "-blocked";
return null;
}
public override bool InputOverridesSelection(World world, int2 xy, MouseInput mi)