亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? monster.cpp

?? Demo Source for a doom like engine using raycasting and voxel
?? CPP
字號:
#include "ray.h"
#include "globals.h"
#include "rayspr.h"
#include "sprfunc.h"
#include "sfvars.h"
#include "sprinter.h"
#include "fixed.h"
#include "rayfile.h"
#include "message.h"
#include "classes.h"
#include "defobj.h"
#include "getangle.h"
#include "visible.h"
#include "abs.h"

#define MAX_TIME_TO_LOSE_INTEREST 500
#define GUN_SPEED 50
#define MIN_OBJ_DIS (15*ONE)
#define ANIM_SPEED 31
#define ANIM_SHIFT 4
#define GUN_HEIGHT (cur_object->type->eye_height-10)
typedef struct MONSTER_DATA * pmonster_data;
typedef struct MONSTER_DATA {
   pobject cur_target;
   pvector2 patrol;
   short patrol_count;
   short time_to_lose_interest;
   short time_to_bullet;
   BOOL need_new_point;
   short cur_point;
} monster_data;

void Monster_Create(pobject cur_object, long extra_data_offset);
void Monster_Update(pobject cur_object, long update_num);
ULONG Monster_Message(pobject send_obj, pobject receive_obj, ULONG message, pdata extra_data);

void Init_Monsters(func_index index) {
   update_funcs[index]=Monster_Update;
   load_extra_funcs[index]=Monster_Create;
   message_funcs[index]=Monster_Message;
}

void Monster_Create(pobject cur_object, long extra_data_offset)
{
   pmonster_data new_data;               
   new_data=(pmonster_data)NewPtr(sizeof(monster_data));
 
   if (extra_data_offset==BAD_LOAD_OFFSET) {
      new_data->patrol_count=0;
      new_data->patrol=NULL;
   } else {                
      F_Seek(extra_data_offset);
      F_Get_Short(new_data->patrol_count);
      new_data->patrol=(pvector2)NewPtr(new_data->patrol_count * sizeof(vector2));
      for (short cur_point=0; cur_point<new_data->patrol_count; cur_point++) {
         F_Get_Long(new_data->patrol[cur_point].x);
         F_Get_Long(new_data->patrol[cur_point].y);
      } /* endfor */
   }

   new_data->cur_point=0;
   new_data->need_new_point=TRUE;
   new_data->cur_target=NULL;
   cur_object->extra_data=(pdata)new_data;
}

void Monster_Update(pobject cur_object, long update_num) {
   vector2 move_vec;
   pmonster_data obj_data=(pmonster_data)cur_object->extra_data;

   if (obj_data->cur_target!=NULL) {
      cur_object->angle=Get_Angle_Towards(obj_data->cur_target->x-cur_object->x,
                                                                obj_data->cur_target->y-cur_object->y);
      if (obj_data->time_to_bullet==0) {
         Create_Object(cur_object->x, cur_object->y, GUN_HEIGHT, 
            cur_object->angle, BULLET_TYPE, cur_object, cur_object->team);
         obj_data->time_to_bullet=GUN_SPEED;
      } else {
         obj_data->time_to_bullet--;
      }                          

      if ( (ABS(obj_data->cur_target->x-cur_object->x) > MIN_OBJ_DIS) ||
           (ABS(obj_data->cur_target->y-cur_object->y) > MIN_OBJ_DIS) ) {
         move_vec.x=cur_object->type->stats.base_speed*rcos_table[cur_object->angle];
         move_vec.y=cur_object->type->stats.base_speed*rsin_table[cur_object->angle];
         Move_Object_Vec(cur_object, &move_vec);
         cur_object->cur_frame=(update_num & ANIM_SPEED)>>ANIM_SHIFT;
      }

      if ((obj_data->time_to_bullet<4) || (obj_data->time_to_bullet>(GUN_SPEED-4)) ) {
         cur_object->cur_frame=4;
      }

      if (--obj_data->time_to_lose_interest==0) {
         Release_Object_Messages(obj_data->cur_target, cur_object);
         obj_data->cur_target=NULL;
      }
   } else {

      if (obj_data->patrol_count!=0) {
                          
      if (obj_data->need_new_point) {
         if ((++obj_data->cur_point)>=obj_data->patrol_count) {
            obj_data->cur_point=0;
         }
                                 
         cur_object->angle=Get_Angle_Towards(obj_data->patrol[obj_data->cur_point].x-
                cur_object->x, obj_data->patrol[obj_data->cur_point].y-cur_object->y);
         obj_data->need_new_point=FALSE;
         }

      move_vec.x=cur_object->type->stats.base_speed*rsin_table[cur_object->angle];
      move_vec.y=cur_object->type->stats.base_speed*rcos_table[cur_object->angle];
      
      if ((obj_data->patrol[obj_data->cur_point].x-cur_object->x)<=move_vec.x) {
         move_vec.x=obj_data->patrol[obj_data->cur_point].x-cur_object->x;
         move_vec.y=obj_data->patrol[obj_data->cur_point].y-cur_object->y;
         obj_data->need_new_point=TRUE;
      } /* endif */

      if (Move_Object_Vec(cur_object, &move_vec)) {
         obj_data->need_new_point=TRUE;
      }

      cur_object->cur_frame=(update_num & ANIM_SPEED)>>ANIM_SHIFT;

      }

      obj_data->cur_target=Check_For_Visible_Enemies(cur_object);
      if (obj_data->cur_target!=NULL) {
         obj_data->time_to_bullet=GUN_SPEED;
         obj_data->time_to_lose_interest=MAX_TIME_TO_LOSE_INTEREST;
         Request_Object_Messages(obj_data->cur_target, cur_object);
      }
   }
}

ULONG Monster_Message(pobject send_obj, pobject receive_obj, ULONG message, pdata extra_data) {
   pmonster_data obj_data=(pmonster_data)receive_obj->extra_data;

   switch (message) {
      case KILLED_MESSAGE:
         if (send_obj==(obj_data->cur_target))
            obj_data->cur_target=NULL;
         return NORMAL_MESSAGE;
      case HIT_OBJ:
      case HIT_BY_OBJ:
         if ((send_obj->type->obj_class==BULLET_CLASS)&&(send_obj->owner!=NULL)) {
            if (obj_data->cur_target!=NULL)
               Release_Object_Messages(obj_data->cur_target, receive_obj);
            Request_Object_Messages(send_obj->owner, receive_obj);
            obj_data->time_to_bullet=GUN_SPEED;
            obj_data->time_to_lose_interest=MAX_TIME_TO_LOSE_INTEREST;
            obj_data->cur_target=send_obj->owner;
            return NORMAL_MESSAGE;
         }
         break;
      default: 
         return Default_Message(send_obj, receive_obj, message, extra_data);
   } /* end switch */
return Default_Message(send_obj, receive_obj, message, extra_data);  
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丰满少妇在线播放bd日韩电影| 国产精品对白交换视频| 三级欧美韩日大片在线看| 欧美亚男人的天堂| 天堂av在线一区| 日韩欧美激情一区| 国产高清在线精品| 亚洲啪啪综合av一区二区三区| 一本大道久久a久久精二百| 一区二区成人在线| 欧美一区二区三区播放老司机| 麻豆成人av在线| 久久久久久久久岛国免费| 成人永久看片免费视频天堂| 亚洲欧美日韩在线| 欧美一区二区人人喊爽| 韩国女主播一区二区三区| 国产精品少妇自拍| 欧美日韩视频在线一区二区| 日本强好片久久久久久aaa| 2020国产精品久久精品美国| 丁香婷婷综合激情五月色| 一区二区三区在线影院| 日韩欧美一二区| 成年人国产精品| 日韩高清电影一区| 国产精品沙发午睡系列990531| 欧美在线不卡一区| 韩国av一区二区三区四区| 国产精品免费网站在线观看| 欧美日韩国产美| 国产麻豆日韩欧美久久| 亚洲综合一二区| 亚洲精品一区二区三区99| 在线免费一区三区| 国产在线一区二区综合免费视频| 亚洲欧美另类综合偷拍| 精品裸体舞一区二区三区| 色综合天天综合网天天看片| 奇米精品一区二区三区在线观看一| 国产精品国产精品国产专区不蜜 | 亚洲人成网站在线| 欧美一区二区三区四区在线观看| 国产91精品一区二区麻豆网站 | 日韩主播视频在线| 国产精品国产a级| 欧美一区二区三区视频免费| 91玉足脚交白嫩脚丫在线播放| 久久激五月天综合精品| 亚洲综合av网| 亚洲欧美一区二区三区久本道91| 国产午夜亚洲精品不卡| 欧美一区二区三区视频在线| 欧美天堂亚洲电影院在线播放| 国产99久久久国产精品| 国产在线一区二区综合免费视频| 日韩精品视频网| 亚洲国产综合视频在线观看| 自拍偷拍亚洲欧美日韩| 国产人妖乱国产精品人妖| 日韩欧美一区二区三区在线| 在线一区二区观看| 色国产综合视频| 99免费精品视频| 不卡的av电影| 高清beeg欧美| 国产二区国产一区在线观看| 国产一区二区三区四区五区美女 | 久久久久久免费| 日韩欧美国产一区二区在线播放 | 欧美一级欧美一级在线播放| 欧美视频在线不卡| 91高清视频免费看| 欧洲一区二区三区在线| 欧美在线观看视频一区二区三区| 91在线精品一区二区| jlzzjlzz亚洲女人18| kk眼镜猥琐国模调教系列一区二区 | 欧美日韩国产综合草草| 91九色最新地址| 欧美一卡在线观看| 欧美一区二区三区思思人| 日韩一区二区在线看| 91精品国产色综合久久久蜜香臀| 欧洲中文字幕精品| 欧美老人xxxx18| 日韩三级精品电影久久久 | 日韩二区三区四区| 免费成人av在线| 美女网站色91| 国产精品一区二区久久不卡 | 亚洲欧美日韩一区二区三区在线观看| 中文字幕一区二区三| 亚洲成人在线观看视频| 免费在线观看日韩欧美| 久久精品国产澳门| 久久99精品视频| 国产成人精品影院| 91首页免费视频| 欧美一区二区播放| 国产欧美视频一区二区三区| 中文字幕一区二区三区四区不卡 | 亚洲一区二区三区精品在线| 午夜精品一区二区三区免费视频| 天堂va蜜桃一区二区三区漫画版| 极品美女销魂一区二区三区| 国产一区二区三区国产| 色94色欧美sute亚洲13| 欧美一区二区在线免费播放| 中文字幕免费在线观看视频一区| 一区二区三区在线视频观看58| 麻豆91在线播放免费| 99久久99精品久久久久久 | 久久成人免费日本黄色| av不卡免费在线观看| 欧美一区二区三区视频在线观看 | 亚洲愉拍自拍另类高清精品| 免费看精品久久片| 91麻豆swag| www久久久久| 悠悠色在线精品| 国产盗摄一区二区三区| 欧美日韩在线观看一区二区 | 欧美日韩在线三区| 国产精品视频免费看| 日韩国产一二三区| 色综合久久六月婷婷中文字幕| 欧美一三区三区四区免费在线看 | 欧美一区二区国产| 亚洲男人天堂一区| 国产精品一区二区免费不卡 | 亚洲成av人片一区二区三区| 国产乱码一区二区三区| 欧美日韩aaa| 亚洲人成伊人成综合网小说| 国产一区二区三区黄视频 | 在线免费av一区| 国产日韩欧美精品一区| 免费国产亚洲视频| 欧美视频在线一区二区三区 | 国产女同互慰高潮91漫画| 图片区小说区国产精品视频| caoporm超碰国产精品| 欧美mv和日韩mv的网站| 五月婷婷另类国产| 色av成人天堂桃色av| 国产精品免费观看视频| 国产成人精品免费看| 欧美tk丨vk视频| 日本va欧美va瓶| 欧美日韩在线播放三区四区| 亚洲女厕所小便bbb| 99久久精品国产导航| 中文字幕免费不卡在线| 国产成人一区在线| 久久人人97超碰com| 美女视频黄久久| 日韩一级黄色大片| 美腿丝袜在线亚洲一区| 91精品国产综合久久久久久漫画 | 一区二区三区免费观看| av激情成人网| 亚洲国产高清在线观看视频| 国产精品1区2区| 国产色91在线| 国产成人av福利| 国产欧美一区二区三区在线老狼| 国内不卡的二区三区中文字幕| 日韩精品一区二区三区三区免费| 三级久久三级久久久| 欧美精品久久久久久久多人混战| 亚洲福利视频导航| 69堂成人精品免费视频| 美女视频免费一区| 久久久久久久一区| 成人av资源网站| 伊人色综合久久天天人手人婷| 在线观看日韩一区| 午夜a成v人精品| 欧美精品一区二区三区在线播放| 韩国一区二区在线观看| 中文幕一区二区三区久久蜜桃| 成人黄色综合网站| 有码一区二区三区| 欧美一区二区三区视频在线| 国产综合色视频| 中文字幕一区在线观看| 欧美三级日韩在线| 九九久久精品视频| 中文字幕制服丝袜一区二区三区 | 狠狠色狠狠色综合系列| 日本一区二区不卡视频| av中文字幕在线不卡| 亚洲在线一区二区三区| 欧美一区二区三区免费在线看| 国内一区二区视频| 亚洲日本成人在线观看| 6080午夜不卡| 成人午夜在线免费| 性做久久久久久久久|