#ifndef PROTOCOLLOGIN_H #define PROTOCOLLOGIN_H #include "declarations.h" #include class ProtocolLogin; typedef std::shared_ptr ProtocolLoginPtr; class ProtocolLogin : public Protocol { public: ProtocolLogin(); static ProtocolLoginPtr create() { return ProtocolLoginPtr(new ProtocolLogin); } void login(const std::string& accountName, const std::string& accountPassword); void cancelLogin() { disconnect(); } void onConnect(); void onRecv(InputMessage& inputMessage); void onError(const boost::system::error_code& error); ProtocolLoginPtr asProtocolLogin() { return std::static_pointer_cast(shared_from_this()); } private: void sendLoginPacket(); void parseError(InputMessage& inputMessage); void parseMOTD(InputMessage& inputMessage); void parseCharacterList(InputMessage& inputMessage); std::string m_accountName, m_accountPassword; }; #endif