]> git.mxchange.org Git - flightgear.git/blob - src/MultiPlayer/multiplayrxmgr.hxx
Moved random ground cover object management code (userdata.[ch]xx) over
[flightgear.git] / src / MultiPlayer / multiplayrxmgr.hxx
1 // multiplayrxmgr.hxx -- routines for receiving multiplayer data
2 //                       for Flghtgear
3 //
4 // Written by Duncan McCreanor, started February 2003.
5 // duncan.mccreanor@airservicesaustralia.com
6 //
7 // Copyright (C) 2003  Airservices Australia
8 //
9 // This program is free software; you can redistribute it and/or
10 // modify it under the terms of the GNU General Public License as
11 // published by the Free Software Foundation; either version 2 of the
12 // License, or (at your option) any later version.
13 //
14 // This program is distributed in the hope that it will be useful, but
15 // WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 // General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software
21 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 //
23
24 #ifndef MULTIPLAYRXMGR_H
25 #define MULTIPLAYRXMGR_H
26
27 #define MULTIPLAYRXMGR_HID "$Id$"
28
29
30 #include "mpplayer.hxx"
31 #include "mpmessages.hxx"
32
33 #ifdef HAVE_CONFIG_H
34 #  include <config.h>
35 #endif
36
37 #include STL_STRING
38 SG_USING_STD(string);
39
40 #include <simgear/compiler.h>
41 #include <plib/ssg.h>
42 #include <plib/netSocket.h>
43
44 // Maximum number of players that can exist at any time
45 #define MAX_PLAYERS 10
46
47 /****************************************************************
48 * @version $Id$
49 *
50 * Description: The multiplay rx manager is responsible for
51 * receiving and processing data from other players.
52
53 * Data from remote players is read from the network and processed
54 * via calling ProcessData. The models for the remote player are
55 * positioned onto the scene by calling Update.
56 *
57 *******************************************************************/
58 class FGMultiplayRxMgr {
59 public:
60
61     /** Constructor */
62     FGMultiplayRxMgr();
63
64     /** Destructor. */
65     ~FGMultiplayRxMgr();
66
67     /** Initialises the multiplayer receiver.
68     * @return True if initialisation succeeds, else false
69     */
70     bool init(void);
71
72     /** Initiates processing of any data waiting at the rx socket.
73     */
74     void ProcessData(void);
75
76     /** Updates the model positions for the players
77     */
78     void Update(void);
79
80     /** Closes the multiplayer manager. Stops any further player packet processing.
81     */
82     void Close(void);
83
84
85 private:
86
87
88     /** Holds the players that exist in the game */
89     MPPlayer *m_Player[MAX_PLAYERS];
90
91     /** Socket for receiving data from the server or another player */
92     netSocket *mDataRxSocket;
93
94     /** True if multiplay receive is initialised */
95     bool m_bInitialised;
96
97     /** Receive address for multiplayer messages */
98     string m_sRxAddress;
99
100     /** Receive port for multiplayer messages */
101     int m_iRxPort;
102
103     /** Local player's callsign */
104     string m_sCallsign;
105
106 };
107
108 #endif
109
110
111