Remove PPos hacks from RadarWidget.
This commit is contained in:
@@ -151,6 +151,7 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public PPos ViewToWorldPx(int2 loc) { return (PPos)(1f/Zoom*loc.ToFloat2() + Location).ToInt2(); }
|
public PPos ViewToWorldPx(int2 loc) { return (PPos)(1f/Zoom*loc.ToFloat2() + Location).ToInt2(); }
|
||||||
public PPos ViewToWorldPx(MouseInput mi) { return ViewToWorldPx(mi.Location); }
|
public PPos ViewToWorldPx(MouseInput mi) { return ViewToWorldPx(mi.Location); }
|
||||||
|
public int2 WorldToViewPx(PPos loc) { return (Zoom * (loc.ToFloat2() - Location)).ToInt2(); }
|
||||||
|
|
||||||
public void Center(float2 loc)
|
public void Center(float2 loc)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -42,11 +42,13 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
Sprite shroudSprite;
|
Sprite shroudSprite;
|
||||||
|
|
||||||
readonly World world;
|
readonly World world;
|
||||||
|
readonly WorldRenderer worldRenderer;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public RadarWidget(World world)
|
public RadarWidget(World world, WorldRenderer worldRenderer)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
this.worldRenderer = worldRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize(WidgetArgs args)
|
public override void Initialize(WidgetArgs args)
|
||||||
@@ -104,19 +106,21 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
if (!hasRadar)
|
if (!hasRadar)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
var loc = MinimapPixelToCell(mi.Location);
|
var cell = MinimapPixelToCell(mi.Location);
|
||||||
|
var pos = cell.CenterPosition;
|
||||||
if ((mi.Event == MouseInputEvent.Down || mi.Event == MouseInputEvent.Move) && mi.Button == MouseButton.Left)
|
if ((mi.Event == MouseInputEvent.Down || mi.Event == MouseInputEvent.Move) && mi.Button == MouseButton.Left)
|
||||||
Game.viewport.Center(loc.ToFloat2());
|
Game.viewport.Center(cell.ToFloat2());
|
||||||
|
|
||||||
if (mi.Event == MouseInputEvent.Down && mi.Button == MouseButton.Right)
|
if (mi.Event == MouseInputEvent.Down && mi.Button == MouseButton.Right)
|
||||||
{
|
{
|
||||||
// fake a mousedown/mouseup here
|
// fake a mousedown/mouseup here
|
||||||
|
var location = Game.viewport.WorldToViewPx(worldRenderer.ScreenPxPosition(pos));
|
||||||
var fakemi = new MouseInput
|
var fakemi = new MouseInput
|
||||||
{
|
{
|
||||||
Event = MouseInputEvent.Down,
|
Event = MouseInputEvent.Down,
|
||||||
Button = MouseButton.Right,
|
Button = MouseButton.Right,
|
||||||
Modifiers = mi.Modifiers,
|
Modifiers = mi.Modifiers,
|
||||||
Location = (loc.ToPPos().ToFloat2() - Game.viewport.Location).ToInt2()
|
Location = location
|
||||||
};
|
};
|
||||||
|
|
||||||
if (WorldInteractionController != null)
|
if (WorldInteractionController != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user