turret.cpp

来自「quake 游戏原代码」· C++ 代码 · 共 46 行

CPP
46
字号
#include "ray.h"
#include "globals.h"
#include "rayspr.h"
#include "sprfunc.h"
#include "sfvars.h"
#include "turret.h"
#include "sprtypes.h"

#define FIRE_TIME 30
#define ANGLE_INC 120

void Turret_Create(pobject cur_object, long offset);
void Turret_Update(pobject cur_object, long update_num);
void Turret_Update_Z(pobject cur_object, psector new_sec);

void Init_Turrets(func_index index) {
   update_funcs[index]=Turret_Update;
   update_z_funcs[index]=Turret_Update_Z;
   load_extra_funcs[index]=Turret_Create;
}

void Turret_Create(pobject cur_object, long offset) {
   PSHORT cur_time=(PSHORT)NewPtr(sizeof(short));

   *(cur_time)=0;
   cur_object->extra_data=(pdata)cur_time;
   }

void Turret_Update_Z(pobject cur_object, psector new_sec) {
   }

void Turret_Update(pobject cur_object, long update_num) {
  PSHORT cur_time=(PSHORT)cur_object->extra_data;
                               
  if (++(*cur_time)==FIRE_TIME) {
     cur_object->angle=Get_Angle_Sum(cur_object->angle, ANGLE_INC); 
     Create_Object(cur_object->x, cur_object->y, cur_object->z+cur_object->type->eye_height,
        cur_object->angle, BULLET_TYPE, cur_object, cur_object->team);
     *(cur_time)=0;
        if (++cur_object->cur_frame==
            wall[cur_object->type->frames[0]].num_image)
           cur_object->cur_frame=0;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?