home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / RAYCAST.ZIP / TURRET.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-09-29  |  1.3 KB  |  46 lines

  1. #include "ray.h"
  2. #include "globals.h"
  3. #include "rayspr.h"
  4. #include "sprfunc.h"
  5. #include "sfvars.h"
  6. #include "turret.h"
  7. #include "sprtypes.h"
  8.  
  9. #define FIRE_TIME 30
  10. #define ANGLE_INC 120
  11.  
  12. void Turret_Create(pobject cur_object, long offset);
  13. void Turret_Update(pobject cur_object, long update_num);
  14. void Turret_Update_Z(pobject cur_object, psector new_sec);
  15.  
  16. void Init_Turrets(func_index index) {
  17.    update_funcs[index]=Turret_Update;
  18.    update_z_funcs[index]=Turret_Update_Z;
  19.    load_extra_funcs[index]=Turret_Create;
  20. }
  21.  
  22. void Turret_Create(pobject cur_object, long offset) {
  23.    PSHORT cur_time=(PSHORT)NewPtr(sizeof(short));
  24.  
  25.    *(cur_time)=0;
  26.    cur_object->extra_data=(pdata)cur_time;
  27.    }
  28.  
  29. void Turret_Update_Z(pobject cur_object, psector new_sec) {
  30.    }
  31.  
  32. void Turret_Update(pobject cur_object, long update_num) {
  33.   PSHORT cur_time=(PSHORT)cur_object->extra_data;
  34.                                
  35.   if (++(*cur_time)==FIRE_TIME) {
  36.      cur_object->angle=Get_Angle_Sum(cur_object->angle, ANGLE_INC); 
  37.      Create_Object(cur_object->x, cur_object->y, cur_object->z+cur_object->type->eye_height,
  38.         cur_object->angle, BULLET_TYPE, cur_object, cur_object->team);
  39.      *(cur_time)=0;
  40.         if (++cur_object->cur_frame==
  41.             wall[cur_object->type->frames[0]].num_image)
  42.            cur_object->cur_frame=0;
  43.   }
  44. }
  45.  
  46.