// // Lol Engine // // Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://sam.zoy.org/projects/COPYING.WTFPL for more details. // #if defined HAVE_CONFIG_H # include "config.h" #endif #include <cstdlib> #include <cmath> #include "core.h" namespace lol { /* * Stick implementation class */ static class StickData { friend class Stick; public: StickData() { } private: /* First element is the remap target */ Array<int, float> m_axes; Array<int, int> m_buttons; } stickdata; /* * Public Stick class */ Stick::Stick() : m_data(new StickData()) { } Stick::~Stick() { delete m_data; } void Stick::SetAxisCount(int n) { m_data->m_axes.Empty(); for (int i = 0; i < n; i++) m_data->m_axes.Push(i, 0.f); } void Stick::SetButtonCount(int n) { m_data->m_buttons.Empty(); for (int i = 0; i < n; i++) m_data->m_buttons.Push(i, 0); } void Stick::SetAxis(int n, float val) { m_data->m_axes[m_data->m_axes[n].m1].m2 = val; } void Stick::SetButton(int n, int val) { m_data->m_buttons[m_data->m_buttons[n].m1].m2 = val; } void Stick::RemapAxis(int src, int dst) { m_data->m_axes[src].m1 = dst; } void Stick::RemapButton(int src, int dst) { m_data->m_buttons[src].m1 = dst; } int Stick::GetAxisCount() { return m_data->m_axes.Count(); } int Stick::GetButtonCount() { return m_data->m_buttons.Count(); } float Stick::GetAxis(int n) { return m_data->m_axes[n].m2; } int Stick::GetButton(int n) { return m_data->m_buttons[n].m2; } } /* namespace lol */