home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / Programming / Source / Car / Controller.m < prev    next >
Encoding:
Text File  |  1992-06-23  |  1.6 KB  |  100 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "Car_main.h"
  5. #import "Controller.h"
  6. #import "Car.h"
  7.  
  8. @implementation Controller
  9.  
  10. - init
  11. {
  12.     [super init];
  13.     controller = self;
  14.     return self;
  15. }
  16.  
  17. - read:(NXTypedStream *)stream
  18. {
  19.     [super read:stream];
  20.     NXReadTypes(stream,"fff",&mass,&shiftCeiling,&shiftFloor);
  21.     return self;
  22. }
  23.  
  24. - write:(NXTypedStream *)stream
  25. {
  26.     [super write:stream];
  27.     NXWriteTypes(stream,"fff",&mass,&shiftCeiling,&shiftFloor);
  28.     return self;
  29. }
  30.  
  31. - (float)mass
  32. {
  33.     return mass;
  34. }
  35.  
  36. - setMass:(float)aNumber
  37. {
  38.     mass = aNumber;
  39.     return self;
  40. }
  41.  
  42. - (float)shiftCeiling
  43. {
  44.     return shiftCeiling;
  45. }
  46.  
  47. - setShiftCeiling:(float)aNumber
  48. {
  49.     shiftCeiling = aNumber;
  50.     return self;
  51. }
  52.  
  53. - (float)shiftFloor
  54. {
  55.     return shiftFloor;
  56. }
  57.  
  58. - setShiftFloor:(float)aNumber
  59. {
  60.     shiftFloor = aNumber;
  61.     return self;
  62. }
  63.  
  64. - powerRequired:(float)power
  65. {
  66. float enginePower;
  67. float motorPower;
  68.  
  69.     if ( [car currentVelocity] * 3.6 > shiftCeiling )        // Gotta remember to change m/s to km/h
  70.         runningMode = ENGINE;
  71.     if ( [car currentVelocity] * 3.6 < shiftFloor )
  72.         runningMode = MOTOR;
  73.    
  74.     if ( runningMode == MOTOR )
  75.         {
  76.         motorPower = power;
  77.         enginePower = 0;
  78.         }
  79.     if ( runningMode == ENGINE )
  80.         {
  81.         motorPower = 0;
  82.         enginePower = power;    
  83.         }
  84.     if ( runningMode == BOTH )
  85.         {
  86.         // Not implemented yet.
  87.         }
  88.     if ( power < 0 )
  89.         {
  90.         motorPower = power;
  91.         enginePower = 0;
  92.         }
  93.     [engine powerRequired:enginePower];
  94.     [motor powerRequired:motorPower];
  95.     
  96.     return self;
  97. }
  98.  
  99. @end
  100.