From f9696971ad64e13c455327f073906cfc55f7809c Mon Sep 17 00:00:00 2001 From: Maarten ter Huurne Date: Sun, 23 Oct 2011 07:49:43 +0200 Subject: [PATCH] InputManager: re-layouted code. I don't really care for tabs vs spaces, but it's impractical to use tabs in one source file and spaces in another. --- src/inputmanager.cpp | 233 +++++++++++++++++++++---------------------- src/inputmanager.h | 61 +++++------ 2 files changed, 147 insertions(+), 147 deletions(-) diff --git a/src/inputmanager.cpp b/src/inputmanager.cpp index b47b26f..0b2fe49 100644 --- a/src/inputmanager.cpp +++ b/src/inputmanager.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2006 by Massimiliano Torromeo * - * massimiliano.torromeo@gmail.com * + * Copyright (C) 2006 by Massimiliano Torromeo * + * massimiliano.torromeo@gmail.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -29,161 +29,160 @@ static SDL_Joystick *joystick; void InputManager::init(const string &conffile) { - if (!readConfFile(conffile)) - ERROR("InputManager initialization from config file failed.\n"); + if (!readConfFile(conffile)) { + ERROR("InputManager initialization from config file failed.\n"); + } } - InputManager::InputManager() { - initJoystick(); + initJoystick(); } - InputManager::~InputManager() { - if (SDL_NumJoysticks() > 0) { - SDL_JoystickClose(joystick); - } + if (SDL_NumJoysticks() > 0) { + SDL_JoystickClose(joystick); + } } - void InputManager::initJoystick() { - if (SDL_NumJoysticks() > 0) { - joystick = SDL_JoystickOpen(0); - } + if (SDL_NumJoysticks() > 0) { + joystick = SDL_JoystickOpen(0); + } } - bool InputManager::readConfFile(const string &conffile) { - if (!fileExists(conffile)) return false; + if (!fileExists(conffile)) { + return false; + } - ifstream inf(conffile.c_str(), ios_base::in); - if (!(inf.is_open())) - return false; + ifstream inf(conffile.c_str(), ios_base::in); + if (!(inf.is_open())) { + return false; + } - string line, name, source; - string::size_type pos; - buttontype_t button; + string line, name, source; + string::size_type pos; + buttontype_t button; - while(getline(inf, line, '\n')) { - pos = line.find("="); - name = trim(line.substr(0,pos)); - line = trim(line.substr(pos+1,line.length())); + while(getline(inf, line, '\n')) { + pos = line.find("="); + name = trim(line.substr(0,pos)); + line = trim(line.substr(pos+1,line.length())); - if (name == "up") button = UP; - else if (name == "down") button = DOWN; - else if (name == "left") button = LEFT; - else if (name == "right") button = RIGHT; - else if (name == "accept") button = ACCEPT; - else if (name == "cancel") button = CANCEL; - else if (name == "clear") button = CLEAR; - else if (name == "manual") button = MANUAL; - else if (name == "altleft") button = ALTLEFT; - else if (name == "altright") button = ALTRIGHT; - else if (name == "menu") button = MENU; - else if (name == "settings") button = SETTINGS; - else if (name == "volup") button = VOLUP; - else if (name == "voldown") button = VOLDOWN; - else if (name == "power") button = POWER; - else if (name == "lock") button = LOCK; - else return false; + if (name == "up") button = UP; + else if (name == "down") button = DOWN; + else if (name == "left") button = LEFT; + else if (name == "right") button = RIGHT; + else if (name == "accept") button = ACCEPT; + else if (name == "cancel") button = CANCEL; + else if (name == "clear") button = CLEAR; + else if (name == "manual") button = MANUAL; + else if (name == "altleft") button = ALTLEFT; + else if (name == "altright") button = ALTRIGHT; + else if (name == "menu") button = MENU; + else if (name == "settings") button = SETTINGS; + else if (name == "volup") button = VOLUP; + else if (name == "voldown") button = VOLDOWN; + else if (name == "power") button = POWER; + else if (name == "lock") button = LOCK; + else return false; - pos = line.find(","); - source = trim(line.substr(0,pos)); - line = trim(line.substr(pos+1, line.length())); + pos = line.find(","); + source = trim(line.substr(0,pos)); + line = trim(line.substr(pos+1, line.length())); - if (source == "keyboard") ButtonMap[button].source = KEYBOARD; - else if (source == "joystick") ButtonMap[button].source = JOYSTICK; - else return false; + if (source == "keyboard") ButtonMap[button].source = KEYBOARD; + else if (source == "joystick") ButtonMap[button].source = JOYSTICK; + else return false; - ButtonMap[button].code = atoi(line.c_str()); - } + ButtonMap[button].code = atoi(line.c_str()); + } - inf.close(); - return true; + inf.close(); + return true; } - buttontype_t InputManager::waitForPressedButton() { - return waitForButton(PRESSED); + return waitForButton(PRESSED); } - buttontype_t InputManager::waitForReleasedButton() { - return waitForButton(RELEASED); + return waitForButton(RELEASED); } buttontype_t InputManager::waitForButton(enum state_e state) { - bevent_t event; - do { - waitForEvent(&event); - } while(event.state != state); - return event.button; + bevent_t event; + do { + waitForEvent(&event); + } while (event.state != state); + return event.button; } - void InputManager::waitForEvent(bevent_t *event) { - getEvent(event, true); + getEvent(event, true); } - bool InputManager::pollEvent(bevent_t *event) { - return getEvent(event, false); + return getEvent(event, false); } - bool InputManager::getEvent(bevent_t *bevent, bool wait) { - //TODO: when an event is processed, program a new event - //in some time, and when it occurs, do a key repeat + //TODO: when an event is processed, program a new event + //in some time, and when it occurs, do a key repeat - SDL_JoystickUpdate(); - SDL_Event event; + SDL_JoystickUpdate(); + SDL_Event event; + if (wait) { + SDL_WaitEvent(&event); + } else { + bevent->state = RELEASED; + if (!SDL_PollEvent(&event)) { + return false; + } + } - if (wait) - SDL_WaitEvent(&event); - else { - bevent->state = RELEASED; - if (!SDL_PollEvent(&event)) return false; - } + enum source_type_e source; + switch(event.type) { + case SDL_KEYDOWN: + bevent->state = PRESSED; + source = KEYBOARD; + break; + case SDL_KEYUP: + bevent->state = RELEASED; + source = KEYBOARD; + break; + case SDL_JOYBUTTONDOWN: + bevent->state = PRESSED; + source = JOYSTICK; + break; + case SDL_JOYBUTTONUP: + bevent->state = RELEASED; + source = JOYSTICK; + break; + default: + return false; + } - enum source_type_e source; + if (source == KEYBOARD) { + for (int i=0; ibutton = (buttontype_t)i; + break; + } + } + } else { + for (int i=0; ibutton = (buttontype_t)i; + break; + } + } + } + if (wait && PowerSaver::isRunning()) { + PowerSaver::getInstance()->resetScreenTimer(); + } - switch(event.type) { - case SDL_KEYDOWN: - bevent->state = PRESSED; - source = KEYBOARD; - break; - case SDL_KEYUP: - bevent->state = RELEASED; - source = KEYBOARD; - break; - case SDL_JOYBUTTONDOWN: - bevent->state = PRESSED; - source = JOYSTICK; - break; - case SDL_JOYBUTTONUP: - bevent->state = RELEASED; - source = JOYSTICK; - break; - default: - return false; - break; - } - - if (source == KEYBOARD) { - for (int i=0; ibutton = (buttontype_t)i; - break; - } - } else { - for (int i=0; ibutton = (buttontype_t)i; - break; - } - } - if ( wait && PowerSaver::isRunning()) - PowerSaver::getInstance()->resetScreenTimer(); - - return true; + return true; } diff --git a/src/inputmanager.h b/src/inputmanager.h index 2a99451..6563a2c 100644 --- a/src/inputmanager.h +++ b/src/inputmanager.h @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2006 by Massimiliano Torromeo * - * massimiliano.torromeo@gmail.com * + * Copyright (C) 2006 by Massimiliano Torromeo * + * massimiliano.torromeo@gmail.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -17,8 +17,9 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef NEWINPUT_H -#define NEWINPUT_H + +#ifndef INPUTMANAGER_H +#define INPUTMANAGER_H #include #include @@ -26,13 +27,13 @@ using namespace std; typedef enum buttontype_e { - UP, DOWN, LEFT, RIGHT, - ACCEPT, CANCEL, - CLEAR, MANUAL, - ALTLEFT, ALTRIGHT, - MENU, SETTINGS, - VOLUP, VOLDOWN, - POWER, LOCK + UP, DOWN, LEFT, RIGHT, + ACCEPT, CANCEL, + CLEAR, MANUAL, + ALTLEFT, ALTRIGHT, + MENU, SETTINGS, + VOLUP, VOLDOWN, + POWER, LOCK } buttontype_t; #define BUTTONTYPE_T_SIZE 16 @@ -40,34 +41,34 @@ enum source_type_e {KEYBOARD, JOYSTICK}; enum state_e {PRESSED, RELEASED}; typedef struct { - source_type_e source; - Uint32 code; + source_type_e source; + Uint32 code; } input_t; typedef struct { - buttontype_t button; - state_e state; + buttontype_t button; + state_e state; } bevent_t; class InputManager { -private: - input_t ButtonMap[BUTTONTYPE_T_SIZE]; - - bool readConfFile(const string &conffile); - void initJoystick(); - bool getEvent(bevent_t *bevent, bool wait); - buttontype_t waitForButton(enum state_e state); - public: - InputManager(); - ~InputManager(); + InputManager(); + ~InputManager(); - void init(const string &conffile); - void waitForEvent(bevent_t *event); - buttontype_t waitForPressedButton(); - buttontype_t waitForReleasedButton(); - bool pollEvent(bevent_t *event); + void init(const string &conffile); + void waitForEvent(bevent_t *event); + buttontype_t waitForPressedButton(); + buttontype_t waitForReleasedButton(); + bool pollEvent(bevent_t *event); + +private: + input_t ButtonMap[BUTTONTYPE_T_SIZE]; + + bool readConfFile(const string &conffile); + void initJoystick(); + bool getEvent(bevent_t *bevent, bool wait); + buttontype_t waitForButton(enum state_e state); }; #endif