/* * DSFML - SFML Library wrapper for the D programming language. * Copyright (C) 2008 Julien Dagorn (sirjulio13@gmail.com) * Copyright (C) 2010 Andreas Hollandt * * This software is provided 'as-is', without any express or * implied warranty. In no event will the authors be held * liable for any damages arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute * it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; * you must not claim that you wrote the original software. * If you use this software in a product, an acknowledgment * in the product documentation would be appreciated but * is not required. * * 2. Altered source versions must be plainly marked as such, * and must not be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any * source distribution. */ module dsfml.window.input; import dsfml.system.common; import dsfml.window.event; /** * Input handles real-time input from keyboard and mouse. * Use it instead of events to handle continuous moves and more * game-friendly inputs */ class Input : DSFMLObject { public: // TODO: try to fix this, doesn't work with package this(SFMLClass input) { super(input, true); } override void dispose() { // nothing to do } public: /** * Get the state of a key * * Params: * key = Key to check * * Returns: * True if key is down, false if key is up */ bool isKeyDown(KeyCode key) { return cast(bool)sfInput_IsKeyDown(m_ptr, key); } /** * Get the state of a mouse button * * Params: * button = Button to check * * Returns: * True if button is down, false if button is up */ bool isMouseButtonDown(MouseButtons button) { return cast(bool)sfInput_IsMouseButtonDown(m_ptr, button); } /** * Get the state of a joystick button * * Params: * joyId = Identifier of the joystick to check (0 or 1) * button = Button to check * * Returns: * True if button is down, false if button is up */ bool isJoystickButtonDown(uint joyId, uint button) { return cast(bool)sfInput_IsJoystickButtonDown(m_ptr, joyId, button); } /** * Get a joystick axis position * * Params: * joyId = Identifier of the joystick to check (0 or 1) * axis = Axis to get * * Returns: * Current axis position, in the range [-100, 100] (except for POV, which is [0, 360]) */ float getJoystickAxis(uint joyId, JoyAxis axis) { return sfInput_GetJoystickAxis(m_ptr, joyId, axis); } @property { /** * Get the mouse X position * * Returns: * Current mouse left position, relative to owner window */ int mouseX() { return sfInput_GetMouseX(m_ptr); } /** * Get the mouse Y position * * Returns: * Current mouse top position, relative to owner window * */ int mouseY() { return sfInput_GetMouseY(m_ptr); } } private: // External ==================================================================== static extern (C) { int function(SFMLClass, KeyCode) sfInput_IsKeyDown; int function(SFMLClass, MouseButtons) sfInput_IsMouseButtonDown; int function(SFMLClass, uint, uint) sfInput_IsJoystickButtonDown; int function(SFMLClass) sfInput_GetMouseX; int function(SFMLClass) sfInput_GetMouseY; float function(SFMLClass, uint, JoyAxis) sfInput_GetJoystickAxis; } mixin(loadFromSharedLib2("csfml-window", "sfInput", "IsKeyDown", "IsMouseButtonDown", "IsJoystickButtonDown", "GetMouseX", "GetMouseY", "GetJoystickAxis")); }