Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 4780 in orxonox.OLD for orxonox/trunk/src/lib/event/event_handler.cc


Ignore:
Timestamp:
Jul 2, 2005, 10:55:47 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: 1. the crosshair is registered, @patrick: i thought it was a little bit harder… worked myself through the EventSystem, it is quite cool :)

  1. Player now knows a loadParams and init routine

also testing the Crosshair inside of the Player

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orxonox/trunk/src/lib/event/event_handler.cc

    r4519 r4780  
    1 /* 
     1/*
    22   orxonox - the future of 3D-vertical-scrollers
    33
     
    1111   ### File Specific:
    1212   main-programmer: Patrick Boenzli
    13    co-programmer: 
     13   co-programmer:
    1414*/
    1515
     
    3131   \brief standard constructor
    3232*/
    33 EventHandler::EventHandler () 
    34 {
    35   this->setClassID(CL_EVENT_HANDLER, "EventHandler"); 
     33EventHandler::EventHandler ()
     34{
     35  this->setClassID(CL_EVENT_HANDLER, "EventHandler");
    3636
    3737  this->listeners = new EventListener**[ES_NUMBER];
     
    4343    {
    4444      for(int j = 0; j < SDLK_LAST; ++j)
    45         {
    46           this->listeners[i][j] = NULL;
    47         }
     45        {
     46          this->listeners[i][j] = NULL;
     47        }
    4848    }
    4949  this->state = ES_GAME;
     
    6161
    6262*/
    63 EventHandler::~EventHandler () 
     63EventHandler::~EventHandler ()
    6464{
    6565  EventHandler::singletonRef = NULL;
     
    9999   than one state, you have to subscribe for each state again. If you want to subscribe for all states, use
    100100   state = ES_ALL, which will subscribe your listener for all states together.
     101 *
     102 * \todo this can also be done with the & operator, and checking for states, just set the esState to 1,2,4,8, and then 15 is equal to ES_ALL
    101103*/
    102104void EventHandler::subscribe(EventListener* el, elState state, int eventType)
     
    106108    {
    107109      for(int i = 0; i < ES_NUMBER; ++i)
    108         if( likely(this->listeners[state][eventType] == NULL))
    109           this->listeners[i][eventType] = el;
    110         else
    111           PRINTF(1)("Someone tried to subscribe to event %i @ state %i but this event has already been subscribed\n", eventType, state);
    112     }
    113   else 
     110        if( likely(this->listeners[state][eventType] == NULL))
     111          this->listeners[i][eventType] = el;
     112        else
     113          PRINTF(1)("%s of class %s tried to subscribe to event %i @ state %i but this event has already been subscribed\n", el->getName(), el->getClassName(), eventType, state);
     114    }
     115  else
    114116    if( likely(this->listeners[state][eventType] == NULL))
    115117      {
    116         this->listeners[state][eventType] = el;
     118        this->listeners[state][eventType] = el;
    117119      }
    118120    else
    119       PRINTF(1)("Someone tried to subscribe to event %i @ state %i but this event has already been subscribed\n", eventType, state);
     121      PRINTF(1)("% of class %s tried to subscribe to event %i @ state %i but this event has already been subscribed\n", el->getName(), el->getClassName(), eventType, state);
    120122}
    121123
     
    126128   \param eventType: the event, that shall be unsubscribed
    127129
    128    if you want to unsubscribe an event listener from all subscribed events, just use the 
     130   if you want to unsubscribe an event listener from all subscribed events, just use the
    129131   unsubscribe(EventListener* el, elState state) function
    130132*/
     
    140142   \param el: the listener that wants to unsubscribe itself
    141143   \param state: the state in which the events shall be unsubscribed
    142    
     144
    143145*/
    144146void EventHandler::unsubscribe(EventListener* el, elState state)
     
    147149    {
    148150      for(int i = 0; i < ES_NUMBER; ++i)
    149         {
    150           for(int j = 0; j < EV_NUMBER; ++j)
    151             {
    152               if( this->listeners[i][j] == el )
    153                 this->listeners[i][j] = NULL;
    154             }
    155         }
     151        {
     152          for(int j = 0; j < EV_NUMBER; ++j)
     153            {
     154              if( this->listeners[i][j] == el )
     155                this->listeners[i][j] = NULL;
     156            }
     157        }
    156158    }
    157159  else
    158160    {
    159161      for(int j = 0; j < EV_NUMBER; ++j)
    160         {
    161           if( this->listeners[state][j] == el )
    162             this->listeners[state][j] = NULL;
    163         }
     162        {
     163          if( this->listeners[state][j] == el )
     164            this->listeners[state][j] = NULL;
     165        }
    164166    }
    165167}
     
    175177    {
    176178      for(int i = 0; i < ES_NUMBER; ++i)
    177         {
    178           for(int j = 0; j < EV_NUMBER; ++j)
    179             {
    180               this->listeners[i][j] = NULL;
    181             }
    182         }
     179        {
     180          for(int j = 0; j < EV_NUMBER; ++j)
     181            {
     182              this->listeners[i][j] = NULL;
     183            }
     184        }
    183185    }
    184186  else
    185187    {
    186188      for(int j = 0; j < EV_NUMBER; ++j)
    187         {
    188           this->listeners[state][j] = NULL;
    189         }
    190     }
    191 }
    192 
    193 
    194 /**
    195    \brief core function of event handler: receives all events from SDL 
     189        {
     190          this->listeners[state][j] = NULL;
     191        }
     192    }
     193}
     194
     195
     196/**
     197   \brief core function of event handler: receives all events from SDL
    196198
    197199   The event from the SDL framework are collected here and distributed to all listeners.
     
    205207    {
    206208      switch( event.type)
    207         {
    208         case SDL_KEYDOWN:
    209           ev.bPressed = true;
    210           ev.type = event.key.keysym.sym;
    211           break;
    212         case SDL_KEYUP:
    213           ev.bPressed = false;
    214           ev.type = event.key.keysym.sym;
    215           break;
    216         case SDL_MOUSEMOTION:
    217           ev.bPressed = false;
    218           ev.type = EV_MOUSE_MOTION;
    219           ev.x = event.motion.x;
    220           ev.y = event.motion.y;
    221           ev.xRel = event.motion.xrel;
    222           ev.yRel = event.motion.yrel;
    223           break;
    224         case SDL_MOUSEBUTTONUP:
    225           ev.bPressed = false;
    226           ev.type = event.button.button + SDLK_LAST;
    227           break;
    228         case SDL_MOUSEBUTTONDOWN:
    229           ev.bPressed = true;
    230           ev.type = event.button.button + SDLK_LAST;
    231           break;
    232         case SDL_JOYAXISMOTION:
    233           ev.bPressed = false;
    234           ev.type = EV_JOY_AXIS_MOTION;
    235           break;
    236         case SDL_JOYBALLMOTION:
    237           ev.bPressed = false;
    238           ev.type = EV_JOY_BALL_MOTION;
    239           break;
    240         case SDL_JOYHATMOTION:
    241           ev.bPressed = false;
    242           ev.type = EV_JOY_HAT_MOTION;
    243           break;
    244         case SDL_JOYBUTTONDOWN:
    245           ev.bPressed = true;
    246           ev.type = EV_JOY_BUTTON;
    247           break;
    248         case SDL_JOYBUTTONUP:
    249           ev.bPressed = true;
    250           ev.type = EV_JOY_BUTTON;
    251           break;
    252         default:
    253           ev.type = EV_UNKNOWN;
    254           break;
    255         }
    256 
    257       /* small debug routine: shows alle events dispatched by the event handler */
     209        {
     210        case SDL_KEYDOWN:
     211          ev.bPressed = true;
     212          ev.type = event.key.keysym.sym;
     213          break;
     214        case SDL_KEYUP:
     215          ev.bPressed = false;
     216          ev.type = event.key.keysym.sym;
     217          break;
     218        case SDL_MOUSEMOTION:
     219          ev.bPressed = false;
     220          ev.type = EV_MOUSE_MOTION;
     221          ev.x = event.motion.x;
     222          ev.y = event.motion.y;
     223          ev.xRel = event.motion.xrel;
     224          ev.yRel = event.motion.yrel;
     225          break;
     226        case SDL_MOUSEBUTTONUP:
     227          ev.bPressed = false;
     228          ev.type = event.button.button + SDLK_LAST;
     229          break;
     230        case SDL_MOUSEBUTTONDOWN:
     231          ev.bPressed = true;
     232          ev.type = event.button.button + SDLK_LAST;
     233          break;
     234        case SDL_JOYAXISMOTION:
     235          ev.bPressed = false;
     236          ev.type = EV_JOY_AXIS_MOTION;
     237          break;
     238        case SDL_JOYBALLMOTION:
     239          ev.bPressed = false;
     240          ev.type = EV_JOY_BALL_MOTION;
     241          break;
     242        case SDL_JOYHATMOTION:
     243          ev.bPressed = false;
     244          ev.type = EV_JOY_HAT_MOTION;
     245          break;
     246        case SDL_JOYBUTTONDOWN:
     247          ev.bPressed = true;
     248          ev.type = EV_JOY_BUTTON;
     249          break;
     250        case SDL_JOYBUTTONUP:
     251          ev.bPressed = true;
     252          ev.type = EV_JOY_BUTTON;
     253          break;
     254        default:
     255          ev.type = EV_UNKNOWN;
     256          break;
     257        }
     258
     259      /* small debug routine: shows all events dispatched by the event handler */
    258260      PRINT(4)("\n==========================| EventHandler::process () |===\n");
    259       PRINT(4)("=  Got Event nr %i, for state %i", ev.type, this->state); 
    260      
     261      PRINT(4)("=  Got Event nr %i, for state %i", ev.type, this->state);
     262
    261263      listener = this->listeners[this->state][ev.type];
    262264      if( listener != NULL)
    263         {
    264           PRINT(4)("=  Event dispatcher msg: This event has been consumed\n");
    265           PRINT(4)("=======================================================\n");     
    266           listener->process(ev);
    267         }
     265        {
     266          PRINT(4)("=  Event dispatcher msg: This event has been consumed\n");
     267          PRINT(4)("=======================================================\n");
     268          listener->process(ev);
     269        }
    268270      else
    269         {
    270           PRINT(4)("=  Event dispatcher msg: This event has NOT been consumed\n");
    271           PRINT(4)("=======================================================\n");     
    272         }
    273 
    274 
    275     }
    276 }
    277 
     271        {
     272          PRINT(4)("=  Event dispatcher msg: This event has NOT been consumed\n");
     273          PRINT(4)("=======================================================\n");
     274        }
     275    }
     276}
     277
Note: See TracChangeset for help on using the changeset viewer.