X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=dafea37167ee94680f5c6179c898cbab6d92f593;hb=936fb8234557301d8c2b01f0e8cf9613583e0500;hp=4be8f3026391e8ffb31c7c0d219ed757ab11dcb9;hpb=01a8d4fa016966e6c45616d8dfa5bdbaecdb24c5;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 4be8f302..dafea371 100644 --- a/src/files.c +++ b/src/files.c @@ -8439,6 +8439,8 @@ static void setScoreInfoToDefaultsExt(struct ScoreInfo *scores) scores->num_entries = 0; scores->last_added = -1; scores->last_added_local = -1; + + scores->updated = FALSE; } static void setScoreInfoToDefaults(void) @@ -8927,7 +8929,7 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request, struct HttpResponse *response, int nr) { - request->hostname = API_SERVER_HOSTNAME; + request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; request->method = API_SERVER_METHOD; request->uri = API_SERVER_URI_GET; @@ -8985,6 +8987,8 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request, fclose(file); SetFilePermissions(filename, PERMS_PRIVATE); + + server_scores.updated = TRUE; } static void DownloadServerScoreToCache(int nr) @@ -9080,6 +9084,9 @@ static void LoadServerScoreFromCache(int nr) void LoadServerScore(int nr, boolean download_score) { + if (!setup.api_server) + return; + // always start with reliable default values setServerScoreInfoToDefaults(); @@ -9087,15 +9094,12 @@ void LoadServerScore(int nr, boolean download_score) // (this should prevent reading it while the thread is writing to it) LoadServerScoreFromCache(nr); - if (download_score) + if (download_score && runtime.api_server) { // 2nd step: download server scores from score server to cache file // (as thread, as it might time out if the server is not reachable) DownloadServerScoreToCacheAsThread(nr); } - - // merge local scores with scores from server - MergeServerScore(); } static char *get_file_base64(char *filename) @@ -9158,7 +9162,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, { struct ScoreEntry *score_entry = &scores.entry[scores.last_added]; - request->hostname = API_SERVER_HOSTNAME; + request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; request->method = API_SERVER_METHOD; request->uri = API_SERVER_URI_ADD; @@ -9249,6 +9253,9 @@ static void UploadScoreToServerAsThread(int nr) void SaveServerScore(int nr) { + if (!runtime.api_server) + return; + UploadScoreToServerAsThread(nr); } @@ -9261,9 +9268,14 @@ void LoadLocalAndServerScore(int nr, boolean download_score) // restore last added local score entry (before merging server scores) scores.last_added = scores.last_added_local = last_added_local; - LoadServerScore(nr, download_score); + if (setup.api_server) + { + // load server scores from cache file and trigger update from server + LoadServerScore(nr, download_score); - MergeServerScore(); + // merge local scores with scores from server + MergeServerScore(); + } } @@ -9500,6 +9512,14 @@ static struct TokenInfo global_setup_tokens[] = TYPE_STRING, &setup.network_server_hostname, "network_server_hostname" }, + { + TYPE_SWITCH, + &setup.api_server, "api_server" + }, + { + TYPE_STRING, + &setup.api_server_hostname, "api_server_hostname" + }, { TYPE_STRING, &setup.touch.control_type, "touch.control_type" @@ -10133,6 +10153,9 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->network_player_nr = 0; // first player si->network_server_hostname = getStringCopy(STR_NETWORK_AUTO_DETECT); + si->api_server = TRUE; + si->api_server_hostname = getStringCopy(API_SERVER_HOSTNAME); + si->touch.control_type = getStringCopy(TOUCH_CONTROL_DEFAULT); si->touch.move_distance = TOUCH_MOVE_DISTANCE_DEFAULT; // percent si->touch.drop_distance = TOUCH_DROP_DISTANCE_DEFAULT; // percent @@ -10748,6 +10771,7 @@ void SaveSetup(void) global_setup_tokens[i].value == &setup.graphics_set || global_setup_tokens[i].value == &setup.volume_simple || global_setup_tokens[i].value == &setup.network_mode || + global_setup_tokens[i].value == &setup.api_server || global_setup_tokens[i].value == &setup.touch.control_type || global_setup_tokens[i].value == &setup.touch.grid_xsize[0] || global_setup_tokens[i].value == &setup.touch.grid_xsize[1])