diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d40b198e7..89664029c 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -78,11 +78,15 @@ - + + + + + diff --git a/build/apk/AndroidManifest.xml b/build/apk/AndroidManifest.xml index ddc2aaf04..64ee0eaeb 100644 Binary files a/build/apk/AndroidManifest.xml and b/build/apk/AndroidManifest.xml differ diff --git a/build/apk/classes2.dex b/build/apk/classes2.dex index 15a955ce8..61eb4c01a 100644 Binary files a/build/apk/classes2.dex and b/build/apk/classes2.dex differ diff --git a/build/apk/res/layout/activity_server_selection.xml b/build/apk/res/layout/activity_server_selection.xml new file mode 100644 index 000000000..fcb19ff89 Binary files /dev/null and b/build/apk/res/layout/activity_server_selection.xml differ diff --git a/build/apk/res/layout/dialog_server_input.xml b/build/apk/res/layout/dialog_server_input.xml new file mode 100644 index 000000000..4dc4c1d45 Binary files /dev/null and b/build/apk/res/layout/dialog_server_input.xml differ diff --git a/build/apk/res/xml/network_security_config.xml b/build/apk/res/xml/network_security_config.xml index e356236a4..c9bc0f314 100644 Binary files a/build/apk/res/xml/network_security_config.xml and b/build/apk/res/xml/network_security_config.xml differ diff --git a/build/apk/resources.arsc b/build/apk/resources.arsc index 52fd679b8..11c83b8ad 100644 Binary files a/build/apk/resources.arsc and b/build/apk/resources.arsc differ diff --git a/build/resources.zip b/build/resources.zip index 5072157fa..b17cb7fbf 100644 Binary files a/build/resources.zip and b/build/resources.zip differ diff --git a/res/layout/activity_server_selection.xml b/res/layout/activity_server_selection.xml new file mode 100644 index 000000000..58079246d --- /dev/null +++ b/res/layout/activity_server_selection.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/layout/dialog_server_input.xml b/res/layout/dialog_server_input.xml new file mode 100644 index 000000000..9d2c5399e --- /dev/null +++ b/res/layout/dialog_server_input.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/xml/network_security_config.xml b/res/xml/network_security_config.xml index 23600d965..3346e0e60 100644 --- a/res/xml/network_security_config.xml +++ b/res/xml/network_security_config.xml @@ -1,6 +1 @@ - - - - 127.0.0.1 - - + \ No newline at end of file diff --git a/smali_classes2/com/firemint/realracing/MainActivity.smali b/smali_classes2/com/firemint/realracing/MainActivity.smali index c6dc7af02..a0a8793c8 100644 --- a/smali_classes2/com/firemint/realracing/MainActivity.smali +++ b/smali_classes2/com/firemint/realracing/MainActivity.smali @@ -2238,6 +2238,49 @@ :cond_0 invoke-static {p0}, Lcom/firemint/realracing/AppProxy;->SetActivity(Landroid/app/Activity;)V + # Check if launched from ServerSelectionActivity + invoke-virtual {p0}, Lcom/firemint/realracing/MainActivity;->getIntent()Landroid/content/Intent; + + move-result-object v0 + + if-eqz v0, :skip_server_config + + const-string v1, "mode" + + invoke-virtual {v0, v1}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; + + move-result-object v1 + + if-eqz v1, :skip_server_config + + const-string v2, "online" + + invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + + move-result v2 + + if-eqz v2, :skip_server_config + + # Online mode - set up custom server + const-string v1, "serverUrl" + + invoke-virtual {v0, v1}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; + + move-result-object v0 + + if-eqz v0, :skip_server_config + + invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z + + move-result v1 + + if-nez v1, :skip_server_config + + # Set custom server URL for Nimble SDK + invoke-static {v0}, Lcom/firemint/realracing/ServerManager;->setCustomServer(Ljava/lang/String;)V + + :skip_server_config + # Delayed initialization of offline managers (500ms delay to prevent crash) # This allows Android system to fully initialize Context, SharedPreferences, etc. iget-object v0, p0, Lcom/firemint/realracing/MainActivity;->handler:Landroid/os/Handler; diff --git a/smali_classes2/com/firemint/realracing/ServerManager.smali b/smali_classes2/com/firemint/realracing/ServerManager.smali new file mode 100644 index 000000000..2ac521358 --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerManager.smali @@ -0,0 +1,121 @@ +.class public Lcom/firemint/realracing/ServerManager; +.super Ljava/lang/Object; +.source "ServerManager.java" + + +# direct methods +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + +.method public static setCustomServer(Ljava/lang/String;)V + .locals 4 + + const-string v0, "RealRacing3" + + :try_start_0 + new-instance v1, Ljava/lang/StringBuilder; + + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + + const-string v2, "\ud83c\udf0e Setting custom server: " + + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v1 + + invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I + + invoke-static {}, Lcom/ea/nimble/SynergyEnvironment;->getComponent()Lcom/ea/nimble/ISynergyEnvironment; + + move-result-object v1 + + if-nez v1, :cond_0 + + const-string p0, "\u26a0\ufe0f Nimble SDK not initialized, custom server cannot be set" + + invoke-static {v0, p0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I + + return-void + + :cond_0 + const-string v2, "synergy.director" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + const-string v2, "synergy.user" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + const-string v2, "synergy.product" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + const-string v2, "synergy.tracking" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + const-string v2, "synergy.s2s" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + const-string v2, "synergy.drm" + + invoke-interface {v1, v2, p0}, Lcom/ea/nimble/ISynergyEnvironment;->setServerUrl(Ljava/lang/String;Ljava/lang/String;)Lcom/ea/nimble/Error; + + new-instance v1, Ljava/lang/StringBuilder; + + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + + const-string v2, "\u2705 Successfully configured community server: " + + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object p0 + + invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I + :try_end_0 + .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 + + goto :goto_0 + + :catch_0 + move-exception p0 + + new-instance v1, Ljava/lang/StringBuilder; + + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + + const-string v2, "\u274c Error setting custom server: " + + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {p0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; + + move-result-object v2 + + invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + + move-result-object v1 + + invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I + + invoke-virtual {p0}, Ljava/lang/Exception;->printStackTrace()V + + :goto_0 + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity$1.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$1.smali new file mode 100644 index 000000000..cb99a89aa --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$1.smali @@ -0,0 +1,150 @@ +.class Lcom/firemint/realracing/ServerSelectionActivity$1; +.super Ljava/lang/Object; +.source "ServerSelectionActivity.java" + +# interfaces +.implements Landroid/content/DialogInterface$OnClickListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/firemint/realracing/ServerSelectionActivity;->showServerInputDialog()V +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x0 + name = null +.end annotation + + +# instance fields +.field final synthetic this$0:Lcom/firemint/realracing/ServerSelectionActivity; + +.field final synthetic val$etServerUrl:Landroid/widget/EditText; + +.field final synthetic val$cbRemember:Landroid/widget/CheckBox; + +.field final synthetic val$rgPreset:Landroid/widget/RadioGroup; + + +# direct methods +.method constructor (Lcom/firemint/realracing/ServerSelectionActivity;Landroid/widget/RadioGroup;Landroid/widget/EditText;Landroid/widget/CheckBox;)V + .locals 0 + + iput-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + iput-object p2, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$rgPreset:Landroid/widget/RadioGroup; + + iput-object p3, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$etServerUrl:Landroid/widget/EditText; + + iput-object p4, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$cbRemember:Landroid/widget/CheckBox; + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public onClick(Landroid/content/DialogInterface;I)V + .locals 3 + + iget-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$rgPreset:Landroid/widget/RadioGroup; + + invoke-virtual {p1}, Landroid/widget/RadioGroup;->getCheckedRadioButtonId()I + + move-result p1 + + const p2, 0x7f0a083e + + const-string v0, "https://rr3.barrer.net:8443" + + if-ne p1, p2, :cond_0 + + move-object p1, v0 + + goto :goto_0 + + :cond_0 + const p2, 0x7f0a083c + + if-ne p1, p2, :cond_1 + + const-string p1, "http://localhost:3000" + + goto :goto_0 + + :cond_1 + iget-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$etServerUrl:Landroid/widget/EditText; + + invoke-virtual {p1}, Landroid/widget/EditText;->getText()Landroid/text/Editable; + + move-result-object p1 + + invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String; + + move-result-object p1 + + invoke-virtual {p1}, Ljava/lang/String;->trim()Ljava/lang/String; + + move-result-object p1 + + invoke-virtual {p1}, Ljava/lang/String;->isEmpty()Z + + move-result p2 + + if-eqz p2, :cond_2 + + move-object p1, v0 + + :cond_2 + :goto_0 + iget-object p2, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->val$cbRemember:Landroid/widget/CheckBox; + + invoke-virtual {p2}, Landroid/widget/CheckBox;->isChecked()Z + + move-result p2 + + if-eqz p2, :cond_3 + + iget-object p2, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + const-string v0, "rr3_server_config" + + const/4 v1, 0x0 + + invoke-virtual {p2, v0, v1}, Lcom/firemint/realracing/ServerSelectionActivity;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; + + move-result-object p2 + + invoke-interface {p2}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; + + move-result-object p2 + + const-string v0, "mode" + + const-string v1, "online" + + invoke-interface {p2, v0, v1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; + + const-string v0, "serverUrl" + + invoke-interface {p2, v0, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; + + const-string v0, "skip_selection" + + const/4 v2, 0x1 + + invoke-interface {p2, v0, v2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; + + invoke-interface {p2}, Landroid/content/SharedPreferences$Editor;->apply()V + + :cond_3 + iget-object p2, p0, Lcom/firemint/realracing/ServerSelectionActivity$1;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + const-string v0, "online" + + invoke-static {p2, v0, p1}, Lcom/firemint/realracing/ServerSelectionActivity;->access$000(Lcom/firemint/realracing/ServerSelectionActivity;Ljava/lang/String;Ljava/lang/String;)V + + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity$2.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$2.smali new file mode 100644 index 000000000..f81208e94 --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$2.smali @@ -0,0 +1,43 @@ +.class Lcom/firemint/realracing/ServerSelectionActivity$2; +.super Ljava/lang/Object; +.source "ServerSelectionActivity.java" + +# interfaces +.implements Landroid/content/DialogInterface$OnClickListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/firemint/realracing/ServerSelectionActivity;->showServerInputDialog()V +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x0 + name = null +.end annotation + + +# instance fields +.field final synthetic this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + +# direct methods +.method constructor (Lcom/firemint/realracing/ServerSelectionActivity;)V + .locals 0 + + iput-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$2;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public onClick(Landroid/content/DialogInterface;I)V + .locals 0 + + invoke-interface {p1}, Landroid/content/DialogInterface;->dismiss()V + + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity$3.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$3.smali new file mode 100644 index 000000000..f9c138ef7 --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$3.smali @@ -0,0 +1,49 @@ +.class Lcom/firemint/realracing/ServerSelectionActivity$3; +.super Ljava/lang/Object; +.source "ServerSelectionActivity.java" + +# interfaces +.implements Landroid/view/View$OnClickListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/firemint/realracing/ServerSelectionActivity;->onCreate(Landroid/os/Bundle;)V +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x0 + name = null +.end annotation + + +# instance fields +.field final synthetic this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + +# direct methods +.method constructor (Lcom/firemint/realracing/ServerSelectionActivity;)V + .locals 0 + + iput-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$3;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public onClick(Landroid/view/View;)V + .locals 2 + + iget-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$3;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + const-string v0, "offline" + + const-string v1, "" + + invoke-static {p1, v0, v1}, Lcom/firemint/realracing/ServerSelectionActivity;->access$000(Lcom/firemint/realracing/ServerSelectionActivity;Ljava/lang/String;Ljava/lang/String;)V + + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity$4.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$4.smali new file mode 100644 index 000000000..2a793645c --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$4.smali @@ -0,0 +1,45 @@ +.class Lcom/firemint/realracing/ServerSelectionActivity$4; +.super Ljava/lang/Object; +.source "ServerSelectionActivity.java" + +# interfaces +.implements Landroid/view/View$OnClickListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/firemint/realracing/ServerSelectionActivity;->onCreate(Landroid/os/Bundle;)V +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x0 + name = null +.end annotation + + +# instance fields +.field final synthetic this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + +# direct methods +.method constructor (Lcom/firemint/realracing/ServerSelectionActivity;)V + .locals 0 + + iput-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$4;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public onClick(Landroid/view/View;)V + .locals 0 + + iget-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$4;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-static {p1}, Lcom/firemint/realracing/ServerSelectionActivity;->access$100(Lcom/firemint/realracing/ServerSelectionActivity;)V + + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity$5.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$5.smali new file mode 100644 index 000000000..b0ec38349 --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity$5.smali @@ -0,0 +1,67 @@ +.class Lcom/firemint/realracing/ServerSelectionActivity$5; +.super Ljava/lang/Object; +.source "ServerSelectionActivity.java" + +# interfaces +.implements Landroid/view/View$OnClickListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/firemint/realracing/ServerSelectionActivity;->onCreate(Landroid/os/Bundle;)V +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x0 + name = null +.end annotation + + +# instance fields +.field final synthetic this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + +# direct methods +.method constructor (Lcom/firemint/realracing/ServerSelectionActivity;)V + .locals 0 + + iput-object p1, p0, Lcom/firemint/realracing/ServerSelectionActivity$5;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public onClick(Landroid/view/View;)V + .locals 2 + + new-instance p1, Landroid/app/AlertDialog$Builder; + + iget-object v0, p0, Lcom/firemint/realracing/ServerSelectionActivity$5;->this$0:Lcom/firemint/realracing/ServerSelectionActivity; + + invoke-direct {p1, v0}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V + + const-string v0, "Community Server Help" + + invoke-virtual {p1, v0}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; + + const-string v0, "OFFLINE MODE:\nPlay with unlimited currency and all features unlocked. No internet required.\n\nONLINE MODE:\nConnect to a community server for multiplayer, events, and custom content.\n\nServer URL format:\nhttps://your-server.com:8443\n\nVisit rr3.barrer.net for more info!" + + invoke-virtual {p1, v0}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; + + const-string v0, "OK" + + const/4 v1, 0x0 + + invoke-virtual {p1, v0, v1}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; + + invoke-virtual {p1}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; + + move-result-object p1 + + invoke-virtual {p1}, Landroid/app/AlertDialog;->show()V + + return-void +.end method diff --git a/smali_classes2/com/firemint/realracing/ServerSelectionActivity.smali b/smali_classes2/com/firemint/realracing/ServerSelectionActivity.smali new file mode 100644 index 000000000..707633d6b --- /dev/null +++ b/smali_classes2/com/firemint/realracing/ServerSelectionActivity.smali @@ -0,0 +1,233 @@ +.class public Lcom/firemint/realracing/ServerSelectionActivity; +.super Landroid/app/Activity; +.source "ServerSelectionActivity.java" + + +# direct methods +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Landroid/app/Activity;->()V + + return-void +.end method + +.method static synthetic access$000(Lcom/firemint/realracing/ServerSelectionActivity;Ljava/lang/String;Ljava/lang/String;)V + .locals 0 + + invoke-direct {p0, p1, p2}, Lcom/firemint/realracing/ServerSelectionActivity;->startMainActivity(Ljava/lang/String;Ljava/lang/String;)V + + return-void +.end method + +.method static synthetic access$100(Lcom/firemint/realracing/ServerSelectionActivity;)V + .locals 0 + + invoke-direct {p0}, Lcom/firemint/realracing/ServerSelectionActivity;->showServerInputDialog()V + + return-void +.end method + +.method private loadSavedPreferences()Z + .locals 4 + + const-string v0, "rr3_server_config" + + const/4 v1, 0x0 + + invoke-virtual {p0, v0, v1}, Lcom/firemint/realracing/ServerSelectionActivity;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; + + move-result-object v0 + + const-string v2, "skip_selection" + + invoke-interface {v0, v2, v1}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z + + move-result v2 + + if-eqz v2, :cond_0 + + const-string v1, "mode" + + const-string v2, "offline" + + invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + + move-result-object v1 + + const-string v2, "serverUrl" + + const-string v3, "" + + invoke-interface {v0, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + + move-result-object v0 + + invoke-direct {p0, v1, v0}, Lcom/firemint/realracing/ServerSelectionActivity;->startMainActivity(Ljava/lang/String;Ljava/lang/String;)V + + const/4 v0, 0x1 + + return v0 + + :cond_0 + return v1 +.end method + +.method private showServerInputDialog()V + .locals 5 + + new-instance v0, Landroid/app/AlertDialog$Builder; + + invoke-direct {v0, p0}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V + + invoke-virtual {p0}, Lcom/firemint/realracing/ServerSelectionActivity;->getLayoutInflater()Landroid/view/LayoutInflater; + + move-result-object v1 + + const v2, 0x7f0d0157 + + const/4 v3, 0x0 + + invoke-virtual {v1, v2, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; + + move-result-object v1 + + const v2, 0x7f0a047a + + invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View; + + move-result-object v2 + + check-cast v2, Landroid/widget/EditText; + + const v3, 0x7f0a0826 + + invoke-virtual {v1, v3}, Landroid/view/View;->findViewById(I)Landroid/view/View; + + move-result-object v3 + + check-cast v3, Landroid/widget/RadioGroup; + + const v4, 0x7f0a0216 + + invoke-virtual {v1, v4}, Landroid/view/View;->findViewById(I)Landroid/view/View; + + move-result-object v4 + + check-cast v4, Landroid/widget/CheckBox; + + invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder; + + new-instance v1, Lcom/firemint/realracing/ServerSelectionActivity$1; + + invoke-direct {v1, p0, v3, v2, v4}, Lcom/firemint/realracing/ServerSelectionActivity$1;->(Lcom/firemint/realracing/ServerSelectionActivity;Landroid/widget/RadioGroup;Landroid/widget/EditText;Landroid/widget/CheckBox;)V + + const-string v2, "Connect" + + invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; + + new-instance v1, Lcom/firemint/realracing/ServerSelectionActivity$2; + + invoke-direct {v1, p0}, Lcom/firemint/realracing/ServerSelectionActivity$2;->(Lcom/firemint/realracing/ServerSelectionActivity;)V + + const-string v2, "Cancel" + + invoke-virtual {v0, v2, v1}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; + + const/4 v1, 0x0 + + invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder; + + invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; + + move-result-object v0 + + invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V + + return-void +.end method + +.method private startMainActivity(Ljava/lang/String;Ljava/lang/String;)V + .locals 2 + + # First launch UnpackAssetsActivity (extracts game files) + new-instance v0, Landroid/content/Intent; + + const-class v1, Lcom/firemint/realracing/UnpackAssetsActivity; + + invoke-direct {v0, p0, v1}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V + + # Pass mode and serverUrl as extras so UnpackAssetsActivity can forward them + const-string v1, "mode" + + invoke-virtual {v0, v1, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; + + const-string p1, "serverUrl" + + invoke-virtual {v0, p1, p2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; + + invoke-virtual {p0, v0}, Lcom/firemint/realracing/ServerSelectionActivity;->startActivity(Landroid/content/Intent;)V + + invoke-virtual {p0}, Lcom/firemint/realracing/ServerSelectionActivity;->finish()V + + return-void +.end method + + +# virtual methods +.method protected onCreate(Landroid/os/Bundle;)V + .locals 2 + + invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V + + invoke-direct {p0}, Lcom/firemint/realracing/ServerSelectionActivity;->loadSavedPreferences()Z + + move-result p1 + + if-eqz p1, :cond_0 + + return-void + + :cond_0 + const p1, 0x7f0d001c + + invoke-virtual {p0, p1}, Lcom/firemint/realracing/ServerSelectionActivity;->setContentView(I)V + + const p1, 0x7f0a013a + + invoke-virtual {p0, p1}, Lcom/firemint/realracing/ServerSelectionActivity;->findViewById(I)Landroid/view/View; + + move-result-object p1 + + new-instance v0, Lcom/firemint/realracing/ServerSelectionActivity$3; + + invoke-direct {v0, p0}, Lcom/firemint/realracing/ServerSelectionActivity$3;->(Lcom/firemint/realracing/ServerSelectionActivity;)V + + invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V + + const p1, 0x7f0a013b + + invoke-virtual {p0, p1}, Lcom/firemint/realracing/ServerSelectionActivity;->findViewById(I)Landroid/view/View; + + move-result-object p1 + + new-instance v0, Lcom/firemint/realracing/ServerSelectionActivity$4; + + invoke-direct {v0, p0}, Lcom/firemint/realracing/ServerSelectionActivity$4;->(Lcom/firemint/realracing/ServerSelectionActivity;)V + + invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V + + const p1, 0x7f0a0b81 + + invoke-virtual {p0, p1}, Lcom/firemint/realracing/ServerSelectionActivity;->findViewById(I)Landroid/view/View; + + move-result-object p1 + + new-instance v0, Lcom/firemint/realracing/ServerSelectionActivity$5; + + invoke-direct {v0, p0}, Lcom/firemint/realracing/ServerSelectionActivity$5;->(Lcom/firemint/realracing/ServerSelectionActivity;)V + + invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V + + return-void +.end method