- NEW: ServerSelectionActivity as main launcher - Beautiful startup menu (Offline/Online modes) - URL input dialog with custom port support - Quick select presets (Official/Local/Custom) - 'Remember my choice' persistence - Help dialog for first-time users - NEW: ServerManager for Nimble SDK URL overrides - Automatically configures all EA endpoints - Supports custom ports (:8443, :3000, etc.) - Comprehensive error handling and logging - Modified MainActivity to read Intent extras - Reads mode (online/offline) from ServerSelectionActivity - Configures custom server before game init - Maintains backward compatibility - Modified AndroidManifest.xml - ServerSelectionActivity is now LAUNCHER - UnpackAssetsActivity no longer exports MAIN intent - Intent extras preserved through activity chain - Added XML layouts - activity_server_selection.xml (main menu UI) - dialog_server_input.xml (URL input dialog) - Server URL format: https://domain.com:port - SharedPreferences: rr3_server_config.xml Ready for Phase 2: Community server backend implementation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
122 lines
3.9 KiB
Smali
122 lines
3.9 KiB
Smali
.class public Lcom/firemint/realracing/ServerManager;
|
|
.super Ljava/lang/Object;
|
|
.source "ServerManager.java"
|
|
|
|
|
|
# direct methods
|
|
.method public constructor <init>()V
|
|
.locals 0
|
|
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()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;-><init>()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;-><init>()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;-><init>()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
|