/* client/client.h This file is part of the Osirion project and is distributed under the terms and conditions of the GNU General Public License version 2 */ #ifndef __INCLUDED_CLIENT_H__ #define __INCLUDED_CLIENT_H__ #include "core/application.h" #include "client/console.h" #include "client/view.h" /// client part of the engine namespace client { /// client application implementation class Client : public core::Application { public: /// initialize the client virtual void init(int count, char **arguments); /// run the client virtual void run(); /// shutdown the client virtual void shutdown(); /// quit the client virtual void quit(int status); /// sound notifications from the core virtual void notify_sound(const char * name); /// text notifications from the core virtual void notify_message(core::Message::Channel const channel, std::string const message); /// remove sound source notification virtual void notify_remove_sound(size_t source); /// clear zone notification virtual void notify_zonechange(); /// connect notification virtual void notify_connect(); /// disconnect notification virtual void notify_disconnect(); /// the main client view inline View *view() { return client_view; } /// the client console inline Console *console() { return client_console; } protected: /// run a client frame virtual void frame(unsigned long timestamp); private: View *client_view; Console *client_console; unsigned long previous_timestamp; }; /// the client main loop void client_main(int count, char **arguments); Client *client(); } #endif // __INCLUDED_CLIENT_H__