Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 4369 in orxonox.OLD for orxonox/trunk/src/util


Ignore:
Timestamp:
May 28, 2005, 4:18:58 PM (20 years ago)
Author:
patrick
Message:

orxonox/trunk: key binding implemented

Location:
orxonox/trunk/src/util/event
Files:
3 edited

Legend:

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

    r4366 r4369  
    7474}
    7575
    76 
    77 /**
    78    \brief loads new key bindings from a file
    79    \param filename: The path and name of the file to load the bindings from
    80 */
    81 void EventHandler::loadKeyBindings (const char* fileName)
    82 {
    83   FILE* stream;
    84  
    85   PRINTF(4)("Loading key bindings from %s\n", fileName);
    86  
    87   // remove old bindings if present
    88   if( this->keyAliases != NULL)
    89     {
    90       free (this->keyAliases);
    91       this->keyAliases = NULL;
    92     }
    93  
    94   // create parser
    95   IniParser parser(fileName);
    96   if( parser.getSection (CONFIG_SECTION_PLAYER "1") == -1)
    97     {
    98       PRINTF(1)("Could not find key bindings " CONFIG_SECTION_PLAYER"1 in %s\n", fileName);
    99       return;
    100     }
    101   // allocate empty lookup table
    102   this->keyAliases = (KeyBindings*) calloc (1, sizeof (KeyBindings));
    103  
    104   char namebuf[256];
    105   char valuebuf[256];
    106   memset (namebuf, 0, 256);
    107   memset (valuebuf, 0, 256);
    108   int* index;
    109  
    110   while( parser.nextVar (namebuf, valuebuf) != -1)
    111     {
    112       //index = nameToIndex (valuebuf);
    113       int c;
    114       if( (c = keynameToSDLK (valuebuf)) != -1)
    115         {
    116           index[1] = c; index[0] = 0;
    117         }
    118       if( (c = buttonnameToSDLB (valuebuf)) != -1)
    119         {
    120           index[1] = c; index[0] = 1;
    121         }
    122 
    123       switch( index[0])
    124         {
    125         case 0:
    126           PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
    127           strcpy (this->keyAliases->keys[index[1]], namebuf);
    128           break;
    129         case 1:
    130           PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
    131           strcpy (this->keyAliases->buttons[index[1]], namebuf);
    132           break;
    133         default:
    134           break;
    135         }
    136       memset (namebuf, 0, 256);
    137       memset (valuebuf, 0, 256);
    138     }
    139 
    140 
    141   // PARSE MISC SECTION
    142   if( parser.getSection (CONFIG_SECTION_MISC_KEYS) == -1)
    143     {
    144       PRINTF(1)("Could not find key bindings in %s\n", fileName);
    145       return;
    146     }
    147 
    148   while( parser.nextVar (namebuf, valuebuf) != -1)
    149     {
    150       //index = nameToIndex (valuebuf);     
    151       int c;
    152       if( (c = keynameToSDLK (valuebuf)) != -1)
    153         {
    154           index[1] = c; index[0] = 0;
    155         }
    156       if( (c = buttonnameToSDLB (valuebuf)) != -1)
    157         {
    158           index[1] = c; index[0] = 1;
    159         }
    160 
    161 
    162       switch( index[0])
    163         {
    164         case 0:
    165           PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
    166           strcpy (keyAliases->keys[index[1]], namebuf);
    167           break;
    168         case 1:
    169           PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
    170           strcpy (keyAliases->buttons[index[1]], namebuf);
    171           break;
    172         default:
    173           break;
    174         }
    175       memset (namebuf, 0, 256);
    176       memset (valuebuf, 0, 256);
    177     }
    178 }
    17976
    18077
  • orxonox/trunk/src/util/event/event_handler.h

    r4368 r4369  
    4040  void unsubscribeListener(int eventType, elState state);
    4141  void flush(elState state);
    42  
    43   void loadKeyBindings(const char* fileName);
    4442
    4543  void tick(float t);
  • orxonox/trunk/src/util/event/key_mapper.cc

    r4367 r4369  
    4040  // delete what has to be deleted here
    4141}
     42
     43
     44/**
     45   \brief loads new key bindings from a file
     46   \param filename: The path and name of the file to load the bindings from
     47*/
     48void KeyMapper::loadKeyBindings (const char* fileName)
     49{
     50  FILE* stream;
     51 
     52  PRINTF(4)("Loading key bindings from %s\n", fileName);
     53 
     54  // remove old bindings if present
     55  if( this->keyAliases != NULL)
     56    {
     57      free (this->keyAliases);
     58      this->keyAliases = NULL;
     59    }
     60 
     61  // create parser
     62  IniParser parser(fileName);
     63  if( parser.getSection (CONFIG_SECTION_PLAYER "1") == -1)
     64    {
     65      PRINTF(1)("Could not find key bindings " CONFIG_SECTION_PLAYER"1 in %s\n", fileName);
     66      return;
     67    }
     68  // allocate empty lookup table
     69  this->keyAliases = (KeyBindings*) calloc (1, sizeof (KeyBindings));
     70 
     71  char namebuf[256];
     72  char valuebuf[256];
     73  memset (namebuf, 0, 256);
     74  memset (valuebuf, 0, 256);
     75  int* index;
     76 
     77  while( parser.nextVar (namebuf, valuebuf) != -1)
     78    {
     79      //index = nameToIndex (valuebuf);
     80      int c;
     81      if( (c = keynameToSDLK (valuebuf)) != -1)
     82        {
     83          index[1] = c; index[0] = 0;
     84        }
     85      if( (c = buttonnameToSDLB (valuebuf)) != -1)
     86        {
     87          index[1] = c; index[0] = 1;
     88        }
     89
     90      switch( index[0])
     91        {
     92        case 0:
     93          PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
     94          strcpy (this->keyAliases->keys[index[1]], namebuf);
     95          break;
     96        case 1:
     97          PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
     98          strcpy (this->keyAliases->buttons[index[1]], namebuf);
     99          break;
     100        default:
     101          break;
     102        }
     103      memset (namebuf, 0, 256);
     104      memset (valuebuf, 0, 256);
     105    }
     106
     107
     108  // PARSE MISC SECTION
     109  if( parser.getSection (CONFIG_SECTION_MISC_KEYS) == -1)
     110    {
     111      PRINTF(1)("Could not find key bindings in %s\n", fileName);
     112      return;
     113    }
     114
     115  while( parser.nextVar (namebuf, valuebuf) != -1)
     116    {
     117      //index = nameToIndex (valuebuf);     
     118      int c;
     119      if( (c = keynameToSDLK (valuebuf)) != -1)
     120        {
     121          index[1] = c; index[0] = 0;
     122        }
     123      if( (c = buttonnameToSDLB (valuebuf)) != -1)
     124        {
     125          index[1] = c; index[0] = 1;
     126        }
     127
     128
     129      switch( index[0])
     130        {
     131        case 0:
     132          PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
     133          strcpy (keyAliases->keys[index[1]], namebuf);
     134          break;
     135        case 1:
     136          PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
     137          strcpy (keyAliases->buttons[index[1]], namebuf);
     138          break;
     139        default:
     140          break;
     141        }
     142      memset (namebuf, 0, 256);
     143      memset (valuebuf, 0, 256);
     144    }
     145}
Note: See TracChangeset for help on using the changeset viewer.