home *** CD-ROM | disk | FTP | other *** search
/ Ragnaroek / Ragnaroek.img / OpponentApp / RagnarokListener.m < prev    next >
Text File  |  1991-12-09  |  5KB  |  244 lines

  1. #import <appkit/appkit.h>
  2. #import "RagnarokListener.h"
  3. #import <mach.h>
  4. #import <sys/message.h>
  5. #import <servers/netname.h>
  6. extern port_t name_server_port;
  7. extern id NXResponsibleDelegate();
  8. @implementation  RagnarokListener :Listener
  9. {}
  10. static NXRemoteMethod *remoteMethods = NULL;
  11. #define REMOTEMETHODS 13
  12. + (void)initialize 
  13. /* */
  14. {
  15.     if (!remoteMethods) {
  16.     remoteMethods =
  17.     (NXRemoteMethod *) malloc((REMOTEMETHODS+1)*sizeof(NXRemoteMethod));
  18.     remoteMethods[0].key = 
  19.     @selector(submitMoveFrom:To:);
  20.     remoteMethods[0].types = "ii";
  21.     remoteMethods[1].key = 
  22.     @selector(submitTentativeMoveFrom:To:);
  23.     remoteMethods[1].types = "ii";
  24.     remoteMethods[2].key = 
  25.     @selector(submitNoTentativeMove);
  26.     remoteMethods[2].types = "";
  27.     remoteMethods[3].key = 
  28.     @selector(submitUndos:);
  29.     remoteMethods[3].types = "i";
  30.     remoteMethods[4].key = 
  31.     @selector(submitResetGame);
  32.     remoteMethods[4].types = "";
  33.     remoteMethods[5].key = 
  34.     @selector(submitMessage:);
  35.     remoteMethods[5].types = "c";
  36.     remoteMethods[6].key = 
  37.     @selector(goodbye);
  38.     remoteMethods[6].types = "";
  39.     remoteMethods[7].key = 
  40.     @selector(pleaseAllow:Undo:);
  41.     remoteMethods[7].types = "ii";
  42.     remoteMethods[8].key = 
  43.     @selector(pleaseAllow:StartOver:);
  44.     remoteMethods[8].types = "ii";
  45.     remoteMethods[9].key = 
  46.     @selector(pleaseHurryUp:);
  47.     remoteMethods[9].types = "i";
  48.     remoteMethods[10].key = 
  49.     @selector(allow:);
  50.     remoteMethods[10].types = "i";
  51.     remoteMethods[11].key = 
  52.     @selector(refuse:);
  53.     remoteMethods[11].types = "i";
  54.     remoteMethods[12].key = 
  55.     @selector(ok:);
  56.     remoteMethods[12].types = "i";
  57.     remoteMethods[REMOTEMETHODS].key = NULL;
  58.     }
  59. }
  60. -(int)submitMoveFrom : (int) from
  61.     To : (int) to
  62. /* */
  63. {
  64.     id _NXd;
  65.     if (_NXd = NXResponsibleDelegate(self,
  66.     @selector(submitMoveFrom:To:)))
  67.     return [_NXd submitMoveFrom : from
  68.         To : to];
  69.     return -1;
  70. }
  71.  
  72. -(int)submitTentativeMoveFrom : (int) from
  73.     To : (int) to
  74. /* */
  75. {
  76.     id _NXd;
  77.     if (_NXd = NXResponsibleDelegate(self,
  78.     @selector(submitTentativeMoveFrom:To:)))
  79.     return [_NXd submitTentativeMoveFrom : from
  80.         To : to];
  81.     return -1;
  82. }
  83.  
  84. -(int)submitNoTentativeMove
  85. /* */
  86. {
  87.     id _NXd;
  88.     if (_NXd = NXResponsibleDelegate(self,
  89.     @selector(submitNoTentativeMove)))
  90.     return [_NXd submitNoTentativeMove];
  91.     return -1;
  92. }
  93.  
  94. -(int)submitUndos : (int) howMany
  95. /* */
  96. {
  97.     id _NXd;
  98.     if (_NXd = NXResponsibleDelegate(self,
  99.     @selector(submitUndos:)))
  100.     return [_NXd submitUndos : howMany];
  101.     return -1;
  102. }
  103.  
  104. -(int)submitResetGame
  105. /* */
  106. {
  107.     id _NXd;
  108.     if (_NXd = NXResponsibleDelegate(self,
  109.     @selector(submitResetGame)))
  110.     return [_NXd submitResetGame];
  111.     return -1;
  112. }
  113.  
  114. -(int)submitMessage : (char *) aString
  115. /* */
  116. {
  117.     id _NXd;
  118.     if (_NXd = NXResponsibleDelegate(self,
  119.     @selector(submitMessage:)))
  120.     return [_NXd submitMessage : aString];
  121.     return -1;
  122. }
  123.  
  124. -(int)goodbye
  125. /* */
  126. {
  127.     id _NXd;
  128.     if (_NXd = NXResponsibleDelegate(self,
  129.     @selector(goodbye)))
  130.     return [_NXd goodbye];
  131.     return -1;
  132. }
  133.  
  134. -(int)pleaseAllow : (int) tag
  135.     Undo : (int) howMany
  136. /* */
  137. {
  138.     id _NXd;
  139.     if (_NXd = NXResponsibleDelegate(self,
  140.     @selector(pleaseAllow:Undo:)))
  141.     return [_NXd pleaseAllow : tag
  142.         Undo : howMany];
  143.     return -1;
  144. }
  145.  
  146. -(int)pleaseAllow : (int) tag
  147.     StartOver : (int) ignored
  148. /* */
  149. {
  150.     id _NXd;
  151.     if (_NXd = NXResponsibleDelegate(self,
  152.     @selector(pleaseAllow:StartOver:)))
  153.     return [_NXd pleaseAllow : tag
  154.         StartOver : ignored];
  155.     return -1;
  156. }
  157.  
  158. -(int)pleaseHurryUp : (int) tag
  159. /* */
  160. {
  161.     id _NXd;
  162.     if (_NXd = NXResponsibleDelegate(self,
  163.     @selector(pleaseHurryUp:)))
  164.     return [_NXd pleaseHurryUp : tag];
  165.     return -1;
  166. }
  167.  
  168. -(int)allow : (int) tag
  169. /* */
  170. {
  171.     id _NXd;
  172.     if (_NXd = NXResponsibleDelegate(self,
  173.     @selector(allow:)))
  174.     return [_NXd allow : tag];
  175.     return -1;
  176. }
  177.  
  178. -(int)refuse : (int) tag
  179. /* */
  180. {
  181.     id _NXd;
  182.     if (_NXd = NXResponsibleDelegate(self,
  183.     @selector(refuse:)))
  184.     return [_NXd refuse : tag];
  185.     return -1;
  186. }
  187.  
  188. -(int)ok : (int) tag
  189. /* */
  190. {
  191.     id _NXd;
  192.     if (_NXd = NXResponsibleDelegate(self,
  193.     @selector(ok:)))
  194.     return [_NXd ok : tag];
  195.     return -1;
  196. }
  197.  
  198. - (int) performRemoteMethod : (NXRemoteMethod *) method
  199.                   paramList : (NXParamValue *) paramList {
  200. /* */
  201.     switch (method - remoteMethods) {
  202.     case 0:
  203.     return [self submitMoveFrom : paramList[0].ival
  204.         To : paramList[1].ival];
  205.     case 1:
  206.     return [self submitTentativeMoveFrom : paramList[0].ival
  207.         To : paramList[1].ival];
  208.     case 2:
  209.     return [self submitNoTentativeMove];
  210.     case 3:
  211.     return [self submitUndos : paramList[0].ival];
  212.     case 4:
  213.     return [self submitResetGame];
  214.     case 5:
  215.     return [self submitMessage : paramList[0].bval.p];
  216.     case 6:
  217.     return [self goodbye];
  218.     case 7:
  219.     return [self pleaseAllow : paramList[0].ival
  220.         Undo : paramList[1].ival];
  221.     case 8:
  222.     return [self pleaseAllow : paramList[0].ival
  223.         StartOver : paramList[1].ival];
  224.     case 9:
  225.     return [self pleaseHurryUp : paramList[0].ival];
  226.     case 10:
  227.     return [self allow : paramList[0].ival];
  228.     case 11:
  229.     return [self refuse : paramList[0].ival];
  230.     case 12:
  231.     return [self ok : paramList[0].ival];
  232.     default:
  233.     return [super performRemoteMethod : method paramList : paramList];
  234.     }
  235. }
  236. - (NXRemoteMethod *) remoteMethodFor: (SEL) aSel {
  237. /* */
  238.     NXRemoteMethod *rm;
  239.     if (rm = NXRemoteMethodFromSel(aSel,remoteMethods))
  240.         return rm;
  241.     return [super remoteMethodFor : aSel];
  242. }
  243. @end
  244.