home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / thx / source / theatrix / kdfold.cpp < prev    next >
C/C++ Source or Header  |  1995-04-25  |  1KB  |  69 lines

  1. #include "kdfold.h"
  2.  
  3. void HotkeyFolder::thxregister_key(Hand* hand,int code,callback cb)
  4.   {
  5.   // first, check if the code is already in the list
  6.   for (int i=0;i<numentries;i++)
  7.     {
  8.     if (entry[i].code==code) 
  9.       {
  10.       entry[i].list.add(hand,cb);
  11.       return;
  12.       }
  13.     }
  14.  
  15.   // if it wasn't check for an empty spot to put it in 
  16.   for (i=0;i<numentries;i++)
  17.     {
  18.     if (entry[i].code==0)
  19.       {
  20.       entry[i].list.add(hand,cb);
  21.       return;
  22.       }
  23.     }
  24.  
  25.   // if the code is not in the list and there are no empty slots, add
  26.   // the code at the end of the list
  27.   entry[numentries].code=code;
  28.   entry[numentries].list.add(hand,cb);
  29.   numentries++;
  30.   }
  31.  
  32. void HotkeyFolder::unregister_key(Hand* hand,int code,callback cb)
  33.   {
  34.   for (int i=0;i<numentries;i++)
  35.     {
  36.     if (entry[i].code==code)
  37.       {
  38.       entry[i].list.del(hand,cb);
  39.       if (entry[i].list.getnum()==0)  entry[i].code=0;
  40.       return;
  41.       }
  42.     }
  43.   }
  44.  
  45. void HotkeyFolder::delHand(Hand* h)
  46.   {
  47.   for (int i = 0; i < numentries; i++)
  48.       entry[i].list.delHand(h);
  49.   }
  50.  
  51. void HotkeyFolder::reset()
  52.   {
  53.   for (int i=0;i<MAXDOWNENTRY;i++)
  54.     {
  55.     entry[i].list.reset();
  56.     entry[i].code=0;
  57.     } 
  58.   }
  59.  
  60. void HotkeyFolder::dispatch(int, int, int)
  61. {
  62.   for (int i=0;i<numentries;i++)
  63.     {
  64.     int code=entry[i].code;
  65.     if (code!=0 && fg_kbtest(code))
  66.       entry[i].list.execute_callbacks(code);
  67.     }
  68. }
  69.