Orxonox  0.0.5 Codename: Arcturus
Client.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
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 //
30 // C++ Interface: Client
31 //
32 // Description:
33 //
34 //
35 // Author: Oliver Scheuss, (C) 2007
36 //
37 // Copyright: See COPYING file that comes with this distribution
38 //
39 //
40 
41 #ifndef _Client_H__
42 #define _Client_H__
43 
44 #include "NetworkPrereqs.h"
45 
46 #include <string>
47 #include <deque>
48 
49 #include "util/UtilPrereqs.h"
50 #include "util/Singleton.h"
51 #include "ClientConnection.h"
52 // #include "GamestateClient.h"
53 #include "Host.h"
54 #include "LANDiscovery.h"
56 
57 // tolua_begin
58 namespace orxonox
59 {
60 // tolua_end
68  class _NetworkExport Client // tolua_export
69  : public Host, protected ClientConnection, public Singleton<Client>
70  { // tolua_export
71  friend class Singleton<Client>;
72  public:
73  Client();
74  ~Client();
75 
76  static Client* getInstance(){ return singletonPtr_s; } // tolua_export
77 
78  virtual bool establishConnection() override;
79  void setDestination( const std::string& serverAddress, unsigned int port ); // tolua_export
80  virtual bool closeConnection() override;
81  virtual void queuePacket(ENetPacket* packet, int clientID, uint8_t channelID) override;
82  virtual bool sendPacket( packet::Packet* packet ) override{ return packet->send( static_cast<Host*>(this) ); }
83  virtual void doSendChat(const std::string& message, unsigned int sourceID, unsigned int targetID) override;
84  virtual void doReceiveChat(const std::string& message, unsigned int sourceID, unsigned int targetID) override;
85  virtual void printRTT() override;
86 
87  void update(const Clock& time);
88  protected:
89  virtual void connectionClosed() override;
90  private:
91  Client(const Client& copy); // not used
92  virtual bool isServer_() override { return false; }
93  virtual void processPacket(packet::Packet* packet) override;
94 
96  bool isSynched_;
97  std::deque<packet::Packet*> packetQueue_;
98 
101  }; // tolua_export
102 
103 
104 } // tolua_export
105 
106 #endif /* _Client_H__ */
bool gameStateFailure_
Definition: Client.h:99
std::deque< packet::Packet * > packetQueue_
Definition: Client.h:97
static Client * getInstance()
Definition: Client.h:76
float timeSinceLastUpdate_
Definition: Client.h:100
Shared library macros, enums, constants and forward declarations for the network library ...
::std::string string
Definition: gtest-port.h:756
static Client * singletonPtr_s
Definition: Client.h:95
Output level, used for messages directed to the user (e.g. "Press any key to continue") ...
Definition: OutputDefinitions.h:89
Client *client; The network/Client class This class implements all necessary function for the network...
Definition: Client.h:68
virtual bool sendPacket(packet::Packet *packet) override
Definition: Client.h:82
Base for singleton classes.
Definition: Singleton.h:114
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
Shared library macros, enums, constants and forward declarations for the util library ...
Definition: Packet.h:61
virtual bool send(orxonox::Host *host)
Send the Packet.
Definition: Packet.cc:135
Definition of the Singleton template that is used as base class for classes that allow only one insta...
bool isSynched_
Definition: Client.h:96
virtual bool isServer_() override
Definition: Client.h:92
Simple real time clock based on Ogre::Timer.
Definition: Clock.h:57
Definition: ClientConnection.h:38
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