[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r2753 - in branches/pingus_sdl: . data/controller src src/g
From: |
jsalmon3 |
Subject: |
[Pingus-CVS] r2753 - in branches/pingus_sdl: . data/controller src src/gui src/input src/input/axes src/input/buttons src/input/pointers src/input/scrollers |
Date: |
Wed, 18 Jul 2007 06:33:26 +0200 |
Author: jsalmon3
Date: 2007-07-18 06:32:38 +0200 (Wed, 18 Jul 2007)
New Revision: 2753
Modified:
branches/pingus_sdl/config.h
branches/pingus_sdl/data/controller/default.scm
branches/pingus_sdl/pingus.vcproj
branches/pingus_sdl/src/SConscript
branches/pingus_sdl/src/gui/component.hpp
branches/pingus_sdl/src/gui/input_box.cpp
branches/pingus_sdl/src/gui/input_box.hpp
branches/pingus_sdl/src/gui/screen_manager.cpp
branches/pingus_sdl/src/input/axes/button_axis.cpp
branches/pingus_sdl/src/input/axes/button_axis.hpp
branches/pingus_sdl/src/input/axes/inverted_axis.cpp
branches/pingus_sdl/src/input/axes/joystick_axis.cpp
branches/pingus_sdl/src/input/axes/mouse_axis.cpp
branches/pingus_sdl/src/input/axis_factory.cpp
branches/pingus_sdl/src/input/axis_factory.hpp
branches/pingus_sdl/src/input/button.hpp
branches/pingus_sdl/src/input/button_factory.cpp
branches/pingus_sdl/src/input/buttons/joystick_button.cpp
branches/pingus_sdl/src/input/buttons/key_button.cpp
branches/pingus_sdl/src/input/buttons/key_button.hpp
branches/pingus_sdl/src/input/buttons/mouse_button.cpp
branches/pingus_sdl/src/input/buttons/mouse_button.hpp
branches/pingus_sdl/src/input/buttons/multiple_button.cpp
branches/pingus_sdl/src/input/buttons/multiple_button.hpp
branches/pingus_sdl/src/input/controller.cpp
branches/pingus_sdl/src/input/controller.hpp
branches/pingus_sdl/src/input/event.hpp
branches/pingus_sdl/src/input/pointer.hpp
branches/pingus_sdl/src/input/pointer_factory.hpp
branches/pingus_sdl/src/input/pointers/axis_pointer.cpp
branches/pingus_sdl/src/input/pointers/axis_pointer.hpp
branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp
branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp
branches/pingus_sdl/src/input/scroller.hpp
branches/pingus_sdl/src/input/scroller_factory.cpp
branches/pingus_sdl/src/input/scroller_factory.hpp
branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp
branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp
branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp
branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp
Log:
Updated input code to work with SDL
Modified: branches/pingus_sdl/config.h
===================================================================
--- branches/pingus_sdl/config.h 2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/config.h 2007-07-18 04:32:38 UTC (rev 2753)
@@ -65,7 +65,11 @@
#define HAVE_UNISTD_H 1
/* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST
+#ifdef __CYGWIN__
+#define ICONV_CONST const
+#else
+#define ICONV_CONST
+#endif
/* Name of package */
#define PACKAGE "pingus"
Modified: branches/pingus_sdl/data/controller/default.scm
===================================================================
--- branches/pingus_sdl/data/controller/default.scm 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/data/controller/default.scm 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -4,11 +4,11 @@
(primary-button
(mouse-button
- (button 0)))
+ (button 1)))
(secondary-button
(mouse-button
- (button 2)))
+ (button 3)))
(pause-button
(key-button
Modified: branches/pingus_sdl/pingus.vcproj
===================================================================
--- branches/pingus_sdl/pingus.vcproj 2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/pingus.vcproj 2007-07-18 04:32:38 UTC (rev 2753)
@@ -122,7 +122,7 @@
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
+ DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -1414,6 +1414,10 @@
>
</File>
<File
+
RelativePath=".\src\input\axis_factory.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axis_factory.hpp"
>
</File>
@@ -1422,6 +1426,10 @@
>
</File>
<File
+
RelativePath=".\src\input\button_factory.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\button_factory.hpp"
>
</File>
@@ -1446,6 +1454,10 @@
>
</File>
<File
+
RelativePath=".\src\input\pointer_factory.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\pointer_factory.hpp"
>
</File>
@@ -1454,6 +1466,10 @@
>
</File>
<File
+
RelativePath=".\src\input\scroller_factory.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scroller_factory.hpp"
>
</File>
@@ -1461,6 +1477,10 @@
Name="axes"
>
<File
+
RelativePath=".\src\input\axes\button_axis.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axes\button_axis.hpp"
>
</File>
@@ -1469,18 +1489,34 @@
>
</File>
<File
+
RelativePath=".\src\input\axes\inverted_axis.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axes\inverted_axis.hpp"
>
</File>
<File
+
RelativePath=".\src\input\axes\joystick_axis.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axes\joystick_axis.hpp"
>
</File>
<File
+
RelativePath=".\src\input\axes\mouse_axis.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axes\mouse_axis.hpp"
>
</File>
<File
+
RelativePath=".\src\input\axes\multiple_axis.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\axes\multiple_axis.hpp"
>
</File>
@@ -1489,6 +1525,10 @@
Name="buttons"
>
<File
+
RelativePath=".\src\input\buttons\double_button.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\buttons\double_button.hpp"
>
</File>
@@ -1497,14 +1537,42 @@
>
</File>
<File
+
RelativePath=".\src\input\buttons\joystick_button.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\buttons\joystick_button.hpp"
>
</File>
<File
+
RelativePath=".\src\input\buttons\key_button.cpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\buttons\key_button.hpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\buttons\mouse_button.cpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\buttons\mouse_button.hpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\buttons\multiple_button.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\buttons\multiple_button.hpp"
>
</File>
<File
+
RelativePath=".\src\input\buttons\triple_button.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\buttons\triple_button.hpp"
>
</File>
@@ -1513,6 +1581,10 @@
Name="scrollers"
>
<File
+
RelativePath=".\src\input\scrollers\axis_scroller.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scrollers\axis_scroller.hpp"
>
</File>
@@ -1521,18 +1593,38 @@
>
</File>
<File
+
RelativePath=".\src\input\scrollers\inverted_scroller.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scrollers\inverted_scroller.hpp"
>
</File>
<File
+
RelativePath=".\src\input\scrollers\joystick_scroller.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scrollers\joystick_scroller.hpp"
>
</File>
<File
+
RelativePath=".\src\input\scrollers\mouse_scroller.cpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\scrollers\multiple_scroller.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scrollers\multiple_scroller.hpp"
>
</File>
<File
+
RelativePath=".\src\input\scrollers\pointer_scroller.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\scrollers\pointer_scroller.hpp"
>
</File>
@@ -1541,6 +1633,10 @@
Name="pointers"
>
<File
+
RelativePath=".\src\input\pointers\axis_pointer.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\pointers\axis_pointer.hpp"
>
</File>
@@ -1549,6 +1645,14 @@
>
</File>
<File
+
RelativePath=".\src\input\pointers\mouse_pointer.cpp"
+ >
+ </File>
+ <File
+
RelativePath=".\src\input\pointers\multiple_pointer.cpp"
+ >
+ </File>
+ <File
RelativePath=".\src\input\pointers\multiple_pointer.hpp"
>
</File>
Modified: branches/pingus_sdl/src/SConscript
===================================================================
--- branches/pingus_sdl/src/SConscript 2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/SConscript 2007-07-18 04:32:38 UTC (rev 2753)
@@ -26,6 +26,7 @@
sdl_env = Environment(CC = 'gcc',
CCFLAGS = ['-O2', '-Wall', '-Werror', '-g'])
+env['CCFLAGS'] += ['-I/usr/include/boost-1_33_1']
# env.Copy(LIBS = ['a', 'b'])
# FIXME: Make this configurable
@@ -173,30 +174,30 @@
'lisp/properties.cpp',
'lisp/writer.cpp',
-# # 'input/axes/button_axis.cpp',
-# # 'input/axes/inverted_axis.cpp',
-# # 'input/axes/joystick_axis.cpp',
-# # 'input/axes/multiple_axis.cpp',
-# # 'input/axis_factory.cpp',
-# # 'input/button_factory.cpp',
-# # 'input/buttons/double_button.cpp',
-# # 'input/buttons/joystick_button.cpp',
-# # 'input/buttons/key_button.cpp',
-# # 'input/buttons/mouse_button.cpp',
-# # 'input/buttons/multiple_button.cpp',
-# # 'input/buttons/triple_button.cpp',
+'input/axes/button_axis.cpp',
+'input/axes/inverted_axis.cpp',
+'input/axes/joystick_axis.cpp',
+'input/axes/multiple_axis.cpp',
+'input/axis_factory.cpp',
+'input/button_factory.cpp',
+'input/buttons/double_button.cpp',
+'input/buttons/joystick_button.cpp',
+'input/buttons/key_button.cpp',
+'input/buttons/mouse_button.cpp',
+'input/buttons/multiple_button.cpp',
+'input/buttons/triple_button.cpp',
'input/controller.cpp',
-# # 'input/pointer_factory.cpp',
-# # 'input/pointers/axis_pointer.cpp',
-# # 'input/pointers/mouse_pointer.cpp',
-# # 'input/pointers/multiple_pointer.cpp',
-# # 'input/scroller_factory.cpp',
-# # 'input/scrollers/axis_scroller.cpp',
-# # 'input/scrollers/inverted_scroller.cpp',
-# # 'input/scrollers/joystick_scroller.cpp',
-# # 'input/scrollers/mouse_scroller.cpp',
-# # 'input/scrollers/multiple_scroller.cpp',
-# # 'input/scrollers/pointer_scroller.cpp',
+'input/pointer_factory.cpp',
+'input/pointers/axis_pointer.cpp',
+'input/pointers/mouse_pointer.cpp',
+'input/pointers/multiple_pointer.cpp',
+'input/scroller_factory.cpp',
+'input/scrollers/axis_scroller.cpp',
+'input/scrollers/inverted_scroller.cpp',
+'input/scrollers/joystick_scroller.cpp',
+'input/scrollers/mouse_scroller.cpp',
+'input/scrollers/multiple_scroller.cpp',
+'input/scrollers/pointer_scroller.cpp',
'layer_manager.cpp',
'components/menu_button.cpp',
Modified: branches/pingus_sdl/src/gui/component.hpp
===================================================================
--- branches/pingus_sdl/src/gui/component.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/gui/component.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -75,9 +75,9 @@
coordinates */
virtual void on_pointer_move (int x, int y) { UNUSED_ARG(x); UNUSED_ARG(y); }
- /** Emitted whenever a keyboard character is pressed. Only certain
- components should implement this */
- virtual void on_key_pressed(const char c) { UNUSED_ARG(c); }
+ /** Emitted whenever a keyboard character is pressed. Only certain
+ components should implement this */
+ virtual void on_key_pressed(const unsigned short c) { UNUSED_ARG(c); }
// status functions for use in the update() function
/** return true if currently pressed */
Modified: branches/pingus_sdl/src/gui/input_box.cpp
===================================================================
--- branches/pingus_sdl/src/gui/input_box.cpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/gui/input_box.cpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -32,7 +32,7 @@
width(width_),
height((float)Fonts::pingus_small.get_height()),
is_locked(locked),
- label(label_)
+ label(label_)
{
}
@@ -48,9 +48,9 @@
// If there is text, draw it:
if (str != std::string())
gc.print_left(Fonts::pingus_small, pos.x + 10, pos.y,
shrink_string(str));
-
- if (label != std::string())
- gc.print_right(Fonts::pingus_small, pos.x, pos.y, label);
+
+ if (label != std::string())
+ gc.print_right(Fonts::pingus_small, pos.x, pos.y, label);
if (has_focus)
gc.draw_line(pos.x +
Fonts::pingus_small.get_size(shrink_string(str)).width + 12,
@@ -80,19 +80,23 @@
}
void
-InputBox::on_key_pressed(const char c)
+InputBox::on_key_pressed(const unsigned short c)
{
if (!is_locked)
{
// Verify input and escape out bad characters
if (c == 0x08) // backspace
+ {
str = str.substr(0, str.length()-1);
+ }
else if ((c > 0x2c && c < 0x3a) // - . / 0-9
|| (c > 0x40 && c < 0x5b) // capital letters
|| (c > 0x60 && c < 0x7b) // lowercase letters
- || (c == 0x7e || c == 0x5f) // ~ and _
- || c == 0x20) // space
- str += c;
+ || (c == 0x7e || c == 0x5f) // ~ and _
+ || c == 0x20) // space
+ {
+ str += (unsigned char)c;
+ }
}
}
Modified: branches/pingus_sdl/src/gui/input_box.hpp
===================================================================
--- branches/pingus_sdl/src/gui/input_box.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/gui/input_box.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -41,18 +41,18 @@
/** Shrink the string to fit in the box */
std::string shrink_string(const std::string& s) const;
- /** Optional label to display */
- std::string label;
+ /** Optional label to display */
+ std::string label;
public:
InputBox(float width_, Vector3f p, const std::string&
default_value = std::string(), bool locked = false,
- const std::string& label_ = std::string());
+ const std::string& label_ = std::string());
void set_string(const std::string& s) { str = s; }
std::string get_string() { return str; }
- void on_key_pressed(const char c);
+ void on_key_pressed(const unsigned short c);
/// GUI Component functions:
///
Modified: branches/pingus_sdl/src/gui/screen_manager.cpp
===================================================================
--- branches/pingus_sdl/src/gui/screen_manager.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/gui/screen_manager.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -48,7 +48,7 @@
Input::Controller* input_controller = 0;
if (controller_file.empty())
- input_controller = new
Input::Controller(path_manager.complete("controller/default.xml"));
+ input_controller = new
Input::Controller(path_manager.complete("controller/default.scm"));
else
input_controller = new Input::Controller(controller_file);
Input::Controller::set_current(input_controller);
Modified: branches/pingus_sdl/src/input/axes/button_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/button_axis.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/button_axis.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -23,7 +23,7 @@
namespace Input {
namespace Axes {
-ButtonAxis::ButtonAxis (float angle_, Button* button1_, Button* button2_) :
+ButtonAxis::ButtonAxis(float angle_, Button* button1_, Button* button2_) :
pos(0), angle(angle_), button1(button1_), button2(button2_)
{
if (angle < 0)
@@ -32,26 +32,26 @@
angle = static_cast<float>((static_cast<int>(angle) % 360) + 0);
}
-ButtonAxis::~ButtonAxis ()
+ButtonAxis::~ButtonAxis()
{
delete button1;
delete button2;
}
const float&
-ButtonAxis::get_pos () const
+ButtonAxis::get_pos() const
{
return pos;
}
const float&
-ButtonAxis::get_angle () const
+ButtonAxis::get_angle() const
{
return angle;
}
void
-ButtonAxis::update (float delta)
+ButtonAxis::update(float delta)
{
button1->update(delta);
button2->update(delta);
Modified: branches/pingus_sdl/src/input/axes/button_axis.hpp
===================================================================
--- branches/pingus_sdl/src/input/axes/button_axis.hpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/button_axis.hpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -44,16 +44,16 @@
public:
- ButtonAxis (float angle_, Button* button1_, Button* button2_);
- ~ButtonAxis ();
+ ButtonAxis(float angle_, Button* button1_, Button* button2_);
+ ~ButtonAxis();
- virtual const float& get_pos () const;
- virtual const float& get_angle () const;
+ virtual const float& get_pos() const;
+ virtual const float& get_angle() const;
- virtual void update (float delta);
+ virtual void update(float delta);
private:
- ButtonAxis (const ButtonAxis&);
+ ButtonAxis(const ButtonAxis&);
ButtonAxis& operator= (const ButtonAxis&);
};
Modified: branches/pingus_sdl/src/input/axes/inverted_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/inverted_axis.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/axes/inverted_axis.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -22,30 +22,30 @@
namespace Input {
namespace Axes {
-InvertedAxis::InvertedAxis (Axis* axis_) : axis(axis_)
+InvertedAxis::InvertedAxis(Axis* axis_) : axis(axis_)
{
angle = static_cast<float>((static_cast<int>(axis->get_angle()) + 180) %
360);
}
-InvertedAxis::~InvertedAxis ()
+InvertedAxis::~InvertedAxis()
{
delete axis;
}
const float&
-InvertedAxis::get_pos () const
+InvertedAxis::get_pos() const
{
return axis->get_pos();
}
const float&
-InvertedAxis::get_angle () const
+InvertedAxis::get_angle() const
{
return angle;
}
void
-InvertedAxis::update (float delta)
+InvertedAxis::update(float delta)
{
axis->update(delta);
}
Modified: branches/pingus_sdl/src/input/axes/joystick_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/joystick_axis.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/axes/joystick_axis.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,10 +17,6 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//#include <ClanLib/Display/input.h>
-#include <ClanLib/Display/input_device.h>
-#include <ClanLib/Display/joystick.h>
-//#include <ClanLib/Display/inputaxis.h>
#include "joystick_axis.hpp"
#include "../../pingus_error.hpp"
@@ -30,11 +26,13 @@
JoystickAxis::JoystickAxis(int id_, int axis_, float angle_)
: id(id_), axis(axis_), pos(0), angle(angle_)
{
+#if 0
if (id >= CL_Joystick::get_device_count())
PingusError::raise("JoystickAxis: Invalid joystick id");
if (axis > CL_Joystick::get_device(id).get_axis_count())
PingusError::raise("JoystickAxis: Invalid joystick axis id");
+#endif
if (angle < 0)
angle = float(static_cast<int>(angle) % 360) + 360;
@@ -57,7 +55,9 @@
void
JoystickAxis::update (float)
{
+#if 0
pos = CL_Joystick::get_device(id).get_axis(axis);
+#endif
}
} // namespace Axes
Modified: branches/pingus_sdl/src/input/axes/mouse_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/mouse_axis.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/mouse_axis.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -17,9 +17,6 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Display/Input/input.h>
-#include <ClanLib/Display/Input/inputdevice.h>
-#include <ClanLib/Display/Input/inputcursor.h>
#include "mouse_axis.hpp"
namespace Input {
@@ -29,10 +26,11 @@
MouseAxis::MouseAxis(int axis_, float angle_) : axis(axis_),
angle(angle_), pos(0), old_pos(0)
{
if (angle < 0)
- angle = (static_cast<int>(angle) % 360) + 360;
+ angle = (float)((static_cast<int>(angle) % 360) + 360);
else if (angle > 360)
- angle = static_cast<int>(angle) % 360;
+ angle = (float)(static_cast<int>(angle) % 360);
+#if 0
switch (axis)
{
case 0: old_pos = CL_Input::pointers[0]->get_cursor(0)->get_x();
@@ -41,6 +39,7 @@
break;
default: old_pos = 0;
}
+#endif
}
const float&
@@ -58,6 +57,7 @@
void
MouseAxis::update (float)
{
+#if 0
switch (axis)
{
case 0: if (old_pos !=
CL_Input::pointers[0]->get_cursor(0)->get_x())
@@ -85,6 +85,7 @@
break;
default: break; // do nothing
}
+#endif
}
}
Modified: branches/pingus_sdl/src/input/axis_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/axis_factory.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/axis_factory.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -51,7 +51,7 @@
return 0; // never reached
}
-Axis* AxisFactory::button_axis (FileReader reader)
+Axis* AxisFactory::button_axis(FileReader reader)
{
float angle;
if (!reader.read_float("angle", angle))
@@ -73,7 +73,7 @@
return new InvertedAxis(create(reader));
}
-Axis* AxisFactory::joystick_axis (FileReader reader)
+Axis* AxisFactory::joystick_axis(FileReader reader)
{
float angle;
if (!reader.read_float("angle", angle))
@@ -90,7 +90,7 @@
return new JoystickAxis(id, axis, angle);
}
-Axis* AxisFactory::multiple_axis (FileReader reader)
+Axis* AxisFactory::multiple_axis(FileReader reader)
{
std::vector<Axis*> axes;
Modified: branches/pingus_sdl/src/input/axis_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/axis_factory.hpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/axis_factory.hpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -29,17 +29,17 @@
class AxisFactory
{
private:
- static Axis* button_axis (FileReader reader);
- static Axis* inverted_axis (FileReader reader);
- static Axis* joystick_axis (FileReader reader);
- static Axis* multiple_axis (FileReader reader);
+ static Axis* button_axis(FileReader reader);
+ static Axis* inverted_axis(FileReader reader);
+ static Axis* joystick_axis(FileReader reader);
+ static Axis* multiple_axis(FileReader reader);
public:
- static Axis* create (FileReader reader);
+ static Axis* create(FileReader reader);
private:
- AxisFactory ();
- AxisFactory (const AxisFactory&);
+ AxisFactory();
+ AxisFactory(const AxisFactory&);
AxisFactory& operator= (const AxisFactory&);
};
Modified: branches/pingus_sdl/src/input/button.hpp
===================================================================
--- branches/pingus_sdl/src/input/button.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/input/button.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -21,29 +21,59 @@
#define HEADER_PINGUS_INPUT_BUTTON_HXX
#include "../pingus.hpp"
+#include "controller.hpp"
namespace Input {
+typedef void (*button_callback_func)(void*);
+
/// abstract base class which defines the button interface
class Button
{
public:
- Button () { }
- virtual ~Button () { }
+ Button() { }
+ virtual ~Button() { }
/// returns true if the button is pressed, false otherwise
- virtual bool is_pressed () const =0;
- virtual void update (float) =0;
+ virtual bool is_pressed() const = 0;
+ virtual void update(float) = 0;
- CL_Signal_v0& sig_button_down() { return button_down; }
- CL_Signal_v0& sig_button_up() { return button_up; }
+ virtual void button_down() {
+ std::vector<button_callback_info>::iterator i;
+ for (i = button_down_callbacks.begin(); i != button_down_callbacks.end();
++i) {
+ i->callback(i->userdata);
+ }
+ }
+ virtual void button_up() {
+ std::vector<button_callback_info>::iterator i;
+ for (i = button_up_callbacks.begin(); i != button_up_callbacks.end(); ++i)
{
+ i->callback(i->userdata);
+ }
+ }
+ virtual void add_down_callback(button_callback_func callback, void*
userdata) {
+ button_callback_info bci;
+ bci.callback = callback;
+ bci.userdata = userdata;
+ button_down_callbacks.push_back(bci);
+ }
+ virtual void add_up_callback(button_callback_func callback, void* userdata) {
+ button_callback_info bci;
+ bci.callback = callback;
+ bci.userdata = userdata;
+ button_up_callbacks.push_back(bci);
+ }
+
protected:
- CL_Signal_v0 button_down;
- CL_Signal_v0 button_up;
+ struct button_callback_info {
+ button_callback_func callback;
+ void *userdata;
+ };
+ std::vector<button_callback_info> button_down_callbacks;
+ std::vector<button_callback_info> button_up_callbacks;
private:
- Button (const Button&);
+ Button(const Button&);
Button& operator= (const Button&);
};
Modified: branches/pingus_sdl/src/input/button_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/button_factory.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/button_factory.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -18,8 +18,6 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <iostream>
-#include <ClanLib/Display/keyboard.h>
-#include <ClanLib/Display/input_device.h>
#include "../file_reader.hpp"
#include "../pingus_error.hpp"
#include "button_factory.hpp"
@@ -34,7 +32,7 @@
using namespace Buttons;
-Button* ButtonFactory::create (FileReader reader)
+Button* ButtonFactory::create(FileReader reader)
{
if (reader.get_name() == "double-button")
return double_button(reader);
@@ -60,7 +58,7 @@
return 0; // never reached
}
-Button* ButtonFactory::double_button (FileReader reader)
+Button* ButtonFactory::double_button(FileReader reader)
{
const std::vector<FileReader>& sections = reader.get_sections();
@@ -75,7 +73,7 @@
return new DoubleButton(button1, button2);
}
-Button* ButtonFactory::joystick_button (FileReader reader)
+Button* ButtonFactory::joystick_button(FileReader reader)
{
int id;
if (!reader.read_int("id", id))
@@ -88,13 +86,13 @@
return new JoystickButton(id, button);
}
-Button* ButtonFactory::key_button (FileReader reader)
+Button* ButtonFactory::key_button(FileReader reader)
{
std::string key;
if (!reader.read_string("key", key))
PingusError::raise("KeyButton without key parameter");
- return new KeyButton(CL_Keyboard::get_device().string_to_keyid(key));
+ return new KeyButton(KeyButton::string_to_keyid(key));
}
Button* ButtonFactory::mouse_button (FileReader reader)
@@ -106,7 +104,7 @@
return new MouseButton(button);
}
-Button* ButtonFactory::multiple_button (FileReader reader)
+Button* ButtonFactory::multiple_button(FileReader reader)
{
std::vector<Button*> buttons;
@@ -119,7 +117,7 @@
return new MultipleButton(buttons);
}
-Button* ButtonFactory::triple_button (FileReader reader)
+Button* ButtonFactory::triple_button(FileReader reader)
{
const std::vector<FileReader>& sections = reader.get_sections();
Modified: branches/pingus_sdl/src/input/buttons/joystick_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/joystick_button.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/joystick_button.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,10 +17,6 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Core/System/clanstring.h>
-#include <ClanLib/Display/joystick.h>
-#include <ClanLib/Display/input_device.h>
-//#include <ClanLib/Display/input_button.h>
#include "joystick_button.hpp"
#include "../../pingus_error.hpp"
@@ -29,11 +25,13 @@
JoystickButton::JoystickButton(int id_, int button_) : id(id_), button(button_)
{
+#if 0
if (id >= CL_Joystick::get_device_count())
PingusError::raise("JoystickButton: Invalid joystick id: " +
CL_String::to(id));
if (button > CL_Joystick::get_device(id).get_button_count())
PingusError::raise("JoystickButton: Invalid joystick button id: " +
CL_String::to(button));
+#endif
}
void
@@ -44,7 +42,8 @@
bool
JoystickButton::is_pressed() const
{
- return CL_Joystick::get_device(id).get_keycode(button);
+// return CL_Joystick::get_device(id).get_keycode(button);
+ return false;
}
} // namespace Buttons
Modified: branches/pingus_sdl/src/input/buttons/key_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/key_button.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/key_button.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,52 +17,165 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Display/keyboard.h>
-#include <ClanLib/Display/input_event.h>
#include "key_button.hpp"
#include <iostream>
+#include <map>
namespace Input {
namespace Buttons {
-KeyButton::KeyButton (int button_)
+KeyButton::KeyButton(int button_)
: button(button_),
- key_press (CL_Keyboard::sig_key_down().connect(this,
&Input::Buttons::KeyButton::key_press_handler)),
- key_release(CL_Keyboard::sig_key_up().connect(this,
&Input::Buttons::KeyButton::key_release_handler)),
pressed(false)
{
+ Controller::add_key_callback(&KeyButton::key_handler, this);
}
void
-KeyButton::update (float)
+KeyButton::update(float)
{
}
bool
-KeyButton::is_pressed () const
+KeyButton::is_pressed() const
{
return pressed;
}
void
-KeyButton::key_press_handler (const CL_InputEvent& event)
+KeyButton::key_handler(const SDL_Event& event, void* userdata)
{
- if (event.id == button)
+ KeyButton* kb = (KeyButton*)userdata;
+ if (event.key.keysym.sym == kb->button)
{
- pressed = true;
- button_down();
+ if (event.key.state == SDL_PRESSED)
+ {
+ kb->pressed = true;
+ kb->button_down();
+ }
+ else
+ {
+ kb->pressed = false;
+ kb->button_up();
+ }
}
}
-void
-KeyButton::key_release_handler (const CL_InputEvent& event)
+int
+KeyButton::string_to_keyid(std::string key)
{
- if (event.id == button)
+ static bool init = true;
+ static std::map<std::string, int> string_to_id;
+
+ if (init)
{
- pressed = false;
- button_up();
+ init = false;
+
+ string_to_id["backspace"] = SDLK_BACKSPACE;
+ string_to_id["tab"] = SDLK_TAB;
+ string_to_id["clear"] = SDLK_CLEAR;
+ string_to_id["return"] = SDLK_RETURN;
+// string_to_id["shift"] = CL_KEY_SHIFT;
+// string_to_id["control"] = CL_KEY_CONTROL;
+ string_to_id["menu"] = SDLK_MENU;
+ string_to_id["pause"] = SDLK_PAUSE;
+ string_to_id["escape"] = SDLK_ESCAPE;
+ string_to_id["space"] = SDLK_SPACE;
+ string_to_id["prior"] = SDLK_PAGEUP;
+ string_to_id["next"] = SDLK_PAGEDOWN;
+ string_to_id["end"] = SDLK_END;
+ string_to_id["home"] = SDLK_HOME;
+ string_to_id["left"] = SDLK_LEFT;
+ string_to_id["up"] = SDLK_UP;
+ string_to_id["right"] = SDLK_RIGHT;
+ string_to_id["down"] = SDLK_DOWN;
+// string_to_id["select"] = CL_KEY_SELECT;
+// string_to_id["print"] = CL_KEY_PRINT;
+// string_to_id["execute"] = CL_KEY_EXECUTE;
+ string_to_id["insert"] = SDLK_INSERT;
+ string_to_id["delete"] = SDLK_DELETE;
+ string_to_id["help"] = SDLK_HELP;
+ string_to_id["0"] = SDLK_0;
+ string_to_id["1"] = SDLK_1;
+ string_to_id["2"] = SDLK_2;
+ string_to_id["3"] = SDLK_3;
+ string_to_id["4"] = SDLK_4;
+ string_to_id["5"] = SDLK_5;
+ string_to_id["6"] = SDLK_6;
+ string_to_id["7"] = SDLK_7;
+ string_to_id["8"] = SDLK_8;
+ string_to_id["9"] = SDLK_9;
+ string_to_id["a"] = SDLK_a;
+ string_to_id["b"] = SDLK_b;
+ string_to_id["c"] = SDLK_c;
+ string_to_id["d"] = SDLK_d;
+ string_to_id["e"] = SDLK_e;
+ string_to_id["f"] = SDLK_f;
+ string_to_id["g"] = SDLK_g;
+ string_to_id["h"] = SDLK_h;
+ string_to_id["i"] = SDLK_i;
+ string_to_id["j"] = SDLK_j;
+ string_to_id["k"] = SDLK_k;
+ string_to_id["l"] = SDLK_l;
+ string_to_id["m"] = SDLK_m;
+ string_to_id["n"] = SDLK_n;
+ string_to_id["o"] = SDLK_o;
+ string_to_id["p"] = SDLK_p;
+ string_to_id["q"] = SDLK_q;
+ string_to_id["r"] = SDLK_r;
+ string_to_id["s"] = SDLK_s;
+ string_to_id["t"] = SDLK_t;
+ string_to_id["u"] = SDLK_u;
+ string_to_id["v"] = SDLK_v;
+ string_to_id["w"] = SDLK_w;
+ string_to_id["x"] = SDLK_x;
+ string_to_id["y"] = SDLK_y;
+ string_to_id["z"] = SDLK_z;
+ string_to_id["lwin"] = SDLK_LSUPER;
+ string_to_id["rwin"] = SDLK_RSUPER;
+ string_to_id["numpad0"] = SDLK_KP0;
+ string_to_id["numpad1"] = SDLK_KP1;
+ string_to_id["numpad2"] = SDLK_KP2;
+ string_to_id["numpad3"] = SDLK_KP3;
+ string_to_id["numpad4"] = SDLK_KP4;
+ string_to_id["numpad5"] = SDLK_KP5;
+ string_to_id["numpad6"] = SDLK_KP6;
+ string_to_id["numpad7"] = SDLK_KP7;
+ string_to_id["numpad8"] = SDLK_KP8;
+ string_to_id["numpad9"] = SDLK_KP9;
+ string_to_id["multiply"] = SDLK_KP_MULTIPLY;
+ string_to_id["add"] = SDLK_KP_PLUS;
+// string_to_id["separator"] = CL_KEY_SEPARATOR;
+ string_to_id["subtract"] = SDLK_KP_MINUS;
+ string_to_id["decimal"] = SDLK_KP_PERIOD;
+ string_to_id["divide"] = SDLK_KP_DIVIDE;
+ string_to_id["f1"] = SDLK_F1;
+ string_to_id["f2"] = SDLK_F2;
+ string_to_id["f3"] = SDLK_F3;
+ string_to_id["f4"] = SDLK_F4;
+ string_to_id["f5"] = SDLK_F5;
+ string_to_id["f6"] = SDLK_F6;
+ string_to_id["f7"] = SDLK_F7;
+ string_to_id["f8"] = SDLK_F8;
+ string_to_id["f9"] = SDLK_F9;
+ string_to_id["f10"] = SDLK_F10;
+ string_to_id["f11"] = SDLK_F11;
+ string_to_id["f12"] = SDLK_F12;
+ string_to_id["f13"] = SDLK_F13;
+ string_to_id["f14"] = SDLK_F14;
+ string_to_id["f15"] = SDLK_F15;
+ string_to_id["numlock"] = SDLK_NUMLOCK;
+ string_to_id["scroll"] = SDLK_SCROLLOCK;
+ string_to_id["lshift"] = SDLK_LSHIFT;
+ string_to_id["rshift"] = SDLK_RSHIFT;
+ string_to_id["lcontrol"] = SDLK_LCTRL;
+ string_to_id["rcontrol"] = SDLK_RCTRL;
+ string_to_id["lmenu"] = SDLK_LALT;
+ string_to_id["rmenu"] = SDLK_RALT;
}
+
+ return string_to_id[key];
}
} // namespace Buttons
Modified: branches/pingus_sdl/src/input/buttons/key_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/key_button.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/key_button.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -20,12 +20,9 @@
#ifndef HEADER_PINGUS_INPUT_KEY_BUTTON_HXX
#define HEADER_PINGUS_INPUT_KEY_BUTTON_HXX
-#include <ClanLib/Signals/slot.h>
+#include <string>
#include "../button.hpp"
-class CL_InputEvent;
-class CL_InputDevice;
-
namespace Input {
namespace Buttons {
@@ -38,22 +35,23 @@
private:
int button;
- CL_Slot key_press;
- CL_Slot key_release;
bool pressed;
public:
- KeyButton (int button_);
+ KeyButton(int button_);
- virtual bool is_pressed () const;
- virtual void update (float);
+ inline int get_button() const { return button; }
+ virtual bool is_pressed() const;
+ virtual void update(float);
+
+ static int string_to_keyid(std::string key);
+
private:
- void key_press_handler (const CL_InputEvent& event);
- void key_release_handler (const CL_InputEvent& event);
+ static void key_handler(const SDL_Event& event, void *userdata);
- KeyButton (const KeyButton&);
+ KeyButton(const KeyButton&);
KeyButton& operator= (const KeyButton&);
};
Modified: branches/pingus_sdl/src/input/buttons/mouse_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/mouse_button.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/mouse_button.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,22 +17,17 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Core/System/clanstring.h>
-#include <ClanLib/Display/input_event.h>
-#include <ClanLib/Display/keys.h>
-#include <ClanLib/Display/mouse.h>
#include "mouse_button.hpp"
#include "../../pingus_error.hpp"
namespace Input {
namespace Buttons {
-MouseButton::MouseButton (int button_)
+MouseButton::MouseButton(int button_)
: button(button_),
- button_press_slot (CL_Mouse::sig_key_down().connect(this,
&Input::Buttons::MouseButton::press_handler)),
- button_release_slot(CL_Mouse::sig_key_up().connect(this,
&Input::Buttons::MouseButton::release_handler)),
pressed(false)
{
+ Controller::add_mouse_callback(&MouseButton::mouse_handler, this);
}
void
@@ -41,67 +36,53 @@
}
void
-MouseButton::press_handler (const CL_InputEvent& signal) // may not be a
member function since CL_Signal doesn't take a member function pointer
+MouseButton::mouse_handler(const SDL_Event& event, void* userdata)
{
- switch (button)
+ MouseButton* mb = (MouseButton*)userdata;
+ switch (mb->button)
{
- case 0:
- if (signal.id == CL_MOUSE_LEFT) {
- pressed = true;
- button_down();
- }
- break;
-
case 1:
- if (signal.id == CL_MOUSE_MIDDLE) {
- pressed = true;
- button_down();
+ if (event.button.button == SDL_BUTTON_LEFT) {
+ if (event.button.state == SDL_PRESSED) {
+ mb->pressed = true;
+ mb->button_down();
+ } else {
+ mb->pressed = false;
+ mb->button_up();
+ }
}
break;
case 2:
- if (signal.id == CL_MOUSE_RIGHT) {
- pressed = true;
- button_down();
+ if (event.button.button == SDL_BUTTON_MIDDLE) {
+ if (event.button.state == SDL_PRESSED) {
+ mb->pressed = true;
+ mb->button_down();
+ } else {
+ mb->pressed = false;
+ mb->button_up();
+ }
}
break;
- default: // only three buttons support so far
- break;
- }
-}
-
-void
-MouseButton::release_handler (const CL_InputEvent& signal) // may not be a
member function since CL_Signal doesn't take a member function pointer
-{
- switch (button)
- {
- case 0:
- if (signal.id == CL_MOUSE_LEFT) {
- pressed = false;
- button_up();
+ case 3:
+ if (event.button.button == SDL_BUTTON_RIGHT) {
+ if (event.button.state == SDL_PRESSED) {
+ mb->pressed = true;
+ mb->button_down();
+ } else {
+ mb->pressed = false;
+ mb->button_up();
+ }
}
break;
- case 1:
- if (signal.id == CL_MOUSE_MIDDLE) {
- pressed = false;
- button_up();
- }
- break;
-
- case 2:
- if (signal.id == CL_MOUSE_RIGHT) {
- pressed = false;
- button_up();
- }
- break;
-
default: // only three buttons support so far
break;
}
}
-
+
+
} // namespace Buttons
} // namespace Input
Modified: branches/pingus_sdl/src/input/buttons/mouse_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/mouse_button.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/mouse_button.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -20,11 +20,8 @@
#ifndef HEADER_PINGUS_INPUT_MOUSE_BUTTON_HXX
#define HEADER_PINGUS_INPUT_MOUSE_BUTTON_HXX
-#include <ClanLib/Signals/slot.h>
#include "../button.hpp"
-class CL_InputEvent;
-
namespace Input {
namespace Buttons {
@@ -37,21 +34,20 @@
private:
int button;
- CL_Slot button_press_slot;
- CL_Slot button_release_slot;
bool pressed;
public:
- MouseButton (int button_);
+ MouseButton(int button_);
- virtual bool is_pressed () const { return pressed; }
- virtual void update (float);
+ inline int get_button() const { return button; }
+ virtual bool is_pressed() const { return pressed; }
+ virtual void update(float);
+
private:
- void press_handler (const CL_InputEvent& number);
- void release_handler (const CL_InputEvent& number);
+ static void mouse_handler(const SDL_Event& event, void *userdata);
- MouseButton (const MouseButton&);
+ MouseButton(const MouseButton&);
MouseButton& operator= (const MouseButton&);
};
Modified: branches/pingus_sdl/src/input/buttons/multiple_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/multiple_button.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/multiple_button.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -29,8 +29,8 @@
for (std::vector<Button*>::iterator it = buttons.begin(); it !=
buttons.end(); it++)
{
- slots.push_back((*it)->sig_button_up() .connect(this,
&MultipleButton::on_button_up));
- slots.push_back((*it)->sig_button_down().connect(this,
&MultipleButton::on_button_down));
+ (*it)->add_down_callback(&MultipleButton::on_button_down, this);
+ (*it)->add_up_callback(&MultipleButton::on_button_up, this);
}
}
@@ -58,23 +58,25 @@
}
void
-MultipleButton::on_button_up()
+MultipleButton::on_button_up(void* userdata)
{
- down_count -= 1;
- if (down_count < 0)
- down_count = 0;
+ MultipleButton* mb = (MultipleButton*)userdata;
+ mb->down_count -= 1;
+ if (mb->down_count < 0)
+ mb->down_count = 0;
- if (down_count == 0)
- button_up();
+ if (mb->down_count == 0)
+ mb->button_up();
}
void
-MultipleButton::on_button_down()
+MultipleButton::on_button_down(void* userdata)
{
- if (down_count == 0)
- button_down();
+ MultipleButton* mb = (MultipleButton*)userdata;
+ if (mb->down_count == 0)
+ mb->button_down();
- down_count += 1;
+ mb->down_count += 1;
}
} // namespace Buttons
Modified: branches/pingus_sdl/src/input/buttons/multiple_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/multiple_button.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/multiple_button.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -37,20 +37,19 @@
private:
std::vector<Button*> buttons;
- std::vector<CL_Slot> slots;
int down_count;
public:
- MultipleButton (const std::vector<Button*>& buttons_);
- ~MultipleButton ();
+ MultipleButton(const std::vector<Button*>& buttons_);
+ ~MultipleButton();
- virtual bool is_pressed () const;
- virtual void update (float delta);
+ virtual bool is_pressed() const;
+ virtual void update(float delta);
private:
- void on_button_up();
- void on_button_down();
+ static void on_button_up(void*);
+ static void on_button_down(void*);
- MultipleButton (const MultipleButton&);
+ MultipleButton(const MultipleButton&);
MultipleButton& operator= (const MultipleButton&);
};
Modified: branches/pingus_sdl/src/input/controller.cpp
===================================================================
--- branches/pingus_sdl/src/input/controller.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/controller.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -25,81 +25,95 @@
#include "controller.hpp"
#include "axes/dummy_axis.hpp"
-////#include "buttons/dummy_button.hpp"
+#include "buttons/dummy_button.hpp"
#include "pointers/dummy_pointer.hpp"
#include "scrollers/dummy_scroller.hpp"
#include "pointer_factory.hpp"
-////#include "../xml_file_reader.hpp"
#include "scroller_factory.hpp"
-////#include "button_factory.hpp"
+#include "button_factory.hpp"
+#include "buttons/key_button.hpp"
+#include "buttons/mouse_button.hpp"
+#include "scrollers/axis_scroller.hpp"
namespace Input {
using namespace Axes;
-////using namespace Buttons;
+using namespace Buttons;
using namespace Pointers;
using namespace Scrollers;
Controller* Controller::current_controller = 0;
+std::vector<Controller::key_callback_info> Controller::key_callbacks;
+std::vector<Controller::mouse_callback_info> Controller::mouse_callbacks;
-Controller::Controller (const std::string& configfile)
+Controller::Controller(const std::string& configfile)
: standard_pointer(0),
scroller(0),
std_pointer_x(0),
std_pointer_y(0)
{
-#if 0
- CL_InputSourceProvider_File provider(".");
- CL_DomDocument doc(provider.open_source(configfile), true);
-
- XMLFileReader reader(doc.get_document_element());
-
+ FileReader reader = FileReader::parse(configfile);
if (reader.get_name() != "pingus-controller")
{
PingusError::raise("Controller: invalid config file <" + configfile +
">");
}
else
{
+ FileReader head;
+
const std::vector<FileReader>& sections = reader.get_sections();
- for(std::vector<FileReader>::const_iterator i = sections.begin();
+ for (std::vector<FileReader>::const_iterator i = sections.begin();
i != sections.end(); ++i)
{
- if (i->get_name() == "standard-pointer")
- standard_pointer = PointerFactory::create(i->get_sections()[0]);
-
- else if (i->get_name() == "scroller")
- scroller = ScrollerFactory::create(i->get_sections()[0]);
-
+ if (i->get_name() == "standard-pointer")
+ {
+ standard_pointer = PointerFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "primary-button")
- buttons[primary] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[primary] = ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "secondary-button")
- buttons[secondary] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[secondary] = ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "pause-button")
- buttons[pause] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[pause] = ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "fast-forward-button")
- buttons[fast_forward] =
ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[fast_forward] =
ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "armageddon-button")
- buttons[armageddon] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[armageddon] =
ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "escape-button")
- buttons[escape] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[escape] = ButtonFactory::create(i->get_sections()[0]);
+ }
+ else if (i->get_name() == "scroller")
+ {
+ scroller = ScrollerFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "action-buttons")
- create_action_buttons(*i);
-
+ {
+ create_action_buttons(*i);
+ }
else if (i->get_name() == "action-up")
- buttons[action_up] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[action_up] = ButtonFactory::create(i->get_sections()[0]);
+ }
else if (i->get_name() == "action-down")
- buttons[action_down] = ButtonFactory::create(i->get_sections()[0]);
-
+ {
+ buttons[action_down] =
ButtonFactory::create(i->get_sections()[0]);
+ }
else
- PingusError::raise(std::string("Unkown Element in Controller
Config: ")
- + i->get_name());
+ {
+ PingusError::raise(std::string("Unkown Element in Controller
Config: ")
+ + i->get_name());
+ }
}
}
@@ -114,12 +128,6 @@
std_pointer_y = standard_pointer->get_y_pos();
}
- if (!scroller)
- {
- scroller = new DummyScroller;
- pwarn << "Controller: No scroller - inserting dummy" << std::endl;
- }
-
if (!buttons.count(primary))
{
buttons[primary] = new DummyButton;
@@ -156,6 +164,12 @@
pwarn << "Controller: No escape button - inserting dummy" << std::endl;
}
+ if (!scroller)
+ {
+ scroller = new DummyScroller;
+ pwarn << "Controller: No scroller - inserting dummy" << std::endl;
+ }
+
if (!buttons.count(action_up))
{
buttons[action_up] = new DummyButton;
@@ -170,31 +184,27 @@
for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it !=
buttons.end(); ++it)
{
- slots.push_back(it->second->sig_button_down().connect(this,
&Controller::on_button_down, it->first));
- slots.push_back(it->second->sig_button_up().connect(this,
&Controller::on_button_up, it->first));
+ static int button_names[max_button];
+ button_names[it->first] = it->first;
+ it->second->add_down_callback(&Controller::on_button_down,
&button_names[it->first]);
+ it->second->add_up_callback(&Controller::on_button_up,
&button_names[it->first]);
}
-
- // Catch all keyboard input
- CL_InputDevice keyboard =
CL_Display::get_current_window()->get_ic()->get_keyboard();
- slots.push_back(keyboard.sig_key_down().connect(this,
&Controller::key_pressed));
-#endif
+
}
-Controller::~Controller ()
+Controller::~Controller()
{
-#if 0
delete scroller;
delete standard_pointer;
- for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it !=
buttons.end(); ++it)
+ std::map<ButtonName, Button*>::iterator it;
+ for (it = buttons.begin(); it != buttons.end(); ++it)
delete it->second;
-#endif
}
void
-Controller::create_action_buttons (FileReader reader)
+Controller::create_action_buttons(FileReader reader)
{
-#if 0
int count = 0;
const std::vector<FileReader>& sections = reader.get_sections();
@@ -202,22 +212,25 @@
i != sections.end(); ++i)
{
if (i->get_name() == "action-button")
+ {
buttons[static_cast<ButtonName>(action_1 + count)]
= ButtonFactory::create(i->get_sections()[0]);
+ }
else
+ {
PingusError::raise(std::string("Wrong Element in Controller Config
(action-buttons): ")
+ i->get_name());
- count += 1;
+ }
+ count++;
}
-#endif
}
void
-Controller::update (float delta)
+Controller::update(float delta)
{
// Let SDL fetch events
SDL_Event event;
- while(SDL_PollEvent(&event))
+ while (SDL_PollEvent(&event))
{
switch(event.type)
{
@@ -230,42 +243,63 @@
break;
case SDL_MOUSEBUTTONDOWN:
- if (event.button.button == SDL_BUTTON_LEFT)
- events.push_back(makeButtonEvent(Input::primary, Input::pressed));
- else if (event.button.button == SDL_BUTTON_MIDDLE)
- events.push_back(makeButtonEvent(Input::pause, Input::pressed));
- else if (event.button.button == SDL_BUTTON_RIGHT)
- events.push_back(makeButtonEvent(Input::secondary,
Input::pressed));
- break;
+ {
+ std::vector<mouse_callback_info>::iterator i;
+ for (i = mouse_callbacks.begin(); i != mouse_callbacks.end(); ++i)
+ {
+ i->callback(event, i->userdata);
+ }
+ break;
+ }
case SDL_MOUSEBUTTONUP:
- if (event.button.button == SDL_BUTTON_LEFT)
- events.push_back(makeButtonEvent(Input::primary, Input::released));
- else if (event.button.button == SDL_BUTTON_MIDDLE)
- events.push_back(makeButtonEvent(Input::pause, Input::released));
- else if (event.button.button == SDL_BUTTON_RIGHT)
- events.push_back(makeButtonEvent(Input::secondary,
Input::released));
- break;
+ {
+ std::vector<mouse_callback_info>::iterator i;
+ for (i = mouse_callbacks.begin(); i != mouse_callbacks.end(); ++i)
+ {
+ i->callback(event, i->userdata);
+ }
+ break;
+ }
case SDL_KEYDOWN:
- break;
+ {
+ std::vector<key_callback_info>::iterator i;
+ for (i = key_callbacks.begin(); i != key_callbacks.end(); ++i)
+ {
+ i->callback(event, i->userdata);
+ }
+ events.push_back(makeKeyboardEvent(event.key.keysym.unicode));
+ break;
+ }
+
case SDL_KEYUP:
- break;
+ {
+ std::vector<key_callback_info>::iterator i;
+ for (i = key_callbacks.begin(); i != key_callbacks.end(); ++i)
+ {
+ i->callback(event, i->userdata);
+ }
+ events.push_back(makeKeyboardEvent(event.key.keysym.unicode));
+ break;
+ }
+
default:
// FIXME: feed other events to the input manager
break;
}
}
-#if 0
- scroller ->update(delta);
+ scroller->update(delta);
standard_pointer->update(delta);
- for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it !=
buttons.end(); ++it)
+ for (std::map<ButtonName, Button*>::iterator it = buttons.begin();
+ it != buttons.end(); ++it)
it->second->update(delta);
-
+
+#if 0
// FIXME: Busy checking of button status and other events is *VERY EVIL*
if (std_pointer_x != standard_pointer->get_x_pos()
|| std_pointer_y != standard_pointer->get_y_pos())
@@ -275,27 +309,39 @@
events.push_back(makePointerEvent(standard, std_pointer_x,
std_pointer_y));
}
+#endif
// FIXME: Busy checking of button status and other events is *VERY EVIL*
if (scroller->get_x_delta() || scroller->get_y_delta())
events.push_back(makeScrollEvent(scroller->get_x_delta(),
scroller->get_y_delta()));
-
- std::string keys_pressed = get_keys_pressed();
- for (unsigned i = 0; i < (unsigned)keys_pressed.length(); i++)
- {
- events.push_back(makeKeyboardEvent( keys_pressed[i] ));
- }
-#endif
}
void
Controller::clear()
{
- events.clear ();
+ events.clear();
}
+void
+Controller::add_key_callback(key_callback_func callback, void *userdata)
+{
+ key_callback_info cb;
+ cb.callback = callback;
+ cb.userdata = userdata;
+ key_callbacks.push_back(cb);
+}
+
+void
+Controller::add_mouse_callback(mouse_callback_func callback, void *userdata)
+{
+ mouse_callback_info cb;
+ cb.callback = callback;
+ cb.userdata = userdata;
+ mouse_callbacks.push_back(cb);
+}
+
const Button*
-Controller::get_button (ButtonName name)
+Controller::get_button(ButtonName name)
{
if (buttons.count(name))
return buttons[name];
@@ -304,32 +350,20 @@
}
void
-Controller::on_button_down(ButtonName name)
+Controller::on_button_down(void* userdata)
{
- events.push_back(makeButtonEvent(name, pressed));
+ ButtonName name = *(ButtonName*)userdata;
+ Controller::get_current()->events.push_back(makeButtonEvent(name, pressed));
}
void
-Controller::on_button_up(ButtonName name)
+Controller::on_button_up(void* userdata)
{
- events.push_back(makeButtonEvent(name, released));
+ ButtonName name = *(ButtonName*)userdata;
+ Controller::get_current()->events.push_back(makeButtonEvent(name, released));
}
-#if 0
-void
-Controller::key_pressed(const CL_InputEvent &event)
-{
- keys += event.str;
-}
-#endif
-std::string
-Controller::get_keys_pressed()
-{
- std::string ret_keys = keys;
- keys.clear();
- return ret_keys;
-}
-
+
} // namespace Input
/* EOF */
Modified: branches/pingus_sdl/src/input/controller.hpp
===================================================================
--- branches/pingus_sdl/src/input/controller.hpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/controller.hpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -24,6 +24,7 @@
#include <list>
#include <string>
#include <vector>
+#include "SDL.h"
#include "../file_reader.hpp"
#include "event.hpp"
@@ -34,53 +35,66 @@
class Pointer;
class Scroller;
+typedef void (*key_callback_func)(const SDL_Event&, void*);
+typedef void (*mouse_callback_func)(const SDL_Event&, void*);
+
class Controller {
private:
- Pointer* standard_pointer;
+ Pointer* standard_pointer;
Scroller* scroller;
std::map<ButtonName, Button*> buttons;
std::vector<Event> events;
- float std_pointer_x;
- float std_pointer_y;
+ float std_pointer_x;
+ float std_pointer_y;
//// std::vector<CL_Slot> slots;
public:
- Controller (const std::string& configfile);
- ~Controller ();
+ Controller(const std::string& configfile);
+ ~Controller();
- std::vector<Event>& get_events () { return events; }
+ std::vector<Event>& get_events() { return events; }
- const Pointer * get_pointer () const { return standard_pointer; }
- const Scroller* get_scroller () const { return scroller; }
+ const Pointer * get_pointer() const { return standard_pointer; }
+ const Scroller* get_scroller() const { return scroller; }
/// returns the requested Buttons::Button or 0 if it doesn't exist (e.g.
undefined action Buttons::Button)
- const Button* get_button (ButtonName name);
+ const Button* get_button(ButtonName name);
- void update (float delta);
+ void update(float delta);
void clear();
static void set_current(Controller* controller) { current_controller =
controller; }
static Controller* get_current() { return current_controller; }
+
+ static void add_key_callback(key_callback_func, void*);
+ static void add_mouse_callback(mouse_callback_func, void*);
private:
static Controller* current_controller;
- void on_button_down(ButtonName name);
- void on_button_up(ButtonName name);
- void create_action_buttons (FileReader reader);
+ static void on_button_down(void*);
+ static void on_button_up(void*);
+ void create_action_buttons(FileReader reader);
////void key_pressed(const CL_InputEvent &event);
-/** Get keyboard keys pressed to handle general keyboard input */
- std::string get_keys_pressed();
+ struct key_callback_info {
+ key_callback_func callback;
+ void *userdata;
+ };
+ static std::vector<key_callback_info> key_callbacks;
- std::string keys;
+ struct mouse_callback_info {
+ mouse_callback_func callback;
+ void *userdata;
+ };
+ static std::vector<mouse_callback_info> mouse_callbacks;
- Controller (const Controller&);
+ Controller(const Controller&);
Controller& operator= (const Controller&);
};
Modified: branches/pingus_sdl/src/input/event.hpp
===================================================================
--- branches/pingus_sdl/src/input/event.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/input/event.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -30,7 +30,7 @@
enum ButtonName { primary, secondary, pause, fast_forward, armageddon, escape,
action_1, action_2,
action_3, action_4, action_5, action_6, action_7, action_8,
action_9, action_10,
- action_up, action_down };
+ action_up, action_down, max_button };
enum State { pressed, released };
@@ -65,7 +65,7 @@
struct KeyboardEvent
{
- char key;
+ unsigned short key;
};
struct Event
@@ -77,13 +77,13 @@
PointerEvent pointer;
AxisEvent axis;
ScrollEvent scroll;
- KeyboardEvent keyboard;
+ KeyboardEvent keyboard;
};
};
typedef std::vector<Event> EventLst;
-inline Event makeButtonEvent (ButtonName name, State state)
+inline Event makeButtonEvent(ButtonName name, State state)
{
Event event;
@@ -106,7 +106,7 @@
return event;
}
-inline Event makeAxisEvent (float dir, AxisName name = action)
+inline Event makeAxisEvent(float dir, AxisName name = action)
{
Event event;
@@ -117,7 +117,7 @@
return event;
}
-inline Event makeScrollEvent (float x_delta, float y_delta)
+inline Event makeScrollEvent(float x_delta, float y_delta)
{
Event event;
@@ -128,14 +128,14 @@
return event;
}
-inline Event makeKeyboardEvent (char c)
+inline Event makeKeyboardEvent(unsigned short c)
{
- Event event;
+ Event event;
- event.type = KeyboardEventType;
- event.keyboard.key = c;
+ event.type = KeyboardEventType;
+ event.keyboard.key = c;
- return event;
+ return event;
}
} // namespace Input
Modified: branches/pingus_sdl/src/input/pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointer.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/input/pointer.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -28,19 +28,19 @@
class Pointer
{
public:
- Pointer () { }
+ Pointer() { }
virtual ~Pointer() { }
/// returns the X coordinate of the pointer
- virtual const float& get_x_pos () const =0;
+ virtual const float& get_x_pos() const =0;
/// returns the Y coordinate of the pointer
- virtual const float& get_y_pos () const =0;
+ virtual const float& get_y_pos() const =0;
/// sets the pointer to the given position
- virtual void set_pos (float, float) =0;
+ virtual void set_pos(float, float) =0;
- virtual void update (float) =0;
+ virtual void update(float) =0;
private:
Pointer (const Pointer&);
Modified: branches/pingus_sdl/src/input/pointer_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointer_factory.hpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/pointer_factory.hpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -29,16 +29,16 @@
class PointerFactory
{
private:
- static Pointer* axis_pointer (FileReader reader);
- static Pointer* mouse_pointer ();
- static Pointer* multiple_pointer (FileReader reader);
+ static Pointer* axis_pointer(FileReader reader);
+ static Pointer* mouse_pointer();
+ static Pointer* multiple_pointer(FileReader reader);
public:
- static Pointer* create (FileReader reader);
+ static Pointer* create(FileReader reader);
private:
- PointerFactory ();
- PointerFactory (const PointerFactory&);
+ PointerFactory();
+ PointerFactory(const PointerFactory&);
PointerFactory& operator= (const PointerFactory&);
};
Modified: branches/pingus_sdl/src/input/pointers/axis_pointer.cpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/axis_pointer.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/axis_pointer.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -25,39 +25,39 @@
namespace Input {
namespace Pointers {
-AxisPointer::AxisPointer (float speed_, const std::vector<Axis*>& axes_) :
speed(speed_), axes(axes_)
+AxisPointer::AxisPointer(float speed_, const std::vector<Axis*>& axes_) :
speed(speed_), axes(axes_)
{
assert(axes.size() >= 2);
assert(axes[0]->get_angle() != axes[1]->get_angle());
}
-AxisPointer::~AxisPointer ()
+AxisPointer::~AxisPointer()
{
for (std::vector<Axis*>::const_iterator it = axes.begin(); it != axes.end();
it++)
delete *it;
}
const float&
-AxisPointer::get_x_pos () const
+AxisPointer::get_x_pos() const
{
return x_pos;
}
const float&
-AxisPointer::get_y_pos () const
+AxisPointer::get_y_pos() const
{
return y_pos;
}
void
-AxisPointer::set_pos (float new_x, float new_y)
+AxisPointer::set_pos(float new_x, float new_y)
{
x_pos = new_x;
y_pos = new_y;
}
void
-AxisPointer::update (float delta)
+AxisPointer::update(float delta)
{
for (std::vector<Axis*>::const_iterator it = axes.begin(); it != axes.end();
it++)
{
Modified: branches/pingus_sdl/src/input/pointers/axis_pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/axis_pointer.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/axis_pointer.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -42,26 +42,26 @@
private:
- const float speed;
+ const float speed;
std::vector<Axis*> axes;
- float x_pos;
- float y_pos;
+ float x_pos;
+ float y_pos;
public:
- AxisPointer (float speed, const std::vector<Axis*>& axes_);
- ~AxisPointer ();
+ AxisPointer(float speed, const std::vector<Axis*>& axes_);
+ ~AxisPointer();
- virtual const float& get_x_pos () const;
- virtual const float& get_y_pos () const;
+ virtual const float& get_x_pos() const;
+ virtual const float& get_y_pos() const;
virtual void set_pos(float new_x, float new_y);
- virtual void update (float delta);
+ virtual void update(float delta);
private:
- AxisPointer (const AxisPointer&);
+ AxisPointer(const AxisPointer&);
AxisPointer& operator= (const AxisPointer&);
};
Modified: branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,50 +17,52 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Display/mouse.h>
-#include <ClanLib/Display/input_event.h>
#include "mouse_pointer.hpp"
namespace Input {
namespace Pointers {
-MousePointer::MousePointer ()
+MousePointer::MousePointer()
: x_pos(0),
- y_pos(0),
- move_slot(CL_Mouse::sig_move().connect(this,
&Input::Pointers::MousePointer::move_signal))
+ y_pos(0)
+// move_slot(CL_Mouse::sig_move().connect(this,
&Input::Pointers::MousePointer::move_signal))
{
}
const float&
-MousePointer::get_x_pos () const
+MousePointer::get_x_pos() const
{
return x_pos;
}
const float&
-MousePointer::get_y_pos () const
+MousePointer::get_y_pos() const
{
return y_pos;
}
void
-MousePointer::set_pos (float new_x, float new_y)
+MousePointer::set_pos(float new_x, float new_y)
{
+#if 0
CL_Mouse::set_position(static_cast<int>(new_x),
static_cast<int>(new_y));
+#endif
}
void
-MousePointer::update (float)
+MousePointer::update(float)
{
}
+#if 0
void
-MousePointer::move_signal (const CL_InputEvent& event)
+MousePointer::move_signal(const CL_InputEvent& event)
{
x_pos = (float)event.mouse_pos.x;
y_pos = (float)event.mouse_pos.y;
}
+#endif
} // namespace Pointers
} // namespace Input
Modified: branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -20,11 +20,8 @@
#ifndef HEADER_PINGUS_INPUT_MOUSE_POINTER_HXX
#define HEADER_PINGUS_INPUT_MOUSE_POINTER_HXX
-#include <ClanLib/Signals/slot.h>
#include "../pointer.hpp"
-class CL_InputEvent;
-
namespace Input {
namespace Pointers {
@@ -38,22 +35,22 @@
private:
float x_pos;
float y_pos;
- CL_Slot move_slot;
+// CL_Slot move_slot;
public:
- MousePointer ();
+ MousePointer();
- virtual const float& get_x_pos () const;
- virtual const float& get_y_pos () const;
+ virtual const float& get_x_pos() const;
+ virtual const float& get_y_pos() const;
- virtual void set_pos (float new_x, float new_y);
+ virtual void set_pos(float new_x, float new_y);
- virtual void update (float);
+ virtual void update(float);
private:
- void move_signal (const CL_InputEvent& event);
+// void move_signal(const CL_InputEvent& event);
- MousePointer (const MousePointer&);
+ MousePointer(const MousePointer&);
MousePointer& operator= (const MousePointer&);
};
Modified: branches/pingus_sdl/src/input/scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scroller.hpp 2007-07-18 03:49:14 UTC (rev
2752)
+++ branches/pingus_sdl/src/input/scroller.hpp 2007-07-18 04:32:38 UTC (rev
2753)
@@ -27,22 +27,22 @@
/// abstract base class defining the scroller interface
class Scroller {
public:
- Scroller () { }
- virtual ~Scroller () { }
+ Scroller() { }
+ virtual ~Scroller() { }
/// returns the scroll delta in X direction
- virtual const float& get_x_delta () const =0;
+ virtual const float& get_x_delta() const =0;
/// returns the scroll delta in Y direction
- virtual const float& get_y_delta () const =0;
+ virtual const float& get_y_delta() const =0;
/// writes the X/Y scroll delta into it's parameters
- virtual void get_delta (float&, float&) const =0;
+ virtual void get_delta(float&, float&) const =0;
- virtual void update (float) =0;
+ virtual void update(float) =0;
private:
- Scroller (const Scroller&);
+ Scroller(const Scroller&);
Scroller& operator= (const Scroller&);
};
Modified: branches/pingus_sdl/src/input/scroller_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/scroller_factory.cpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/scroller_factory.cpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -65,7 +65,7 @@
}
Scroller*
-ScrollerFactory::axis_scroller (FileReader reader)
+ScrollerFactory::axis_scroller(FileReader reader)
{
float speed;
if (!reader.read_float("speed", speed))
@@ -81,7 +81,7 @@
}
Scroller*
-ScrollerFactory::inverted_scroller (FileReader reader)
+ScrollerFactory::inverted_scroller(FileReader reader)
{
bool invert_x;
if (!reader.read_bool("invert-x", invert_x))
@@ -98,7 +98,7 @@
}
Scroller*
-ScrollerFactory::joystick_scroller (FileReader reader)
+ScrollerFactory::joystick_scroller(FileReader reader)
{
int id;
if (!reader.read_int("id", id))
@@ -120,7 +120,7 @@
}
Scroller*
-ScrollerFactory::multiple_scroller (FileReader reader)
+ScrollerFactory::multiple_scroller(FileReader reader)
{
std::vector<Scroller*> scrollers;
@@ -135,7 +135,7 @@
}
Scroller*
-ScrollerFactory::pointer_scroller (FileReader reader)
+ScrollerFactory::pointer_scroller(FileReader reader)
{
Pointer* pointer;
Button* button;
Modified: branches/pingus_sdl/src/input/scroller_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/scroller_factory.hpp 2007-07-18 03:49:14 UTC
(rev 2752)
+++ branches/pingus_sdl/src/input/scroller_factory.hpp 2007-07-18 04:32:38 UTC
(rev 2753)
@@ -29,19 +29,19 @@
class ScrollerFactory
{
private:
- static Scroller* axis_scroller (FileReader reader);
- static Scroller* inverted_scroller (FileReader reader);
- static Scroller* joystick_scroller (FileReader reader);
- static Scroller* mouse_scroller (FileReader reader);
- static Scroller* multiple_scroller (FileReader reader);
- static Scroller* pointer_scroller (FileReader reader);
+ static Scroller* axis_scroller(FileReader reader);
+ static Scroller* inverted_scroller(FileReader reader);
+ static Scroller* joystick_scroller(FileReader reader);
+ static Scroller* mouse_scroller(FileReader reader);
+ static Scroller* multiple_scroller(FileReader reader);
+ static Scroller* pointer_scroller(FileReader reader);
public:
- static Scroller* create (FileReader reader);
+ static Scroller* create(FileReader reader);
private:
- ScrollerFactory ();
- ScrollerFactory (const ScrollerFactory&);
+ ScrollerFactory();
+ ScrollerFactory(const ScrollerFactory&);
ScrollerFactory& operator= (const ScrollerFactory&);
};
Modified: branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -20,13 +20,14 @@
#include <math.h>
#include <assert.h>
#include "../../debug.hpp"
+#include "../../math.hpp"
#include "../axis.hpp"
#include "axis_scroller.hpp"
namespace Input {
namespace Scrollers {
-AxisScroller::AxisScroller (const std::vector<Axis*>& axes_, float speed_)
+AxisScroller::AxisScroller(const std::vector<Axis*>& axes_, float speed_)
: axes(axes_),
speed(speed_),
x_delta(0),
@@ -36,33 +37,33 @@
assert(axes[0]->get_angle() != axes[1]->get_angle());
}
-AxisScroller::~AxisScroller ()
+AxisScroller::~AxisScroller()
{
for (unsigned int i=0; i < axes.size(); ++i)
delete axes[i];
}
const float&
-AxisScroller::get_x_delta () const
+AxisScroller::get_x_delta() const
{
return x_delta;
}
const float&
-AxisScroller::get_y_delta () const
+AxisScroller::get_y_delta() const
{
return y_delta;
}
void
-AxisScroller::get_delta (float& x, float& y) const
+AxisScroller::get_delta(float& x, float& y) const
{
x = x_delta;
y = y_delta;
}
void
-AxisScroller::update (float delta)
+AxisScroller::update(float delta)
{
x_delta = 0;
y_delta = 0;
@@ -71,8 +72,8 @@
{
(*it)->update(delta);
- x_delta += (float)cos((*it)->get_angle() * 3.14159265 / 180) * speed *
delta * (*it)->get_pos();
- y_delta += (float)sin((*it)->get_angle() * 3.14159265 / 180) * speed *
delta * (*it)->get_pos();
+ x_delta += (float)cos((*it)->get_angle() * Math::pi / 180) * speed *
delta * (*it)->get_pos();
+ y_delta += (float)sin((*it)->get_angle() * Math::pi / 180) * speed *
delta * (*it)->get_pos();
}
}
Modified: branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -46,18 +46,18 @@
float y_delta;
public:
- AxisScroller (const std::vector<Axis*>& axes_, float speed_);
- ~AxisScroller ();
+ AxisScroller(const std::vector<Axis*>& axes_, float speed_);
+ ~AxisScroller();
- const float& get_x_delta () const;
- const float& get_y_delta () const;
+ const float& get_x_delta() const;
+ const float& get_y_delta() const;
- void get_delta (float& x, float& y) const;
+ void get_delta(float& x, float& y) const;
- void update (float delta);
+ void update(float delta);
private:
- AxisScroller (const AxisScroller&);
+ AxisScroller(const AxisScroller&);
AxisScroller& operator= (const AxisScroller&);
};
Modified: branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -17,8 +17,6 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#include <ClanLib/Display/mouse.h>
-#include <ClanLib/Core/System/error.h>
#include "mouse_scroller.hpp"
namespace Input {
@@ -26,10 +24,12 @@
MouseScroller::MouseScroller(int id) : old_x(0), old_y(0), x_delta(0),
y_delta(0)
{
+#if 0
if (id < 0 || id >= CL_Mouse::get_device_count())
throw CL_Error("MouseScroller: id is outside of the range");
device = CL_Mouse::get_device(id);
+#endif
}
const float&
@@ -54,11 +54,13 @@
void
MouseScroller::update (float)
{
+#if 0
x_delta = device.get_x() - old_x;
y_delta = device.get_y() - old_y;
old_x = (float)device.get_x();
old_y = (float)device.get_y();
+#endif
}
} // namespace Scroller
Modified: branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp 2007-07-18
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp 2007-07-18
04:32:38 UTC (rev 2753)
@@ -20,7 +20,6 @@
#ifndef HEADER_PINGUS_INPUT_MOUSE_SCROLLER_HXX
#define HEADER_PINGUS_INPUT_MOUSE_SCROLLER_HXX
-#include <ClanLib/Display/input_device.h>
#include "../scroller.hpp"
namespace Input {
@@ -33,7 +32,6 @@
*/
class MouseScroller : public Scroller {
private:
- CL_InputDevice device;
float old_x;
float old_y;
float x_delta;
@@ -42,15 +40,15 @@
public:
MouseScroller(int id);
- const float& get_x_delta () const;
- const float& get_y_delta () const;
+ const float& get_x_delta() const;
+ const float& get_y_delta() const;
- void get_delta (float& x, float& y) const;
+ void get_delta(float& x, float& y) const;
- void update (float);
+ void update(float);
private:
- MouseScroller (const MouseScroller&);
+ MouseScroller(const MouseScroller&);
MouseScroller& operator= (const MouseScroller&);
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r2753 - in branches/pingus_sdl: . data/controller src src/gui src/input src/input/axes src/input/buttons src/input/pointers src/input/scrollers,
jsalmon3 <=