diff --git a/app/src/main/java/com/luca0n/joguitos/pluck/trivia/TriviaQuery.java b/app/src/main/java/com/luca0n/joguitos/pluck/trivia/TriviaQuery.java index e1261bd..3ad82ad 100644 --- a/app/src/main/java/com/luca0n/joguitos/pluck/trivia/TriviaQuery.java +++ b/app/src/main/java/com/luca0n/joguitos/pluck/trivia/TriviaQuery.java @@ -23,79 +23,94 @@ Contact us at . package com.luca0n.joguitos.pluck.trivia; +import com.luca0n.joguitos.pluck.PluckApplication; +import com.luca0n.joguitos.pluck.R; + import java.io.Serializable; +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + public class TriviaQuery implements Serializable { - private static final String BASE = "https://opentdb.com/api.php?"; - private static final int DEFAULT_AMOUNT = 10; + private static final int DEFAULT_AMOUNT = 10; - private final int amount; - private final TriviaCategory category; - private final TriviaDifficulty difficulty; - private final TriviaType type; + private final int amount; + private final TriviaCategory category; + private final TriviaDifficulty difficulty; + private final TriviaType type; - private TriviaQuery(Builder builder) { - this.amount = builder.amount; - this.category = builder.category; - this.difficulty = builder.difficulty; - this.type = builder.type; - } + private TriviaQuery(Builder builder) { + this.amount = builder.amount; + this.category = builder.category; + this.difficulty = builder.difficulty; + this.type = builder.type; + } - public static class Builder { - private final int amount; - private TriviaCategory category; - private TriviaDifficulty difficulty; - private TriviaType type; + public static class Builder { + private final int amount; + private TriviaCategory category; + private TriviaDifficulty difficulty; + private TriviaType type; - public Builder() { - this.amount = DEFAULT_AMOUNT; - } + public Builder() { + this.amount = DEFAULT_AMOUNT; + } - public Builder(int amount) { - if (amount > 50) { - this.amount = 50; - } else { - this.amount = amount; - } - } + public Builder(int amount) { + if (amount > 50) { + this.amount = 50; + } else { + this.amount = amount; + } + } - public Builder category(TriviaCategory category) { - this.category = category; - return this; - } + public Builder category(TriviaCategory category) { + this.category = category; + return this; + } - public Builder difficulty(TriviaDifficulty difficulty) { - this.difficulty = difficulty; - return this; - } + public Builder difficulty(TriviaDifficulty difficulty) { + this.difficulty = difficulty; + return this; + } - public Builder type(TriviaType type) { - this.type = type; - return this; - } + public Builder type(TriviaType type) { + this.type = type; + return this; + } - public TriviaQuery build() { - return new TriviaQuery(this); - } - } + public TriviaQuery build() { + return new TriviaQuery(this); + } + } - @Override - public String toString() { - StringBuilder url = new StringBuilder(); + @Override + public String toString() { + StringBuilder url = new StringBuilder(); - url.append(BASE); - url.append("amount=").append(this.amount); + // Load custom server URL. + Context c = PluckApplication.getAppContext(); + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(c); + String key = c.getResources().getString(R.string.pref_network_server); + // Load default server URL in case the player did not specify a custom server URL. + String defaultServer = c.getResources().getString(R.string.pref_network_server_default); - if (this.category != null & this.category != TriviaCategory.ANY) { - url.append("&category=").append(this.category.getID()); - } - if (this.difficulty != null & this.difficulty != TriviaDifficulty.ANY) { - url.append("&difficulty=").append(this.difficulty.getName()); - } - if (this.type != null & this.type != TriviaType.ANY) { - url.append("&type=").append(this.type.getName()); - } + String base = sp.getString(key, defaultServer) + "?"; // append "?" to the end of the URL so we can specify GET parameters. - return url.toString(); - } + url.append(base); + url.append("amount=").append(this.amount); + + if (this.category != null & this.category != TriviaCategory.ANY) { + url.append("&category=").append(this.category.getID()); + } + if (this.difficulty != null & this.difficulty != TriviaDifficulty.ANY) { + url.append("&difficulty=").append(this.difficulty.getName()); + } + if (this.type != null & this.type != TriviaType.ANY) { + url.append("&type=").append(this.type.getName()); + } + + return url.toString(); + } } diff --git a/app/src/main/res/values/pref_keys.xml b/app/src/main/res/values/pref_keys.xml index d5333eb..c7bb272 100644 --- a/app/src/main/res/values/pref_keys.xml +++ b/app/src/main/res/values/pref_keys.xml @@ -26,4 +26,6 @@ Contact us at . pref_key_category_sound pref_sound_answer pref_network_tor + pref_network_server + https://opentdb.com/api.php diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7b1be37..5e788b4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -90,8 +90,11 @@ Contact us at . Sound Answer Sound Effect + Toggles game sound effects. Network - Connect using Tor - Retrieves trivia data via the Tor network. Requires Orbot. + Connect Using Tor + Retrieves trivia data via the Tor network. Requires Orbot (recommended) or a Tor daemon with a SOCKS5 proxy listening on port 9050. + Server URL + Specifies the server location used by the game to fetch questions. diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 5f715b4..4c35560 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -24,23 +24,28 @@ Contact us at . - + - - - - - - + + + + + +