]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/clientlauncher.h
Merge branch 'master' of https://github.com/minetest/minetest
[dragonfireclient.git] / src / client / clientlauncher.h
index c3e0ae866ae01b292b788797e8e3d05c105ee2f8..b280d8e6b2f551e6abed638c3397f79b7f03bf73 100644 (file)
@@ -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 list_video_modes = false;
+       bool skip_main_menu = false;
+       bool random_input = false;
+       InputHandler *input = nullptr;
+       MyEventReceiver *receiver = nullptr;
+       gui::IGUISkin *skin = nullptr;
 };
-
-#endif