1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#ifndef AUTOHOSTINTERFACE
#define AUTOHOSTINTERFACE
#include <string>
#include <boost/cstdint.hpp>
#include <boost/asio/ip/udp.hpp>
/**
@brief Class to communicate with an autohost (or similar) using UDP over loopback
@author Karl-Robert Ernst
*/
class AutohostInterface
{
public:
typedef unsigned char uchar;
/**
@brief Connects to a port on localhost
@param localport port to use by this class
@param remoteport the port of the autohost
*/
AutohostInterface(const std::string& autohostip, int remoteport);
virtual ~AutohostInterface();
void SendStart();
void SendQuit();
void SendStartPlaying();
void SendGameOver();
void SendPlayerJoined(uchar playerNum, const std::string& name);
void SendPlayerLeft(uchar playerNum, uchar reason);
void SendPlayerReady(uchar playerNum, uchar readyState);
void SendPlayerChat(uchar playerNum, uchar destination, const std::string& msg);
void SendPlayerDefeated(uchar playerNum);
void Message(const std::string& message);
void Warning(const std::string& message);
void SendLuaMsg(const boost::uint8_t* msg, size_t msgSize);
void Send(const boost::uint8_t* msg, size_t msgSize);
/**
@brief Receive a chat message from the autohost
There should be only 1 message per UDP-Packet, and it will use the hosts playernumber to inject this message
*/
std::string GetChatMessage();
private:
boost::asio::ip::udp::socket autohost;
};
#endif
|