Orxonox  0.0.5 Codename: Arcturus
Host.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Oliver Scheuss <scheusso [at] ee.ethz.ch>, (C) 2008
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 #ifndef _NETWORK_Host_H__
30 #define _NETWORK_Host_H__
31 
32 #include "NetworkPrereqs.h"
33 #include "GamestateManager.h"
34 #include "core/CorePrereqs.h"
35 
36 #include <vector>
37 
38 namespace orxonox {
39 
40  const unsigned int CLIENTID_SERVER = 0;
41  const unsigned int NETWORK_FREQUENCY = 25;
42  const float NETWORK_PERIOD = 1.0f / NETWORK_FREQUENCY;
43 
53 {
54  friend class packet::Chat;
55 
56  private:
57  virtual void queuePacket(ENetPacket *packet, int clientID, uint8_t channelID) = 0;
58  virtual bool isServer_()=0;
59 
60  protected:
61  Host();
62  virtual ~Host();
63  void setActive( bool bActive ){ bIsActive_ = bActive; }
64 
65  virtual void doSendChat(const std::string& message, unsigned int sourceID, unsigned int targetID) = 0;
66  virtual void doReceiveChat(const std::string& message, unsigned int sourceID, unsigned int targetID) = 0;
67 
68  public:
69  static Host* getActiveInstance();
70  static bool running(){ return instances_s.size(); }
71  static void addPacket(ENetPacket* packet, int clientID = NETWORK_PEER_ID_SERVER, uint8_t channelID = 0);
72  static unsigned int getPlayerID(){ return clientID_s; }
73  static void setClientID(unsigned int id){ clientID_s = id; }
74  static bool isServer();
75  static void sendChat(const std::string& message, unsigned int sourceID, unsigned int targetID);
76  virtual void printRTT() = 0;
77  bool isActive(){ return bIsActive_; }
78 
79  private:
80  static uint32_t clientID_s;
81  static std::vector<Host*> instances_s;
82  bool bIsActive_;
83 };
84 
85 }
86 
87 #endif /* _NETWORK_Host_H__ */
void setActive(bool bActive)
Definition: Host.h:63
Shared library macros, enums, constants and forward declarations for the network library ...
static void setClientID(unsigned int id)
Definition: Host.h:73
static unsigned int getPlayerID()
Definition: Host.h:72
Definition: Chat.h:40
static constexpr unsigned int NETWORK_PEER_ID_SERVER
Definition: NetworkPrereqs.h:73
Shared library macros, enums, constants and forward declarations for the core library ...
::std::string string
Definition: gtest-port.h:756
const unsigned int CLIENTID_SERVER
Definition: Host.h:40
const unsigned int NETWORK_FREQUENCY
Definition: Host.h:41
Output level, used for messages directed to the user (e.g. "Press any key to continue") ...
Definition: OutputDefinitions.h:89
static bool running()
Definition: Host.h:70
This Class implements a manager for gamestates:
Definition: GamestateManager.h:72
bool isActive()
Definition: Host.h:77
static std::vector< Host * > instances_s
Definition: Host.h:81
bool bIsActive_
Definition: Host.h:82
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
const float NETWORK_PERIOD
Definition: Host.h:42
static uint32_t clientID_s
Definition: Host.h:80
ENet packet structure.
Definition: enet.h:147
Base class of Server and Client This is the Base class of the Server and Client classes.
Definition: Host.h:52