/* * 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 { /** * 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 the mouse X position * * Returns: * Current mouse left position, relative to owner window */ int getMouseX() { return sfInput_GetMouseX(m_ptr); } /** * Get the mouse Y position * * Returns: * Current mouse top position, relative to owner window * */ int getMouseY() { return sfInput_GetMouseY(m_ptr); } /** * 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); } this(void* input) { super(input, true); } override void dispose() { // nothing to do } private: // External ==================================================================== static extern (C) { int function(void*, KeyCode) sfInput_IsKeyDown; int function(void*, MouseButtons) sfInput_IsMouseButtonDown; int function(void*, uint, uint) sfInput_IsJoystickButtonDown; int function(void*) sfInput_GetMouseX; int function(void*) sfInput_GetMouseY; float function(void*, uint, JoyAxis) sfInput_GetJoystickAxis; } static this() { debug DllLoader dll = DllLoader.load("csfml-window-d"); else DllLoader dll = DllLoader.load("csfml-window"); mixin(loadFromSharedLib("sfInput_IsKeyDown")); mixin(loadFromSharedLib("sfInput_IsMouseButtonDown")); mixin(loadFromSharedLib("sfInput_IsJoystickButtonDown")); mixin(loadFromSharedLib("sfInput_GetMouseX")); mixin(loadFromSharedLib("sfInput_GetMouseY")); mixin(loadFromSharedLib("sfInput_GetJoystickAxis")); } }