#include "StateControl.hpp"
#include "../audio/Audio.hpp"
#include "../graphics/Viewport.hpp"
+#include "../shared/MessageState.hpp"
+#include "../ui/Keymap.hpp"
#include <string>
class Window;
-struct Environment {
+struct HeadlessEnvironment {
+
+ struct Config {
+ std::string asset_path;
+ std::string save_path;
+
+ std::string GetWorldPath(
+ const std::string &world_name
+ ) const;
+ std::string GetWorldPath(
+ const std::string &world_name,
+ const std::string &hostname
+ ) const;
+ } config;
+
+ AssetLoader loader;
+
+ FrameCounter counter;
+
+ StateControl state;
+
+
+ explicit HeadlessEnvironment(const Config &);
+
+};
+
+
+struct Environment
+: public HeadlessEnvironment {
+
+ Assets assets;
Audio audio;
Viewport viewport;
Window &window;
- Assets assets;
- FrameCounter counter;
+ Keymap keymap;
+
+ MessageState msg_state;
- StateControl state;
+ Environment(Window &win, const Config &);
- explicit Environment(Window &win, const std::string &asset_path);
+ void ShowMessage(const char *);
};