terom@5: #ifndef NETWORKSERVER_HH terom@5: #define NETWORKSERVER_HH terom@5: terom@6: #include "Network.hh" terom@6: #include "GameState.hh" terom@89: #include "NetworkSession.hh" terom@89: #include "NetworkObject.hh" terom@6: terom@5: #include terom@6: #include terom@6: #include terom@5: terom@6: // forward-declare terom@22: class NetworkServerPlayer; terom@6: terom@21: class NetworkServer : public NetworkCore { terom@24: friend class NetworkServerPlayer; terom@22: terom@89: protected: terom@89: NetworkSession netsession; terom@89: NetworkObject_ServerController netobjs; terom@89: std::list players; terom@5: terom@24: public: terom@89: NetworkServer (GameState &state, const NetworkAddress &listen_addr); terom@89: terom@89: protected: terom@89: void handle_disconnect (NetworkServerPlayer *player); terom@22: terom@24: private: terom@89: void on_node_connected (NetworkNode *node); terom@5: }; terom@5: terom@22: class NetworkServerPlayer : public RemotePlayer { terom@24: private: terom@24: NetworkServer &server; terom@89: NetworkObject_Server obj; terom@89: NetworkNode *node; terom@22: terom@24: CL_SlotContainer slots; terom@24: terom@24: public: terom@89: NetworkServerPlayer (NetworkServer &server, NetworkNode *node); terom@22: terom@24: private: terom@89: void on_disconnected (void); terom@89: void on_move (NetworkNode *node, NetworkPacket &pkt); terom@24: terom@24: void send_position_update (void); terom@5: }; terom@5: terom@5: #endif