diff options
Diffstat (limited to 'src/cmd-version.c')
| -rw-r--r-- | src/cmd-version.c | 89 |
1 files changed, 14 insertions, 75 deletions
diff --git a/src/cmd-version.c b/src/cmd-version.c index 4ee4309..adb501f 100644 --- a/src/cmd-version.c +++ b/src/cmd-version.c @@ -5,6 +5,9 @@ #include "l2su.h" #include "macros.h" #include "args.h" +#include "assets.h" +#include "launch.h" +#include "instance.h" #include <jansson.h> #include <stdio.h> @@ -36,97 +39,33 @@ unsigned cmd_version_list_local(struct l2_context_node *ctx, char **args) return CMD_RESULT_SUCCESS; } -bool feat_match_cb(const char *name, json_t *js) { +bool feat_match_cb(const char *name, json_t *js, void *unused) { L2_UNUSED(name); L2_UNUSED(js); + L2_UNUSED(unused); return false; } -int l2_assets__load_index(json_t *version, json_t **asset_index); -int l2_assets__download_assets(json_t *asset_index, char **path); - +void l2_launch__test(struct l2_launch *launch); unsigned cmd_version_install(struct l2_context_node *ctx, char **args) { unsigned res = l2_version_load_remote(); - char *jarpath = NULL; - - if (res != VERSION_SUCCESS) { - CMD_FATAL("failed to load versions: %s", l2_version_strerror(res)); - } - - json_t *js; - res = l2_version_load_local(*args, &js); if (res != VERSION_SUCCESS) { - CMD_FATAL("failed to load 1.8.9: %s", l2_version_strerror(res)); - } - - CMD_INFO0("Retrieving library list..."); - struct l2_version_library *libs = NULL; - if ((res = l2_version_collect_libraries(js, &libs, &feat_match_cb)) != VERSION_SUCCESS) { - CMD_FATAL("Failed to collect library list: %s", l2_version_strerror(res)); - } - - CMD_INFO0("Downloading libraries..."); - if ((res = l2_version_download_libraries(libs)) != VERSION_SUCCESS) { - CMD_FATAL("Failed to download libraries: %s", l2_version_strerror(res)); - } - - CMD_INFO0("Downloading client jar..."); - if ((res = l2_version_download_jar(js, "client", &jarpath)) != VERSION_SUCCESS) { - CMD_FATAL("Failed to download client jar: %s", l2_version_strerror(res)); - } - - CMD_INFO0("Downloading asset index..."); - json_t *assets = NULL; - if (l2_assets__load_index(js, &assets) < 0) { - CMD_FATAL0("Failed to load asset index."); - } - - CMD_INFO0("Downloading assets..."); - char *assetsbase = NULL; - if (l2_assets__download_assets(assets, &assetsbase) < 0) { - CMD_FATAL0("Failed to download assets."); - } - - char *nativesdir = NULL; - CMD_INFO0("Extracting natives..."); - if ((res = l2_version_extract_natives(libs, &nativesdir)) != VERSION_SUCCESS) { - CMD_FATAL("Failed to extract natives: %s", l2_version_strerror(res)); + CMD_FATAL("Failed to load versions: %s", l2_version_strerror(res)); } - char **game_args; - size_t ngame_args; - l2_subst_t *st; - l2_subst_init(&st); - l2_subst_add(st, "version_name", "1.8.9"); - if (l2_args_get_game_args(js, st, &feat_match_cb, &game_args, &ngame_args) < 0) { - CMD_FATAL0("Failed to find game arguments"); - } - for (size_t n = 0; n < ngame_args; ++n) { - CMD_DEBUG("arg: %s", game_args[n]); - free(game_args[n]); + if ((res = l2_instance_load_all()) != INSTANCE_SUCCESS) { + CMD_FATAL("Failed to load instances: %s", l2_instance_errormsg[res]); } - free(game_args); - if (l2_args_get_jvm_args(js, st, &feat_match_cb, &game_args, &ngame_args) < 0) { - CMD_FATAL0("Failed to find JVM arguments"); - } - for (size_t n = 0; n < ngame_args; ++n) { - CMD_DEBUG("jvm arg: %s", game_args[n]); - free(game_args[n]); + struct l2_launch launch = { 0 }; + if (l2_launch_init(&launch, *args, l2_state.instance_head) < 0) { + CMD_FATAL0("Failed to launch the game"); } - free(game_args); - - l2_subst_free(st); - - CMD_INFO("Assets base: %s", assetsbase); - free(assetsbase); - json_decref(assets); + l2_launch__test(&launch); - l2_version_free_libraries(libs); - free(jarpath); - json_decref(js); + l2_launch_free_contents(&launch); return CMD_RESULT_SUCCESS; } |
