src/Network/Server.hh
author terom
Wed, 17 Dec 2008 00:40:22 +0000
changeset 381 9b35bc329d23
parent 330 dcc47278e5ab
child 400 d64bf28c4340
permissions -rw-r--r--
separate sockaddr stuff out of NetworkAddress... now called NetworkEndpoint
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     1
#ifndef NETWORKSERVER_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     2
#define NETWORKSERVER_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     3
186
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
     4
#include "../GameState.hh"
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
     5
#include "Session.hh"
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
     6
#include "Object.hh"
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     7
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     8
#include <list>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     9
#include <map>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    10
#include <ClanLib/core.h>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    11
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    12
// forward-declare
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    13
class NetworkServerPlayer;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    14
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    15
/**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    16
 * Our game's NetworkServer... this has the GameState, NetworkSession, etc
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    17
 */
187
f41f894213ca restructure network code a bit
terom
parents: 186
diff changeset
    18
class NetworkServer {
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    19
    friend class NetworkServerObject;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    20
    friend class NetworkServerPlayer;
223
2fcaf54ed37b basic network-projectiles
terom
parents: 209
diff changeset
    21
    friend class NetworkServerProjectile;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    22
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    23
    protected:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    24
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    25
         * The GameState
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    26
         */ 
187
f41f894213ca restructure network code a bit
terom
parents: 186
diff changeset
    27
        GameState &state;
f41f894213ca restructure network code a bit
terom
parents: 186
diff changeset
    28
        CL_SlotContainer slots;
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    29
        
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    30
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    31
         * The server-mode NetworkSession
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    32
         */
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    33
        NetworkSession netsession;
187
f41f894213ca restructure network code a bit
terom
parents: 186
diff changeset
    34
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    35
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    36
         * The NetworkObject_ServerController that we use
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    37
         */
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 274
diff changeset
    38
        NetworkObject_ServerController controller;
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    39
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    40
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    41
         * A list of NetworkServerPlayer's, used when a new player connects to send it information about existing
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    42
         * NetworkServerPlayer objects
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    43
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    44
        std::list<NetworkServerPlayer *> players;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    45
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    46
    public:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    47
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    48
         * Construct a NetworkServer, using the given GameState and listening on the given address
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    49
         */
381
9b35bc329d23 separate sockaddr stuff out of NetworkAddress... now called NetworkEndpoint
terom
parents: 330
diff changeset
    50
        NetworkServer (GameState &state, const NetworkEndpoint &listen_addr);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    51
    
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    52
    protected:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    53
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    54
         * Called by NetworkServerPlayer when it disconnects, this removes it from our list
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    55
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    56
        void handle_disconnect (NetworkServerPlayer *player);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    57
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    58
    private:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    59
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    60
         * Our NetworkSession::sig_node_connected handler, this creates a new NetworkServerPlayer and adds it to
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    61
         * our list of players
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    62
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    63
        void on_node_connected (NetworkNode *node);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    64
};
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    65
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    66
/**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    67
 * Our base NetworkObject_Server class, that also holds the NetworkServer reference and a CL_SlotContainer for
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    68
 * conveniance.
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    69
 */
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    70
class NetworkServerObject : public NetworkObject_Server {
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    71
    protected:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    72
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    73
         * Our NetworkServer
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    74
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    75
        NetworkServer &server;
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    76
        CL_SlotContainer slots;
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    77
        
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    78
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    79
         * Constructs this NetworkServerObject, passing the server's controller to the NetworkObject_Server constructor
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    80
         */
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    81
        NetworkServerObject (NetworkServer &server);
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    82
};
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    83
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    84
/**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    85
 * A remote player on this server, this is both a LocalPlayer and a NetworkServerObject
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    86
 */
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    87
class NetworkServerPlayer : public LocalPlayer, public NetworkServerObject {
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
    88
    protected:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    89
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    90
         * The remote node that represents this actual player
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    91
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    92
        NetworkNode *node;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    93
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    94
    public:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    95
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    96
         * Construct this using the given server (for NetworkServerObject) and node (for node).
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    97
         *
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    98
         * We send the initial NETMSG_SERVER_HELLO to the client, then a set of NETMSG_PLAYER_INFOs
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
    99
         * for all the other players, a NETMSG_PLAYER_JOIN to all the other clients, and then calls
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   100
         * send_terrain_data to sync the initial terrain.
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   101
         *
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   102
         * @see NetworkServerObject
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   103
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   104
        NetworkServerPlayer (NetworkServer &server, NetworkNode *node);
239
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   105
    
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   106
    protected:    
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   107
        // @{
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   108
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   109
         * These methods are overriden from Player to replicate events to our clients
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   110
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
   111
        virtual void handleDig (Vector position, float radius);
276
87434abc1ba1 ability to send NetworkObjectID's via packets, modify Network Projectiles to use this and fix recoil/reloading
terom
parents: 274
diff changeset
   112
        virtual void handleFireWeapon (Weapon *weapon, Vector position, Vector velocity);
239
550397d9d479 implement network weapon changes and fix weapon firing
terom
parents: 224
diff changeset
   113
        virtual void handleChangeWeapon (unsigned int weaponIndex);
241
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   114
        virtual void handleRopeState (RopeState state);
e95b1602d836 implement the ROT (Rope Over TCP) protocol
terom
parents: 239
diff changeset
   115
        virtual void handleRopeLength (float length);
302
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
   116
    
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
   117
        virtual void spawn (Vector position);
e734d8e9bbb5 make spawn/die work over the network
terom
parents: 296
diff changeset
   118
        virtual void die (bool start_timer = true);
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   119
        // @}
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   120
        //
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   121
        
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   122
    private:
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   123
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   124
         * Our NetworkNode::sig_disconnected handler. This calls NetworkServer::handle_disconnect, sends a 
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   125
         * NETMSG_PLAYER_QUIT message to all remaining clients, and destroys this player.
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   126
         */
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   127
        void on_disconnected (void);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 187
diff changeset
   128
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   129
        /*
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   130
         * Our NETMSG_PLAYER_INPUT handler. This calls our superclass LocalPlayer::handleInput, which may then call
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   131
         * the various handle* methods. After this, we call send_position_update
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   132
         */
223
2fcaf54ed37b basic network-projectiles
terom
parents: 209
diff changeset
   133
        void on_input (NetworkNode *node, NetworkPacketInput &pkt);
203
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
   134
        
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   135
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   136
         * Called from the constructor to send the initial Terrain data using the NETCHAN_TERRAIN_ARRAY channel.
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   137
         */
203
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 200
diff changeset
   138
        void send_terrain_data (void);
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   139
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   140
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   141
         * Called from on_input to broadcast an unreliable position update with this player's physics state
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   142
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   143
        void send_position_update (void);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   144
};
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   145
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   146
/**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   147
 * A Projectile, replicated across the network.
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   148
 *
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   149
 * These are created by NetworkServerPlayer::handleFireWeapon
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   150
 */
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
   151
class NetworkServerProjectile : public Projectile, public NetworkServerObject {
223
2fcaf54ed37b basic network-projectiles
terom
parents: 209
diff changeset
   152
    public:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   153
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   154
         * Call the Projectile construtor, and then send NETMSG_PROJECTILE_PLAYER_FIRED
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   155
         *
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   156
         * @param server the NetworkServer
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   157
         * @param player the NetworkServerPlayer that fired the weapon
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   158
         * @param position the Projectile's initial position
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   159
         * @param velocity the Projectile's initial velocity
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   160
         * @param weapon the Player's Weapon that was fired
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   161
         */
274
c35307e8645c add comments, move addPlayer/removePlayer to Player.cc, and refactor Network code to inherit from NetworkObject
terom
parents: 263
diff changeset
   162
        NetworkServerProjectile (NetworkServer &server, NetworkServerPlayer *player, Vector position, Vector velocity, Weapon *weapon);
224
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   163
    
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   164
    protected:
290
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   165
        /**
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   166
         * Overriden from Projectile to send a NETMSG_PROJECTILE_DESTROY with the given position and flags
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   167
         *
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   168
         * @param position the Projectile's final position, where the ground gets removed
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   169
         * @param removeGround controls the NETWORK_PROJECTILE_REMOVE_GROUND flag
f8e69f493460 NetworkObject + NetworkServer documentation
terom
parents: 276
diff changeset
   170
         */
224
e6faefba2ec1 fixed logger, and network projectiles should work reasonably well now
terom
parents: 223
diff changeset
   171
        virtual void onDestroy (Vector position, bool removeGround);
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 290
diff changeset
   172
        
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 290
diff changeset
   173
        /**
330
dcc47278e5ab fix Network Projectile::onHitPlayer
terom
parents: 302
diff changeset
   174
         * Overriden from Projectile to send a NETMSG_PROJECTILE_HIT_PLAYER with the given player
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 290
diff changeset
   175
         *
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 290
diff changeset
   176
         * @param player the NetworkServerPlayer that got hit
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 290
diff changeset
   177
         */
330
dcc47278e5ab fix Network Projectile::onHitPlayer
terom
parents: 302
diff changeset
   178
        virtual void onHitPlayer (Player *player_ptr);
223
2fcaf54ed37b basic network-projectiles
terom
parents: 209
diff changeset
   179
};
2fcaf54ed37b basic network-projectiles
terom
parents: 209
diff changeset
   180
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   181
#endif