d_net.h
上传用户:xuyinpeng
上传日期:2021-05-12
资源大小:455k
文件大小:3k
源码类别:

射击游戏

开发平台:

Visual C++

  1. // Emacs style mode select   -*- C++ -*- 
  2. //-----------------------------------------------------------------------------
  3. //
  4. // $Id:$
  5. //
  6. // Copyright (C) 1993-1996 by id Software, Inc.
  7. //
  8. // This source is available for distribution and/or modification
  9. // only under the terms of the DOOM Source Code License as
  10. // published by id Software. All rights reserved.
  11. //
  12. // The source is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
  15. // for more details.
  16. //
  17. // DESCRIPTION:
  18. // Networking stuff.
  19. //
  20. //-----------------------------------------------------------------------------
  21. #ifndef __D_NET__
  22. #define __D_NET__
  23. #include "d_player.h"
  24. #ifdef __GNUG__
  25. #pragma interface
  26. #endif
  27. //
  28. // Network play related stuff.
  29. // There is a data struct that stores network
  30. //  communication related stuff, and another
  31. //  one that defines the actual packets to
  32. //  be transmitted.
  33. //
  34. #define DOOMCOM_ID 0x12345678l
  35. // Max computers/players in a game.
  36. #define MAXNETNODES 8
  37. // Networking and tick handling related.
  38. #define BACKUPTICS 12
  39. typedef enum
  40. {
  41.     CMD_SEND = 1,
  42.     CMD_GET = 2
  43. } command_t;
  44. //
  45. // Network packet data.
  46. //
  47. typedef struct
  48. {
  49.     // High bit is retransmit request.
  50.     unsigned checksum;
  51.     // Only valid if NCMD_RETRANSMIT.
  52.     byte retransmitfrom;
  53.     
  54.     byte starttic;
  55.     byte player;
  56.     byte numtics;
  57.     ticcmd_t cmds[BACKUPTICS];
  58. } doomdata_t;
  59. typedef struct
  60. {
  61.     // Supposed to be DOOMCOM_ID?
  62.     long id;
  63.     
  64.     // DOOM executes an int to execute commands.
  65.     short intnum;
  66.     // Communication between DOOM and the driver.
  67.     // Is CMD_SEND or CMD_GET.
  68.     short command;
  69.     // Is dest for send, set by get (-1 = no packet).
  70.     short remotenode;
  71.     
  72.     // Number of bytes in doomdata to be sent
  73.     short datalength;
  74.     // Info common to all nodes.
  75.     // Console is allways node 0.
  76.     short numnodes;
  77.     // Flag: 1 = no duplication, 2-5 = dup for slow nets.
  78.     short ticdup;
  79.     // Flag: 1 = send a backup tic in every packet.
  80.     short extratics;
  81.     // Flag: 1 = deathmatch.
  82.     short deathmatch;
  83.     // Flag: -1 = new game, 0-5 = load savegame
  84.     short savegame;
  85.     short episode; // 1-3
  86.     short map; // 1-9
  87.     short skill; // 1-5
  88.     // Info specific to this node.
  89.     short consoleplayer;
  90.     short numplayers;
  91.     
  92.     // These are related to the 3-display mode,
  93.     //  in which two drones looking left and right
  94.     //  were used to render two additional views
  95.     //  on two additional computers.
  96.     // Probably not operational anymore.
  97.     // 1 = left, 0 = center, -1 = right
  98.     short angleoffset;
  99.     // 1 = drone
  100.     short drone;
  101.     // The packet data to be sent.
  102.     doomdata_t data;
  103.     
  104. } doomcom_t;
  105. // Create any new ticcmds and broadcast to other players.
  106. void NetUpdate (void);
  107. // Broadcasts special packets to other players
  108. //  to notify of game exit
  109. void D_QuitNetGame (void);
  110. //? how many ticks to run?
  111. void TryRunTics (void);
  112. #endif
  113. //-----------------------------------------------------------------------------
  114. //
  115. // $Log:$
  116. //
  117. //-----------------------------------------------------------------------------