Update program entry point logic to use new API features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
fc7a5fa89f
commit
7b0f526b55
@ -1,55 +1,60 @@
|
||||
export module runtime;
|
||||
|
||||
import app;
|
||||
|
||||
import coral;
|
||||
import coral.files;
|
||||
import coral.io;
|
||||
import coral.math;
|
||||
import coral.stack;
|
||||
|
||||
import oar.files;
|
||||
|
||||
import turtle;
|
||||
import turtle.io;
|
||||
|
||||
extern "C" int main(int argc, char const * const * argv) {
|
||||
return app::client::run("Ona Runtime", [](app::client & client) -> int {
|
||||
constexpr coral::path config_path{"config.kym"};
|
||||
bool is_config_loaded{false};
|
||||
turtle::event_loop::run("Ona Runtime", [](turtle::event_loop & event_loop) -> void {
|
||||
constexpr coral::slice archive_path {"index.oar"};
|
||||
bool is_archive_loaded {false};
|
||||
|
||||
client.resources().read_file(config_path, [&](coral::reader & file) {
|
||||
coral::allocator * const allocator{&client.thread_safe_allocator()};
|
||||
oar::archive_file::read(turtle::file_sandbox::base(), archive_path, [&](oar::archive_file & archive_file) -> void {
|
||||
is_archive_loaded = true;
|
||||
|
||||
coral::small_stack<coral::u8> script_source{allocator};
|
||||
{
|
||||
coral::u8 stream_buffer[1024]{0};
|
||||
coral::stack_writer script_writer{&script_source};
|
||||
constexpr coral::slice config_path {"config.kym"};
|
||||
bool is_config_loaded {false};
|
||||
|
||||
if (!coral::stream(script_writer, file, stream_buffer).is_ok()) return;
|
||||
}
|
||||
archive_file.read_file(config_path, [&](coral::file_reader & config_reader) {
|
||||
archive_file.query_file(config_path).and_then([&](coral::file_system::file_info file_info) {
|
||||
turtle::system_allocator allocator {turtle::system_allocator::thread_safety::none};
|
||||
coral::ring_buffer config_source;
|
||||
|
||||
client.log(app::log_level::notice, script_source.as_slice().as_chars());
|
||||
if (config_source.allocate(allocator, file_info.size) != coral::ring_buffer::allocate_result::ok)
|
||||
return;
|
||||
|
||||
coral::u8 stream_buffer[1024] {0};
|
||||
|
||||
if (coral::stream(config_source, config_reader, stream_buffer).is_error()) return;
|
||||
|
||||
is_config_loaded = true;
|
||||
});
|
||||
});
|
||||
|
||||
if (!is_config_loaded) {
|
||||
coral::small_stack<coral::u8> error_message{&client.thread_safe_allocator()};
|
||||
{
|
||||
coral::stack_writer error_writer{&error_message};
|
||||
static_cast<void>(coral::println(turtle::error_log(), "failed to read", config_path));
|
||||
|
||||
if (!error_writer.write(coral::slice{"failed to load "}.as_bytes()).is_ok())
|
||||
return coral::u8_max;
|
||||
|
||||
if (!error_writer.write(config_path.as_slice().as_bytes()).is_ok())
|
||||
return coral::u8_max;
|
||||
return;
|
||||
}
|
||||
|
||||
return coral::u8_max;
|
||||
}
|
||||
// event_loop.display(1280, 800);
|
||||
|
||||
client.display(1280, 800);
|
||||
|
||||
while (client.poll()) {
|
||||
while (event_loop.poll()) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
if (!is_archive_loaded) {
|
||||
static_cast<void>(coral::println(turtle::error_log(), "failed to open", archive_path));
|
||||
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user