src/Network/Protocol.hh
author terom
Mon, 08 Dec 2008 23:52:08 +0000
changeset 334 0cf3f2be51eb
parent 330 dcc47278e5ab
child 400 d64bf28c4340
permissions -rw-r--r--
transmit handleInput dt
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     1
#ifndef NETWORK_PROTOCOL_HH
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     2
#define NETWORK_PROTOCOL_HH
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     3
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     4
/*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     5
 * The network protocol is defined here :o
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     6
 */
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     7
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     8
enum NetworkChannel {
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
     9
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    10
     * Core channel used for NetworkSession
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    11
     */
203
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    12
    NETCHAN_CORE            = 0x0001,
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    13
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    14
    /*
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    15
     * Channel used to send initial terrain array
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    16
     *
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    17
     * uint32_t                 map_w
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    18
     * uint32_t                 map_h
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    19
     * uint8_t[map_w][map_h]    terrain
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    20
     */
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
    21
    NETCHAN_TERRAIN_ARRAY   = 0x0010,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    22
};
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    23
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    24
enum NetworkPhysicsFlags {
224
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    25
    NETWORK_PHYSICS_INAIR               = 0x01,
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    26
    NETWORK_PHYSICS_FACE_RIGHT          = 0x02,
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    27
};
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    28
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    29
enum NetworkProjectileFlags {
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
    30
    NETWORK_PROJECTILE_REMOVE_GROUND    = 0x01,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    31
};
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    32
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    33
enum NetworkMessage {
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    34
    NETMSG_PACKET_INVALID       = 0x0000,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    35
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    36
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    37
     * You have joined the game:
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    38
     *
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    39
     *  Vector      initial_position
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    40
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    41
    NETMSG_SERVER_HELLO         = 0x0100,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    42
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    43
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    44
     * New client has connected to server:
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    45
     *  
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    46
     *  Vector      initial_position
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    47
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    48
    NETMSG_PLAYER_JOIN          = 0x0101,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    49
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    50
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    51
     * Client has left server:
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    52
     *
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    53
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    54
    NETMSG_PLAYER_QUIT          = 0x0102,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    55
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    56
    /*
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    57
     * Client has input to process
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    58
     *
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    59
     *  uint16_t    PlayerInput
334
0cf3f2be51eb transmit handleInput dt
terom
parents: 330
diff changeset
    60
     *  uint32_t    dt
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    61
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    62
    NETMSG_CLIENT_INPUT         = 0x0201,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    63
    
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    64
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    65
     * Initial player info
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    66
     *
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    67
     *  Vector      initial_position
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    68
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    69
    NETMSG_PLAYER_INFO          = 0x0300,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    70
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    71
    /*
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    72
     * Player position update
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    73
     *
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    74
     * Vector   position
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    75
     * Vector   velocity
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    76
     * uint8_t  NetworkPhysicsFlags
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    77
     * float32  aim
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
    78
     */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
    79
    NETMSG_PLAYER_POSITION      = 0x0301,
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    80
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    81
    /*
302
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    82
     * Player has spawned somewhere
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    83
     *
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    84
     * Vector   position
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    85
     */
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    86
    NETMSG_PLAYER_SPAWN         = 0x0302,
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    87
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    88
    /*
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    89
     * Player has died
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    90
     *
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    91
     */
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    92
    NETMSG_PLAYER_DIE           = 0x0303,
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    93
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
    94
    /*
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    95
     * Terrain update, removeGround
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    96
     *
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    97
     * Vector   position 
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    98
     * float32  radius          
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
    99
     */
241
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   100
    NETMSG_PLAYER_DIG           = 0x0312,
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   101
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   102
    /*
239
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   103
     * Player changed weapon
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   104
     *
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   105
     * uint8_t  weapon_id
239
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   106
     */
241
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   107
    NETMSG_PLAYER_WEAPON_CHANGE = 0x0321,
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   108
241
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   109
    /*
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   110
     * Player threw the rope
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   111
     *
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   112
     * Vector   position
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   113
     * Vector   velocity
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   114
     * float    length
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   115
     */
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   116
    NETMSG_PLAYER_ROPE_THROW    = 0x0331,
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   117
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   118
    /*
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   119
     * Player rope fixed on to something
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   120
     *
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   121
     * Vector   position
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   122
     * float    length
328
51d644c8d5a2 fix player-pivoted rope
terom
parents: 302
diff changeset
   123
     * Object?  player
241
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   124
     */
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   125
    NETMSG_PLAYER_ROPE_FIXED    = 0x0332,
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   126
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   127
    /*
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   128
     * Player rope released
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   129
     *
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   130
     */
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   131
    NETMSG_PLAYER_ROPE_RELEASED = 0x0333,
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   132
    
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   133
    /*
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   134
     * Rope length changed
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   135
     *
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   136
     * float length
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   137
     */
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   138
    NETMSG_PLAYER_ROPE_LENGTH   = 0x0334,
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   139
    
239
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   140
    /*
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   141
     * Player has fired a weapon, creating this projectile
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   142
     *
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   143
     * Object   player
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   144
     * Vector   position
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   145
     * Vector   velocity
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   146
     * uint8_t  weapon_id
223
2fcaf54ed37b basic network-projectiles
terom
parents: 203
diff changeset
   147
     */
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   148
    NETMSG_PROJECTILE_PLAYER_FIRED  = 0x0411,
224
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   149
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   150
    /**
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   151
     * Projectile has hit a player
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   152
     *
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   153
     * Object   player
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   154
     */
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   155
    NETMSG_PROJECTILE_HIT_PLAYER    = 0x0421,
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 276
diff changeset
   156
224
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   157
    /*
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   158
     * Projectile has gone away
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   159
     *
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   160
     * Vector   position
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   161
     * uint8_t  NetworkProjectileFlags (REMOVE_GROUND)
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   162
     */
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 263
diff changeset
   163
    NETMSG_PROJECTILE_DESTROY       = 0x040F,
187
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
   164
};
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
   165
f41f894213ca restructure network code a bit
terom
parents:
diff changeset
   166
#endif