#pragma once #include #include #include #include #include #include "entities/world.hpp" #include "text/handler.hpp" #include "utils/globals.hpp" namespace Nimbin { struct CompilerSystem { private: DynArray _pending; std::thread _worker; std::mutex _mtx; std::atomic _running{false}; int _count {0}; void push_Line (Text::Handler& out, const std::string& line); static void run_Compile(CompilerSystem* self, std::string src); public: static inline float line_height = 0.4f; static inline float start_y = World::get_FloorY()+1; bool last_compile_ok{false}; void update (Text::Handler& out); void compile (Text::Handler& out, const std::string& src); bool is_Running() const { return _running.load(); } ~CompilerSystem(); }; } // namespace Nimbin