terom@5: #ifndef NETWORKCLIENT_HH terom@5: #define NETWORKCLIENT_HH terom@5: terom@21: #include "Network.hh" terom@21: #include "GameState.hh" terom@21: terom@22: // forward-declare terom@26: class NetworkClientLocalPlayer; terom@22: class NetworkClientRemotePlayer; terom@22: terom@21: class NetworkClient : public NetworkCore { terom@26: friend class NetworkClientLocalPlayer; terom@26: friend class NetworkClientRemotePlayer; terom@26: terom@24: private: terom@24: CL_NetComputer server; terom@24: terom@24: public: terom@24: NetworkClient (GameState &state, const CL_IPAddress &connect_to); terom@22: terom@24: private: terom@24: void on_create_object (CL_NetObject_Client &obj, int msg_type, CL_NetPacket &pkt); terom@22: terom@24: void on_server_hello (CL_NetObject_Client &obj, CL_NetPacket &pkt); terom@24: void on_player_info (CL_NetObject_Client &obj, CL_NetPacket &pkt); terom@24: void on_player_join (CL_NetObject_Client &obj, CL_NetPacket &pkt); terom@24: terom@24: public: terom@24: void player_quit (NetworkClientRemotePlayer *player); terom@22: }; terom@22: terom@22: class NetworkClientLocalPlayer : public LocalPlayer { terom@24: private: terom@24: NetworkClient &client; terom@21: terom@24: CL_SlotContainer slots; terom@24: terom@24: CL_NetObject_Client obj; terom@24: terom@24: public: terom@24: NetworkClientLocalPlayer (NetworkClient &client, CL_NetObject_Client &obj, Coordinate initial_position); terom@24: terom@25: virtual bool move (PositionDelta d); terom@24: terom@24: private: terom@24: void on_position (CL_NetPacket &pkt); terom@22: }; terom@22: terom@22: class NetworkClientRemotePlayer : public RemotePlayer { terom@24: private: terom@24: NetworkClient &client; terom@24: terom@24: CL_SlotContainer slots; terom@22: terom@24: CL_NetObject_Client obj; terom@22: terom@24: public: terom@24: NetworkClientRemotePlayer (NetworkClient &client, CL_NetObject_Client &obj, Coordinate initial_position); terom@24: terom@24: private: terom@24: void on_position (CL_NetPacket &pkt); terom@24: terom@24: void on_quit (CL_NetPacket &pkt); terom@5: }; terom@5: terom@5: #endif