using System;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using Microsoft.Samples.DirectX.UtilityToolkit;

namespace DXGfxLib
{
    public interface IInputHandler : IDisposable
    {
        Avatar CurrentAvatar { get; set; }
        void OnKeyDown(System.Windows.Forms.KeyEventArgs e);
        void OnKeyPress(System.Windows.Forms.KeyEventArgs e);
        void OnKeyUp(System.Windows.Forms.KeyEventArgs e);
        void OnMouseClick(System.Windows.Forms.MouseEventArgs e);
        void OnMouseDoubleClick(System.Windows.Forms.MouseEventArgs e);
        void OnMouseDown(System.Windows.Forms.MouseEventArgs e);
        void OnMouseMove(System.Windows.Forms.MouseEventArgs e);
        void OnMouseUp(System.Windows.Forms.MouseEventArgs e);
        void OnMouseWheel(System.Windows.Forms.MouseEventArgs e);
        bool HandleMessages(IntPtr hWnd, NativeMethods.WindowMessage msg, IntPtr wParam, IntPtr lParam);
        void WndProc(ref System.Windows.Forms.Message m);
        IntPtr OnMsgProc(IntPtr hWnd, NativeMethods.WindowMessage msg, IntPtr wParam, IntPtr lParam);
        void FrameMove(float elapsedTime);
    }
}
