00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _CHATSOCKET_H
00021 #define _CHATSOCKET_H
00022
00023 #include "SmallHandler.h"
00024 #include <TcpSocket.h>
00025 #include "PlayerFactory.h"
00026
00027
00028 enum {
00029 STATE_LOGIN = 1,
00030 STATE_PROMPT,
00031 STATE_QUIT,
00032 STATE_PASSWORD,
00033 STATE_NEW_PLAYER_QUESTION,
00034 STATE_PASSWORD_1,
00035 STATE_PASSWORD_2,
00036 };
00037
00038
00041 class SmallSocket : public TcpSocket
00042 {
00043 public:
00044 SmallSocket(ISocketHandler& );
00045 ~SmallSocket();
00046
00047 void OnAccept();
00048 void OnLine(const std::string& );
00049
00050 const std::string& GetName() { return m_name; }
00051 bool IsAt(int x,int y);
00052 int GetX() { return m_x; }
00053 int GetY() { return m_y; }
00054
00055 World& GetWorld() { return static_cast<SmallHandler&>(Handler()).GetWorld(); }
00056 void try_move(const std::string& );
00057 void SendPrompt();
00058 PlayerFactory& GetPlayerF() { return static_cast<SmallHandler&>(Handler()).GetPlayerF(); }
00059 void Send(const std::string& );
00060 void TryGet(SmallSocket *,const std::string&);
00061 void TryDrop(SmallSocket *,const std::string&);
00062
00063 private:
00064 int m_state;
00065 std::string m_name;
00066 int m_x;
00067 int m_y;
00068 PlayerFactory::PLAYER *m_player;
00069 std::string m_passwd;
00070 };
00071
00072
00073 #endif // _CHATSOCKET_H