X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fmenu%2Fgamecommand.qc;h=ea2e4034eb08fadb820ea319ae2e6fa17fca8401;hb=0b1b5021f6f2049b4d2d9187d5eb04c9af6d441d;hp=4a89ab9bae5958726c0254a7f7ea2fc6f7214a49;hpb=24c0e211b8a839afe6bb5fc5c603d450a72b9160;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/gamecommand.qc b/qcsrc/menu/gamecommand.qc index 4a89ab9ba..ea2e4034e 100644 --- a/qcsrc/menu/gamecommand.qc +++ b/qcsrc/menu/gamecommand.qc @@ -31,6 +31,35 @@ void _dumptree_close(entity pass, entity me) } } +float curl_uri_get_pos; +float curl_uri_get_exec[URI_GET_CURL_END - URI_GET_CURL + 1]; +string curl_uri_get_cvar[URI_GET_CURL_END - URI_GET_CURL + 1]; +void Curl_URI_Get_Callback(float id, float status, string data) +{ + float i; + float do_exec; + string do_cvar; + i = id - URI_GET_CURL; + do_exec = curl_uri_get_exec[i]; + do_cvar = curl_uri_get_cvar[i]; + if(status != 0) + { + print(sprintf(_("error: status is %d\n"), status)); + if(do_cvar) + strunzone(do_cvar); + return; + } + if(do_exec) + localcmd(data); + if(do_cvar) + { + cvar_set(do_cvar, data); + strunzone(do_cvar); + } + if(!do_exec && !do_cvar) + print(data); +} + void GameCommand(string theCommand) { float argc; @@ -38,9 +67,9 @@ void GameCommand(string theCommand) if(argv(0) == "help" || argc == 0) { - print("Usage: menu_cmd theCommand..., where possible theCommands are:\n"); - print(" sync - reloads all cvars on the current menu page\n"); - print(" directmenu ITEM - select a menu item as main item\n"); + print(_("Usage: menu_cmd command..., where possible commands are:\n")); + print(_(" sync - reloads all cvars on the current menu page\n")); + print(_(" directmenu ITEM - select a menu item as main item\n")); GameCommand_Generic("help"); return; } @@ -50,7 +79,7 @@ void GameCommand(string theCommand) if(argv(0) == "sync") { - loadAllCvars(main); + m_sync(); return; } @@ -64,9 +93,8 @@ void GameCommand(string theCommand) if(argv(0) == "directpanelhudmenu") { - highlightedPanel = stof(argv(1)); // switch to a menu item - m_goto(strcat("HUD", HUD_Panel_GetName(highlightedPanel))); + m_goto(strcat("HUD", argv(1))); return; } @@ -76,6 +104,12 @@ void GameCommand(string theCommand) return; } + if(argv(0) == "languageselect") + { + m_goto_language_selector(); + return; + } + if(argv(0) == "videosettings") { m_goto_video_settings(); @@ -89,50 +123,71 @@ void GameCommand(string theCommand) return; } - if(argv(0) == "setresolution") - { - updateConwidths(); - return; - } - -#if 0 - if(argv(0) == "tokentest") + if(argv(0) == "curl") { - string s; - float i, n; - - print("SANE tokenizer:\n"); - s = cvar_string("tokentest"); - n = tokenize_console_force_builtin(s); - for(i = -n; i < n; ++i) + float do_exec; + string do_cvar; + float key; + float i, j; + string url; + float buf; + float r; + + do_exec = FALSE; + do_cvar = string_null; + key = -1; + + for(i = 1; i+1 < argc; ++i) { - print("token ", ftos(i), ": '", argv(i), "' = "); - print(ftos(argv_start_index(i)), " to ", ftos(argv_end_index(i)), "\n"); + if(argv(i) == "--cvar" && i+2 < argc) + { + ++i; + do_cvar = strzone(argv(i)); + continue; + } + if(argv(i) == "--exec") + { + do_exec = TRUE; + continue; + } + if(argv(i) == "--key" && i+2 < argc) + { + ++i; + key = stof(argv(i)); + continue; + } + break; } - print(".\n"); - print("INSANE tokenizer:\n"); - s = cvar_string("tokentest"); - n = tokenize(s); - for(i = -n; i < n; ++i) + // now, argv(i) is the URL + // following args may be POST parameters + url = argv(i); + ++i; + buf = buf_create(); + j = 0; + for(; i+1 < argc; i += 2) + bufstr_set(buf, ++j, sprintf("%s=%s", uri_escape(argv(i)), uri_escape(argv(i+1)))); + if(i < argc) + bufstr_set(buf, ++j, sprintf("submit=%s", uri_escape(argv(i)))); + + if(j == 0) // no args: GET + r = crypto_uri_postbuf(url, URI_GET_CURL + curl_uri_get_pos, string_null, string_null, -1, key); + else // with args: POST + r = crypto_uri_postbuf(url, URI_GET_CURL + curl_uri_get_pos, "application/x-www-form-urlencoded", "&", buf, key); + + if(r) { - print("token ", ftos(i), ": '", argv(i), "' = "); - print(ftos(argv_start_index(i)), " to ", ftos(argv_end_index(i)), "\n"); + curl_uri_get_exec[curl_uri_get_pos] = do_exec; + curl_uri_get_cvar[curl_uri_get_pos] = do_cvar; + curl_uri_get_pos = mod(curl_uri_get_pos + 1, URI_GET_CURL_END - URI_GET_CURL + 1); } - print(".\n"); + else + print(_("error creating curl handle\n")); + + buf_del(buf); - print("EMULATED tokenizer:\n"); - s = cvar_string("tokentest"); - n = tokenize_console_force_emulation(s); - for(i = -n; i < n; ++i) - { - print("token ", ftos(i), ": '", argv(i), "' = "); - print(ftos(argv_start_index(i)), " to ", ftos(argv_end_index(i)), "\n"); - } - print(".\n"); return; } -#endif - print("Invalid theCommand. For a list of supported theCommands, try menu_cmd help.\n"); + print(_("Invalid command. For a list of supported commands, try menu_cmd help.\n")); }