/**
 * \file client.cpp
 * \brief Univerxel client
 * \author Shu
 * \version 0.0.2
 *
 * Univerxel light client program.
 */

#include "client/Client.hpp"
#include "core/options_part.hpp"
#include "core/utils/tracy.hpp"
#include "core/utils/logger.hpp"
#include "version.h"

/// Entry point
int main(int argc, char *argv[]){
    LOG("Univerxel client " << UNIVERXEL_VERSION);

#if TRACY_ENABLE
    LOG("Profiling !");
#endif

    auto options = config::options_part<config::client::options>(argc > 1 ? argv[1] : config::DEFAULT_FILE);
    options.save();

#if TRACY_ENABLE
    tracy::SetThreadName("Main");
#endif

    world::module::Registry::Load();

    auto client = Client(options.get(), nullptr);
    client.run();

    options.save();
    world::module::Registry::Unload();

    return 0;
}