/* 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 "core/extension.h" #include "core/entity.h" #include "client/clientext.h" #include "client/soundext.h" #include "client/testmodelview.h" #include "client/worldview.h" #include "render/renderext.h" /// client part of the engine namespace client { /// run the client application void run(int count, char **arguments); /// 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(const core::Message::Channel channel, const std::string &message); /// loading message notification virtual void notify_loader(const std::string &message); /// text notifications from the client void notify_message(const std::string &message); /// text notifications from the client void notify_message(const char *message); /// clear zone notification virtual void notify_zonechange(); /// connect notification virtual void notify_connect(); /// disconnect notification virtual void notify_disconnect(); /// the main client widget inline WorldView *worldview() { return client_worldview; } /// model test widget inline TestModelView *testmodelview() { return client_testmodelview; } protected: /// run a client frame virtual void frame(unsigned long timestamp); private: static void func_snd_restart(std::string const &args); static void func_r_restart(std::string const &args); static void func_list_ui(std::string const &args); static void func_ui_restart(std::string const &args); static void func_ui_console(std::string const &args); static void func_list_menu(std::string const &args); static void func_ui_help(); static void func_ui(std::string const &args); static void func_ui_chat(std::string const &args); static void func_ui_chatbar(std::string const &args); static void func_ui_inventory(std::string const &args); static void func_ui_map(std::string const &args); static void func_ui_menu(std::string const &args); static void func_testmodel(std::string const &args); static void func_menu(std::string const &args); static void func_view(std::string const &args); WorldView *client_worldview; TestModelView *client_testmodelview; unsigned long previous_timestamp; }; Client *client(); inline ClientExt *ext_client(const core::Entity *entity) { return static_cast(entity->extension(core::Extension::Client)); } inline SoundExt *ext_sound(const core::Entity *entity) { return static_cast(entity->extension(core::Extension::Sound)); } inline render::RenderExt *ext_render(const core::Entity *entity) { return static_cast(entity->extension(core::Extension::Render)); } } #endif // __INCLUDED_CLIENT_H__