X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclient%2Fclientlauncher.h;h=d1fd9a258367b2d3c46c3006dea7fdcc8f601e2f;hb=a049e8267fabd101cb5c6528b3270214cb0647f0;hp=c3e0ae866ae01b292b788797e8e3d05c105ee2f8;hpb=146f77fdb750833c649de7159a0833c398e14a4d;p=dragonfireclient.git diff --git a/src/client/clientlauncher.h b/src/client/clientlauncher.h index c3e0ae866..d1fd9a258 100644 --- a/src/client/clientlauncher.h +++ b/src/client/clientlauncher.h @@ -17,113 +17,39 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef __CLIENT_LAUNCHER_H__ -#define __CLIENT_LAUNCHER_H__ +#pragma once #include "irrlichttypes_extrabloated.h" #include "client/inputhandler.h" #include "gameparams.h" -// A small helper class -class TimeGetter -{ -public: - virtual u32 getTime(TimePrecision prec) = 0; -}; - -// A precise irrlicht one -class IrrlichtTimeGetter: public TimeGetter -{ -public: - IrrlichtTimeGetter(IrrlichtDevice *device): - m_device(device) - {} - u32 getTime(TimePrecision prec) - { - if (prec == PRECISION_MILLI) { - if (m_device == NULL) - return 0; - return m_device->getTimer()->getRealTime(); - } else { - return porting::getTime(prec); - } - } -private: - IrrlichtDevice *m_device; -}; -// Not so precise one which works without irrlicht -class SimpleTimeGetter: public TimeGetter -{ -public: - u32 getTime(TimePrecision prec) - { - return porting::getTime(prec); - } -}; +class RenderingEngine; class ClientLauncher { public: - ClientLauncher() : - list_video_modes(false), - skip_main_menu(false), - use_freetype(false), - random_input(false), - address(""), - playername(""), - password(""), - device(NULL), - input(NULL), - receiver(NULL), - skin(NULL), - font(NULL), - simple_singleplayer_mode(false), - current_playername("inv£lid"), - current_password(""), - current_address("does-not-exist"), - current_port(0) - {} + ClientLauncher() = default; ~ClientLauncher(); - bool run(GameParams &game_params, const Settings &cmd_args); + bool run(GameStartData &start_data, const Settings &cmd_args); -protected: - void init_args(GameParams &game_params, const Settings &cmd_args); - bool init_engine(int log_level); +private: + void init_args(GameStartData &start_data, const Settings &cmd_args); + bool init_engine(); + void init_input(); - bool launch_game(std::wstring *error_message, GameParams &game_params, - const Settings &cmd_args); + bool launch_game(std::string &error_message, bool reconnect_requested, + GameStartData &start_data, const Settings &cmd_args); void main_menu(MainMenuData *menudata); - bool create_engine_device(int log_level); void speed_tests(); - bool print_video_modes(); - - bool list_video_modes; - bool skip_main_menu; - bool use_freetype; - bool random_input; - std::string address; - std::string playername; - std::string password; - IrrlichtDevice *device; - InputHandler *input; - MyEventReceiver *receiver; - gui::IGUISkin *skin; - gui::IGUIFont *font; - scene::ISceneManager *smgr; - SubgameSpec gamespec; - WorldSpec worldspec; - bool simple_singleplayer_mode; - // These are set up based on the menu and other things - // TODO: Are these required since there's already playername, password, etc - std::string current_playername; - std::string current_password; - std::string current_address; - int current_port; + bool skip_main_menu = false; + bool random_input = false; + RenderingEngine *m_rendering_engine = nullptr; + InputHandler *input = nullptr; + MyEventReceiver *receiver = nullptr; + gui::IGUISkin *skin = nullptr; }; - -#endif