using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace StarEngine.Core
{
    /// <summary>
    /// 入力機器のためのメソッドを提供します。
    /// </summary>
    public interface IInput
    {
        /// <summary>
        /// 押されているキーボードのキーの配列を取得します。
        /// </summary>
        /// <returns>Keys 列挙型の配列。</returns>
        Keys[] GetPressedKeyboardKeys(int duration, int delay, int interval);

        /// <summary>
        /// 押されているゲームパッドのボタン番号の配列を取得します。
        /// </summary>
        /// <param name="deviceNumber">デバイス番号。</param>
        /// <returns>ボタン番号の配列。</returns>
        int[] GetPressedGamePadButtons(int deviceNumber, int duration, int delay, int interval);

        /// <summary>
        /// 押されているゲームパッドの方向キーの配列を取得します。
        /// </summary>
        /// <param name="deviceNumber">デバイス番号。</param>
        /// <returns>GamePadDirection 列挙型。</returns>
        GamePadDirections GetPressedGamePadDirections(int deviceNumber, int duration, int delay, int interval);

        /// <summary>
        /// 有効なゲームパッド数を取得します。
        /// </summary>
        int GamePadCount { get; }

        /// <summary>
        /// 押されているマウスのボタンを取得します。
        /// </summary>
        MouseButtons GetPressedMouseButtons(int duration, int delay, int interval);

        /// <summary>
        /// マウスカーソルの座標を取得します。
        /// </summary>
        Point MouseLocation { get; }
    }
}
