[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3057 - trunk/pingus/src/input2
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3057 - trunk/pingus/src/input2 |
Date: |
Sun, 2 Sep 2007 04:22:49 +0200 |
Author: grumbel
Date: 2007-09-02 04:22:49 +0200 (Sun, 02 Sep 2007)
New Revision: 3057
Modified:
trunk/pingus/src/input2/controller.cpp
trunk/pingus/src/input2/controller.hpp
trunk/pingus/src/input2/main.cpp
trunk/pingus/src/input2/manager.cpp
trunk/pingus/src/input2/manager.hpp
Log:
- little bit restructuring to allow multiple controller being created
Modified: trunk/pingus/src/input2/controller.cpp
===================================================================
--- trunk/pingus/src/input2/controller.cpp 2007-09-02 02:12:57 UTC (rev
3056)
+++ trunk/pingus/src/input2/controller.cpp 2007-09-02 02:22:49 UTC (rev
3057)
@@ -29,8 +29,7 @@
namespace Input {
-void
-Controller::load(const ControllerDescription& desc)
+Controller::Controller(const ControllerDescription& desc)
{
const std::vector<int>& button_lst = desc.get_buttons();
for(std::vector<int>::const_iterator i = button_lst.begin(); i !=
button_lst.end(); ++i)
@@ -57,7 +56,6 @@
}
}
-
ControllerScroller*
Controller::get_scroller(int id)
{
@@ -174,6 +172,14 @@
std::cout << "Controller::scroller_event: id=" << id << " " << xrel << ", "
<< yrel << std::endl;
}
+std::vector<Event>
+Controller::poll_events()
+{
+ std::vector<Event> old_events = events;
+ events.clear();
+ return old_events;
+}
+
} // namespace Input
/* EOF */
Modified: trunk/pingus/src/input2/controller.hpp
===================================================================
--- trunk/pingus/src/input2/controller.hpp 2007-09-02 02:12:57 UTC (rev
3056)
+++ trunk/pingus/src/input2/controller.hpp 2007-09-02 02:22:49 UTC (rev
3057)
@@ -41,11 +41,11 @@
std::vector<ControllerPointer*> pointers;
std::vector<ControllerScroller*> scrollers;
-public:
- // Events
std::vector<Event> events;
+public:
+ std::vector<Event> poll_events();
- Controller() {}
+ Controller(const ControllerDescription& desc);
~Controller() {}
ControllerAxis* get_axis(int id);
@@ -63,8 +63,6 @@
void add_pointer(int id, ControllerPointer* pointer);
void add_scroller(int id, ControllerScroller* scroller);
- void load(const ControllerDescription& desc);
-
void update(float delta);
private:
Controller(const Controller&);
Modified: trunk/pingus/src/input2/main.cpp
===================================================================
--- trunk/pingus/src/input2/main.cpp 2007-09-02 02:12:57 UTC (rev 3056)
+++ trunk/pingus/src/input2/main.cpp 2007-09-02 02:22:49 UTC (rev 3057)
@@ -1,6 +1,7 @@
#include <stdexcept>
#include "SDL.h"
#include "manager.hpp"
+#include "controller.hpp"
int main()
{
@@ -15,10 +16,13 @@
Input::Manager manager;
- manager.load("../../data/controller/input2.scm");
+ Input::Controller* controller
+ = manager.create_controller("../../data/controller/input2.scm");
while(true)
{
+ std::vector<Input::Event> events = controller->poll_events();
+
manager.update(0.033);
SDL_Delay(33);
Modified: trunk/pingus/src/input2/manager.cpp
===================================================================
--- trunk/pingus/src/input2/manager.cpp 2007-09-02 02:12:57 UTC (rev 3056)
+++ trunk/pingus/src/input2/manager.cpp 2007-09-02 02:22:49 UTC (rev 3057)
@@ -85,10 +85,10 @@
}
}
-void
-Manager::load(const std::string& filename)
+Controller*
+Manager::create_controller(const std::string& filename)
{
- controller.load(desc);
+ std::auto_ptr<Controller> controller(new Controller(desc));
FileReader reader = FileReader::parse(filename);
@@ -108,7 +108,7 @@
for(std::vector<FileReader>::const_iterator j =
pointers.begin(); j != pointers.end(); ++j)
{
int id = desc.get_definition(i->get_name()).id;
- ControllerPointer* ctrl_pointer = controller.get_pointer(id);
+ ControllerPointer* ctrl_pointer =
controller->get_pointer(id);
Pointer* pointer = create_pointer(*j, ctrl_pointer);
if (pointer)
ctrl_pointer->add_pointer(pointer);
@@ -123,7 +123,7 @@
for(std::vector<FileReader>::const_iterator j =
scrollers.begin(); j != scrollers.end(); ++j)
{
int id = desc.get_definition(i->get_name()).id;
- ControllerScroller* ctrl_scroller =
controller.get_scroller(id);
+ ControllerScroller* ctrl_scroller =
controller->get_scroller(id);
Scroller* scroller = create_scroller(*j, ctrl_scroller);
if (scroller)
ctrl_scroller->add_scroller(scroller);
@@ -138,7 +138,7 @@
for(std::vector<FileReader>::const_iterator j = buttons.begin();
j != buttons.end(); ++j)
{
int id = desc.get_definition(i->get_name()).id;
- ControllerButton* ctrl_button = controller.get_button(id);
+ ControllerButton* ctrl_button = controller->get_button(id);
Button* button = create_button(*j, ctrl_button);
if (button)
ctrl_button->add_button(button);
@@ -152,7 +152,7 @@
for(std::vector<FileReader>::const_iterator j = axes.begin(); j
!= axes.end(); ++j)
{
int id = desc.get_definition(i->get_name()).id;
- ControllerAxis* ctrl_axis = controller.get_axis(id);
+ ControllerAxis* ctrl_axis = controller->get_axis(id);
Axis* axis = create_axis(*j, ctrl_axis);
if (axis)
ctrl_axis->add_axis(axis);
@@ -167,6 +167,8 @@
}
}
}
+
+ return controller.release();
}
void
@@ -175,7 +177,9 @@
for(Drivers::iterator i = drivers.begin(); i != drivers.end(); ++i)
(*i)->update(delta);
- controller.update(delta);
+ for(std::vector<Controller*>::iterator i = controller.begin();
+ i != controller.end(); ++i)
+ (*i)->update(delta);
}
Driver*
Modified: trunk/pingus/src/input2/manager.hpp
===================================================================
--- trunk/pingus/src/input2/manager.hpp 2007-09-02 02:12:57 UTC (rev 3056)
+++ trunk/pingus/src/input2/manager.hpp 2007-09-02 02:22:49 UTC (rev 3057)
@@ -33,21 +33,24 @@
typedef std::vector<Driver*> Drivers;
Drivers drivers;
- Controller controller;
+ std::vector<Controller*> controller;
ControllerDescription desc;
+
public:
Manager();
- void load(const std::string& filename);
void update(float delta);
- Driver* load_driver(const std::string& name);
- Driver* get_driver(const std::string& name);
+ Controller* create_controller(const std::string& filename);
Button* create_button (const FileReader& reader, Control* parent);
Axis* create_axis (const FileReader& reader, Control* parent);
Pointer* create_pointer (const FileReader& reader, Control* parent);
Scroller* create_scroller(const FileReader& reader, Control* parent);
+
+private:
+ Driver* load_driver(const std::string& name);
+ Driver* get_driver(const std::string& name);
};
} // namespace Input
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3057 - trunk/pingus/src/input2,
grumbel at BerliOS <=