X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=8a5279b71a0122705844c3f1aaef7498052d3bf1;hb=ab3d5a2937d41e04be3ae8884d9295d59ff346cd;hp=30bb2b20ee43b65fea9d8ed112b4aea9a694df89;hpb=fa64f97687b19543379b872003cd66a2a351e326;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 30bb2b20..8a5279b7 100644 --- a/src/screens.c +++ b/src/screens.c @@ -282,6 +282,9 @@ static void MapScreenTreeGadgets(TreeInfo *); static void UpdateScreenMenuGadgets(int, boolean); +static boolean OfferUploadTapes(void); +static void execOfferUploadTapes(void); + static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS]; static int info_mode = INFO_MODE_MAIN; @@ -4039,10 +4042,16 @@ void HandleInfoScreen(int mx, int my, int dx, int dy, int button) // change name functions // ============================================================================ -static void RenamePlayerOnServerExt(struct HttpRequest *request, - struct HttpResponse *response, - char *player_name_raw, - char *player_uuid_raw) +struct ApiRenamePlayerThreadData +{ + char *player_name; + char *player_uuid; +}; + +static void ApiRenamePlayerExt(struct HttpRequest *request, + struct HttpResponse *response, + char *player_name_raw, + char *player_uuid_raw) { request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; @@ -4056,11 +4065,13 @@ static void RenamePlayerOnServerExt(struct HttpRequest *request, "{\n" "%s" " \"game_version\": \"%s\",\n" + " \"game_platform\": \"%s\",\n" " \"name\": \"%s\",\n" " \"uuid\": \"%s\"\n" "}\n", getPasswordJSON(setup.api_server_password), getProgramRealVersionString(), + getProgramPlatformString(), player_name, player_uuid); @@ -4086,28 +4097,22 @@ static void RenamePlayerOnServerExt(struct HttpRequest *request, } } -static void RenamePlayerOnServer(char *player_name, char *player_uuid) +static void ApiRenamePlayer(char *player_name, char *player_uuid) { struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest)); struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); - RenamePlayerOnServerExt(request, response, player_name, player_uuid); + ApiRenamePlayerExt(request, response, player_name, player_uuid); checked_free(request); checked_free(response); } -struct RenamePlayerOnServerThreadData +static int ApiRenamePlayerThread(void *data_raw) { - char *player_name; - char *player_uuid; -}; + struct ApiRenamePlayerThreadData *data = data_raw; -static int RenamePlayerOnServerThread(void *data_raw) -{ - struct RenamePlayerOnServerThreadData *data = data_raw; - - RenamePlayerOnServer(data->player_name, data->player_uuid); + ApiRenamePlayer(data->player_name, data->player_uuid); checked_free(data->player_name); checked_free(data->player_uuid); @@ -4116,16 +4121,16 @@ static int RenamePlayerOnServerThread(void *data_raw) return 0; } -static void RenamePlayerOnServerAsThread(void) +static void ApiRenamePlayerAsThread(void) { - struct RenamePlayerOnServerThreadData *data = - checked_malloc(sizeof(struct RenamePlayerOnServerThreadData)); + struct ApiRenamePlayerThreadData *data = + checked_malloc(sizeof(struct ApiRenamePlayerThreadData)); data->player_name = getStringCopy(setup.player_name); data->player_uuid = getStringCopy(setup.player_uuid); - ExecuteAsThread(RenamePlayerOnServerThread, - "RenamePlayerOnServer", data, + ExecuteAsThread(ApiRenamePlayerThread, + "ApiRenamePlayer", data, "rename player on server"); } @@ -4268,7 +4273,7 @@ static void setTypeNameValues(char *name, struct TextPosInfo *pos, SaveSetup(); // change name of edited user on score server - RenamePlayerOnServerAsThread(); + ApiRenamePlayerAsThread(); if (game_status == GAME_MODE_PSEUDO_TYPENAMES || reset_setup) { @@ -5566,6 +5571,9 @@ static void execSetupGame(void) execSetupGame_setNetworkServerText(); + if (!setup.provide_uploading_tapes) + setHideSetupEntry(execOfferUploadTapes); + setup_mode = SETUP_MODE_GAME; DrawSetupScreen(); @@ -6651,6 +6659,11 @@ static void execGadgetNetworkServer(void) ClickOnGadget(gi, MB_LEFTBUTTON); } +static void execOfferUploadTapes(void) +{ + OfferUploadTapes(); +} + static void ToggleNetworkModeIfNeeded(void) { int font_title = FONT_TITLE_1; @@ -6868,8 +6881,9 @@ static struct TokenInfo setup_info_game[] = { TYPE_PLAYER, &setup.network_player_nr,"Preferred Network Player:" }, { TYPE_TEXT_INPUT, execGadgetNetworkServer, "Network Server Hostname:" }, { TYPE_STRING, &network_server_text, "" }, - { TYPE_SWITCH, &setup.api_server, "Use Highscore Server:" }, + { TYPE_SWITCH, &setup.use_api_server, "Use Highscore Server:" }, { TYPE_SWITCH, &setup.only_show_local_scores, "Only Show Local Scores:" }, + { TYPE_ENTER_LIST, execOfferUploadTapes, "Upload All Tapes to Server" }, { TYPE_SWITCH, &setup.multiple_users, "Multiple Users/Teams:" }, { TYPE_YES_NO, &setup.input_on_focus, "Only Move Focussed Player:" }, { TYPE_SWITCH, &setup.time_limit, "Time Limit:" }, @@ -7473,8 +7487,8 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx) ToggleNetworkModeIfNeeded(); // API server mode may have changed at this point - if (si->value == &setup.api_server) - runtime.api_server = setup.api_server; + if (si->value == &setup.use_api_server) + runtime.use_api_server = setup.use_api_server; // game speed list may have changed at this point if (si->value == &setup.game_speed_extended) @@ -9859,6 +9873,26 @@ static int UploadTapes(void) return num_tapes_uploaded; } +static boolean OfferUploadTapes(void) +{ + if (!Request("Upload all your tapes to the high score server now?", REQ_ASK)) + return FALSE; + + int num_tapes_uploaded = UploadTapes(); + char message[100]; + + sprintf(message, "%d tapes uploaded!", num_tapes_uploaded); + + Request(message, REQ_CONFIRM); + + // after all tapes have been uploaded, remove entry from setup menu + setup.provide_uploading_tapes = FALSE; + + SaveSetup(); + + return (num_tapes_uploaded > 0); +} + void CheckUploadTapes(void) { if (!setup.ask_for_uploading_tapes) @@ -9866,21 +9900,19 @@ void CheckUploadTapes(void) if (directoryExists(getTapeDir(NULL))) { - if (Request("Upload all your tapes to the high score server now?", REQ_ASK)) - { - int num_tapes_uploaded = UploadTapes(); - char message[100]; - - sprintf(message, "%d tapes uploaded!", num_tapes_uploaded); + boolean tapes_uploaded = OfferUploadTapes(); - Request(message, REQ_CONFIRM); - } - else - { - Request("You can upload your tapes from the setup menu later!", REQ_CONFIRM); - } + if (!tapes_uploaded) + Request("You can upload your tapes from the setup menu later!", + REQ_CONFIRM); + } + else + { + // if tapes directory does not exist yet, never offer uploading all tapes + setup.provide_uploading_tapes = FALSE; } + // after asking for uploading all tapes once, do not ask again setup.ask_for_uploading_tapes = FALSE; SaveSetup();