pingus-cvs
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]