Remove PPos hacks from RadarWidget.

This commit is contained in:
Paul Chote
2013-09-20 21:56:40 +12:00
parent ad44610e5a
commit b335d67ce3
2 changed files with 9 additions and 4 deletions

View File

@@ -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)
{ {

View File

@@ -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)