]> git.mxchange.org Git - flightgear.git/blob - src/MultiPlayer/multiplayrxmgr.hxx
Melchior FRANZ:
[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/netSocket.h>
42
43 // Maximum number of players that can exist at any time
44 #define MAX_PLAYERS 10
45
46 /****************************************************************
47 * @version $Id$
48 *
49 * Description: The multiplay rx manager is responsible for
50 * receiving and processing data from other players.
51
52 * Data from remote players is read from the network and processed
53 * via calling ProcessData. The models for the remote player are
54 * positioned onto the scene by calling Update.
55 *
56 *******************************************************************/
57 class FGMultiplayRxMgr {
58 public:
59
60     /** Constructor */
61     FGMultiplayRxMgr();
62
63     /** Destructor. */
64     ~FGMultiplayRxMgr();
65
66     /** Initialises the multiplayer receiver.
67     * @return True if initialisation succeeds, else false
68     */
69     bool init(void);
70
71     /** Initiates processing of any data waiting at the rx socket.
72     */
73     void ProcessData(void);
74
75     /** Updates the model positions for the players
76     */
77     void Update(void);
78
79     /** Closes the multiplayer manager. Stops any further player packet processing.
80     */
81     void Close(void);
82
83
84 private:
85
86
87     /** Holds the players that exist in the game */
88     MPPlayer *m_Player[MAX_PLAYERS];
89
90     /** Socket for receiving data from the server or another player */
91     netSocket *mDataRxSocket;
92
93     /** True if multiplay receive is initialised */
94     bool m_bInitialised;
95
96     /** Receive address for multiplayer messages */
97     string m_sRxAddress;
98
99     /** Receive port for multiplayer messages */
100     int m_iRxPort;
101
102     /** Local player's callsign */
103     string m_sCallsign;
104
105 };
106
107 #endif
108
109
110