⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.cpp

📁 quake 游戏原代码
💻 CPP
字号:

#include "ray.h"
#include "globals.h"
#include "rayspr.h"
#include "message.h"

void Request_Object_Messages(pobject send_obj, pobject receive_obj) {
   if ((send_obj==NULL)||(receive_obj==NULL))
      return;

   pobject_node new_send_node, new_receive_node;

   new_send_node=(pobject_node)NewPtr(sizeof(object_node));
   new_receive_node=(pobject_node)NewPtr(sizeof(object_node));
   new_send_node->data=receive_obj;
   new_receive_node->data=send_obj;
   OL_Push_Node(new_send_node, send_obj->send_objects);
   OL_Push_Node(new_receive_node, send_obj->receive_objects);

}

void Release_Object_Messages(pobject send_obj, pobject receive_obj) {
   if ((send_obj==NULL)||(receive_obj==NULL))
      return;

   pobject_node cur_node;

   cur_node=send_obj->send_objects;
   while (!OL_Empty_Node(cur_node)) {
      if (cur_node->data==receive_obj) {
         break;
      }
      cur_node=OL_Next_Node(cur_node);
   } /* endwhile */

   if (!OL_Empty_Node(cur_node)) {
      OL_Delete_Node(cur_node, send_obj->send_objects);
   }

   cur_node=receive_obj->receive_objects;
   while (!OL_Empty_Node(cur_node)) {
      if (cur_node->data==send_obj) {
         break;
      }
      cur_node=OL_Next_Node(cur_node);
   } /* endwhile */

   if (!OL_Empty_Node(cur_node)) {
      OL_Delete_Node(cur_node, receive_obj->receive_objects);
   }

}

void Send_Auto_Message(pobject send_obj, ULONG message, pdata extra_data) {
  if (send_obj==NULL)
      return;
  
  pobject_node cur_node;

  cur_node=send_obj->send_objects;
  while (!OL_Empty_Node(cur_node)) {
     // send the message to the object (structure derefrencing & function pointer 'o rama)
     (*cur_node->data->type->Message_Func)(send_obj, cur_node->data, message, extra_data);

     cur_node=OL_Next_Node(cur_node);
  } /* endwhile */

}

ULONG Send_Specific_Message(pobject send_obj, pobject receive_obj, ULONG message,
   pdata extra_data) {
   if (receive_obj==NULL)
      return ERROR_MESSAGE;

   return (*receive_obj->type->Message_Func)(send_obj, receive_obj, message, extra_data);
}

⌨️ 快捷键说明

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