luaimplementation: input.getmouse(): button fields are now bools. position fields are now in emulated screen coordinates. no, it doesn't quite work right for some cases of window sizing... so don't do that!
This commit is contained in:
parent
79f5a344e1
commit
e8a54aaeed
|
@ -2530,13 +2530,14 @@ namespace BizHawk.MultiClient
|
|||
public LuaTable input_getmouse()
|
||||
{
|
||||
LuaTable buttons = lua.NewTable();
|
||||
buttons["X"] = Control.MousePosition.X;
|
||||
buttons["Y"] = Control.MousePosition.Y;
|
||||
buttons[MouseButtons.Left.ToString()] = Control.MouseButtons & MouseButtons.Left;
|
||||
buttons[MouseButtons.Middle.ToString()] = Control.MouseButtons & MouseButtons.Middle;
|
||||
buttons[MouseButtons.Right.ToString()] = Control.MouseButtons & MouseButtons.Right;
|
||||
buttons[MouseButtons.XButton1.ToString()] = Control.MouseButtons & MouseButtons.XButton1;
|
||||
buttons[MouseButtons.XButton2.ToString()] = Control.MouseButtons & MouseButtons.XButton2;
|
||||
Point p = Global.RenderPanel.ScreenToScreen(Control.MousePosition);
|
||||
buttons["X"] = p.X;
|
||||
buttons["Y"] = p.Y;
|
||||
buttons[MouseButtons.Left.ToString()] = (Control.MouseButtons & MouseButtons.Left) != 0;
|
||||
buttons[MouseButtons.Middle.ToString()] = (Control.MouseButtons & MouseButtons.Middle) != 0;
|
||||
buttons[MouseButtons.Right.ToString()] = (Control.MouseButtons & MouseButtons.Right) != 0;
|
||||
buttons[MouseButtons.XButton1.ToString()] = (Control.MouseButtons & MouseButtons.XButton1) != 0;
|
||||
buttons[MouseButtons.XButton2.ToString()] = (Control.MouseButtons & MouseButtons.XButton2) != 0;
|
||||
return buttons;
|
||||
}
|
||||
|
||||
|
|
|
@ -133,6 +133,12 @@ namespace BizHawk.MultiClient
|
|||
void Present();
|
||||
bool Resized { get; set; }
|
||||
Size NativeSize { get; }
|
||||
/// <summary>
|
||||
/// convert coordinates
|
||||
/// </summary>
|
||||
/// <param name="p">desktop coordinates</param>
|
||||
/// <returns>ivideoprovider coordinates</returns>
|
||||
Point ScreenToScreen(Point p);
|
||||
}
|
||||
|
||||
public class SysdrawingRenderPanel : IRenderer, IBlitter
|
||||
|
@ -227,6 +233,10 @@ namespace BizHawk.MultiClient
|
|||
else
|
||||
g.DrawImage(surface.PeekBitmap(), 0, 0, backingControl.Width, backingControl.Height);
|
||||
}
|
||||
if (!transparent)
|
||||
{
|
||||
lastsize = new Size(surface.Width, surface.Height);
|
||||
}
|
||||
}
|
||||
|
||||
public void FastRenderAndPresent(DisplaySurface surface)
|
||||
|
@ -252,6 +262,15 @@ namespace BizHawk.MultiClient
|
|||
AlertFont = new sysdrawingfont("Courier", 14, FontStyle.Bold, GraphicsUnit.Pixel);
|
||||
}
|
||||
RetainedViewportPanel backingControl;
|
||||
|
||||
Size lastsize = new Size(256, 192);
|
||||
public Point ScreenToScreen(Point p)
|
||||
{
|
||||
p = backingControl.PointToClient(p);
|
||||
Point ret = new Point(p.X * lastsize.Width / backingControl.Width,
|
||||
p.Y * lastsize.Height / backingControl.Height);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IBlitter
|
||||
|
@ -561,6 +580,14 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
}
|
||||
|
||||
public Point ScreenToScreen(Point p)
|
||||
{
|
||||
p = backingControl.PointToClient(p);
|
||||
Point ret = new Point(p.X * Texture.ImageWidth / backingControl.Width,
|
||||
p.Y * Texture.ImageHeight / backingControl.Height);
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue