4 Commits

Author SHA1 Message Date
9632b7770b Bump version to 15.0.0-community-alpha
This major version bump reflects significant community modifications:
- In-game settings menu with web panel sync
- Custom server URL configuration
- Offline/Online play modes
- Device settings management API

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-19 10:59:36 -08:00
7438e7efeb Add in-game settings menu with web panel sync
Features:
- SettingsActivity accessible via Menu button (keycode 82)
- Configure server URL and mode (online/offline) in-game
- Test connection before saving settings
- Switch to offline mode with one tap
- Sync settings from web admin panel
- Real-time status messages with emoji indicators

Implementation:
- Created 13 SettingsActivity Smali files (main + inner classes)
- Created activity_settings.xml UI layout
- Added SettingsActivity to AndroidManifest.xml (portrait mode)
- Modified MainActivity.smali to handle Menu button press
- Integrated with existing ServerManager for Nimble SDK overrides
- Settings stored in SharedPreferences (rr3_server_config.xml)

APK:
- Built and signed: RR3-v14-Settings-Menu.apk (103 MB)
- Keystore: rr3-release.keystore (alias: rr3key)
- Ready for distribution

Related server changes:
- ServerSettingsController.cs with 3 API endpoints
- DeviceSettings.cshtml admin page
- UserSettings database model and migration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-19 10:19:39 -08:00
b22e8c5308 Delete README-community.md 2026-02-19 18:10:27 +00:00
e8a5cbcd7e Add community server selection system
- 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>
2026-02-19 00:50:20 -08:00
35 changed files with 2301 additions and 75 deletions

View File

@@ -78,11 +78,15 @@
<permission android:name="com.ea.games.r3_row.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" android:protectionLevel="signature"/>
<uses-permission android:name="com.ea.games.r3_row.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"/>
<application android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:banner="@string/icon_name_tv_row" android:dataExtractionRules="@xml/backup_android12" android:extractNativeLibs="false" android:fullBackupContent="@xml/backup_legacy" android:hardwareAccelerated="true" android:icon="@string/icon_name_row" android:isGame="true" android:label="@string/app_name" android:largeHeap="true" android:localeConfig="@xml/locale_config" android:name="androidx.multidex.MultiDexApplication" android:networkSecurityConfig="@xml/network_security_config" android:resizeableActivity="false" android:roundIcon="@string/icon_name_round_row" android:screenOrientation="sensorLandscape" android:supportsRtl="true" android:theme="@style/splashScreenTheme" android:usesCleartextTraffic="false" android:windowSoftInputMode="adjustNothing">
<activity android:alwaysRetainTaskState="true" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|uiMode" android:exported="true" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.firemint.realracing.UnpackAssetsActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme">
<!-- ServerSelectionActivity: Community Edition server/mode selector (NEW LAUNCHER) -->
<activity android:exported="true" android:name="com.firemint.realracing.ServerSelectionActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- UnpackAssetsActivity: No longer the launcher, now called by MainActivity -->
<activity android:alwaysRetainTaskState="true" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|uiMode" android:exported="false" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.firemint.realracing.UnpackAssetsActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme">
<intent-filter>
<action android:name="com.google.android.apps.plus.VIEW_DEEP_LINK"/>
<data android:scheme="vnd.google.deeplink"/>
@@ -93,6 +97,7 @@
</intent-filter>
</activity>
<activity android:alwaysRetainTaskState="true" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|uiMode" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.firemint.realracing.MainActivity" android:screenOrientation="sensorLandscape" android:theme="@style/splashScreenTheme"/>
<activity android:name="com.firemint.realracing.SettingsActivity" android:label="RR3 Settings" android:theme="@android:style/Theme.Black.NoTitleBar" android:screenOrientation="portrait"/>
<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config"/>
<provider android:authorities="com.ea.games.r3_row.fileprovider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/>

View File

@@ -1,65 +0,0 @@
# Real Racing 3 - Discord Community Version
This branch contains the modified APK being worked on by the Discord community.
## Version Info
- **Filename**: RR3_WORKIING_NO32BITCUZKYS signed.apk
- **Size**: 71.57 MB
- **Source**: Discord community development
## Key Changes from Original
### ❌ Removed Features
- **32-bit support (armeabi-v7a)** - This version is 64-bit only
- Original had both armeabi-v7a (22.56 MB) and arm64-v8a (31.57 MB)
- This version only includes arm64-v8a (31.57 MB)
- **Impact**: Will NOT work on older/budget Android devices
### ✅ Architecture Support
- **arm64-v8a only** (64-bit ARM)
- Requires Android device with 64-bit processor
- Minimum SDK: 26 (Android 8.0)
- Target SDK: 36 (Android 16)
### 📁 Contents
- `realracing3-community.apk` - Modified APK file
- `decompiled-community/` - Decompiled source code
- `resources/` - Assets, manifest, native libraries
- `sources/` - Java source code
## Native Libraries (arm64-v8a)
- libRealRacing3.so - 31.57 MB (main game engine)
- libfuelmetrics.so - 4.04 MB (analytics/metrics)
- libfmodex.so - 1.22 MB (audio engine)
- libc++_shared.so - 0.97 MB (C++ runtime)
- libapplovin-native-crash-reporter.so - 0.83 MB
- libcrashlytics-common.so - 0.72 MB
- And more...
## Comparison with Original
| Feature | Original (main branch) | Community Version |
|---------|----------------------|-------------------|
| 32-bit support | ✅ Yes | ❌ No |
| 64-bit support | ✅ Yes | ✅ Yes |
| APK Size | 100.32 MB | 71.57 MB |
| Device compatibility | Wider | Modern devices only |
## Why Remove 32-bit?
Removing 32-bit support:
- ✅ Reduces APK size by ~30 MB
- ✅ Simplifies development/testing
- ✅ Modern devices (2018+) are all 64-bit
- ❌ Breaks compatibility with older/budget phones
## Development
This is a work-in-progress community modification. Check Discord for:
- Latest changes
- Testing requests
- Feature discussions
---
**Note**: This branch is for community development. For the original APK, see the `main` branch.

View File

@@ -12,8 +12,8 @@ packageInfo:
forcedPackageId: 127
renameManifestPackage: null
versionInfo:
versionCode: 14001
versionName: 14.0.1
versionCode: 150000
versionName: 15.0.0-community-alpha
resourcesAreCompressed: false
sharedLibrary: false
sparseResources: false

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="24dp"
android:background="#000000">
<!-- Logo/Title Section -->
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="🏎️ REAL RACING 3 🏎️"
android:textSize="32sp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:layout_marginBottom="8dp"/>
<TextView
android:id="@+id/tv_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Community Edition"
android:textSize="18sp"
android:textColor="#AAAAAA"
android:layout_marginBottom="48dp"/>
<!-- Offline Mode Button -->
<LinearLayout
android:id="@+id/btn_offline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#1E1E1E"
android:padding="20dp"
android:layout_marginBottom="16dp"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="🏠 OFFLINE MODE"
android:textSize="22sp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:layout_marginBottom="8dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play with unlimited currency\nand custom content"
android:textSize="14sp"
android:textColor="#AAAAAA"/>
</LinearLayout>
<!-- Online Mode Button -->
<LinearLayout
android:id="@+id/btn_online"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#1E1E1E"
android:padding="20dp"
android:layout_marginBottom="32dp"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="🌐 ONLINE MODE"
android:textSize="22sp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:layout_marginBottom="8dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connect to community server\nfor multiplayer and events"
android:textSize="14sp"
android:textColor="#AAAAAA"/>
</LinearLayout>
<!-- Help Link -->
<TextView
android:id="@+id/tv_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First time? Click here for help"
android:textSize="12sp"
android:textColor="#4A90E2"
android:clickable="true"
android:focusable="true"/>
</LinearLayout>

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="24dp"
android:background="#000000">
<!-- Header -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="⚙️ Server Settings"
android:textSize="28sp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="center"
android:layout_marginBottom="32dp"/>
<!-- Current Mode Display -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#1E1E1E"
android:padding="16dp"
android:layout_marginBottom="24dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Current Mode:"
android:textSize="16sp"
android:textColor="#AAAAAA"/>
<TextView
android:id="@+id/tv_current_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Online"
android:textSize="16sp"
android:textColor="#4CAF50"
android:textStyle="bold"/>
</LinearLayout>
<!-- Server URL Section -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Server URL:"
android:textSize="16sp"
android:textColor="#FFFFFF"
android:layout_marginBottom="8dp"/>
<EditText
android:id="@+id/et_server_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="https://rr3.barrer.net:8443"
android:text=""
android:textColor="#FFFFFF"
android:textColorHint="#666666"
android:inputType="textUri"
android:padding="16dp"
android:background="#1E1E1E"
android:layout_marginBottom="16dp"/>
<!-- Action Buttons -->
<Button
android:id="@+id/btn_test_connection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🔍 Test Connection"
android:textSize="16sp"
android:padding="16dp"
android:layout_marginBottom="12dp"
android:backgroundTint="#2196F3"/>
<Button
android:id="@+id/btn_save_settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="💾 Save Settings"
android:textSize="16sp"
android:padding="16dp"
android:layout_marginBottom="12dp"
android:backgroundTint="#4CAF50"/>
<Button
android:id="@+id/btn_switch_to_offline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🏠 Switch to Offline Mode"
android:textSize="16sp"
android:padding="16dp"
android:layout_marginBottom="12dp"
android:backgroundTint="#FF9800"/>
<Button
android:id="@+id/btn_sync_from_web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🔄 Sync from Web Panel"
android:textSize="16sp"
android:padding="16dp"
android:layout_marginBottom="24dp"
android:backgroundTint="#9C27B0"/>
<!-- Status Message -->
<TextView
android:id="@+id/tv_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="14sp"
android:textColor="#4CAF50"
android:gravity="center"
android:padding="12dp"
android:background="#1E1E1E"
android:visibility="gone"/>
<!-- Info Section -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text=" Server URL Format:\n• HTTPS: https://domain.com:8443\n• HTTP: http://domain.com:8080\n• IP: http://192.168.1.100:8080"
android:textSize="12sp"
android:textColor="#666666"
android:lineSpacingMultiplier="1.4"/>
</LinearLayout>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<!-- Title -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🌐 Enter Server Address"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginBottom="16dp"/>
<!-- Server URL Input -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Server URL:"
android:textSize="14sp"
android:layout_marginBottom="8dp"/>
<EditText
android:id="@+id/et_server_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="https://rr3.barrer.net:8443"
android:inputType="textUri"
android:padding="12dp"
android:background="#F0F0F0"
android:layout_marginBottom="16dp"/>
<!-- Quick Select Options -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Quick Select:"
android:textSize="14sp"
android:layout_marginBottom="8dp"/>
<RadioGroup
android:id="@+id/rg_server_preset"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp">
<RadioButton
android:id="@+id/rb_official"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Official Community (rr3.barrer.net)"
android:checked="true"/>
<RadioButton
android:id="@+id/rb_local"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Local Server (localhost:3000)"/>
<RadioButton
android:id="@+id/rb_custom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Custom Server"/>
</RadioGroup>
<!-- Remember Choice Checkbox -->
<CheckBox
android:id="@+id/cb_remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remember my choice"
android:checked="true"
android:layout_marginBottom="16dp"/>
<!-- Info Text -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Note: Custom ports are supported (e.g., :8443)\nMake sure your server is running before connecting."
android:textSize="12sp"
android:textColor="#666666"/>
</LinearLayout>

View File

@@ -1,6 +1 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">127.0.0.1</domain>
</domain-config>
</network-security-config>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><network-security-config><base-config><trust-anchors><certificates src="system"/><certificates src="user"/></trust-anchors></base-config></network-security-config>

View File

@@ -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;
@@ -2765,9 +2808,34 @@
.end method
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
.locals 1
.locals 3
.line 1518
# Check if Menu button (keycode 82) pressed
const/16 v0, 0x52
if-ne p1, v0, :cond_settings_check_done
# Open SettingsActivity
const-string v0, "RR3-Community"
const-string v1, "\u2699\ufe0f Menu button pressed - Opening Settings"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
new-instance v0, Landroid/content/Intent;
const-class v1, Lcom/firemint/realracing/SettingsActivity;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
invoke-virtual {p0, v0}, Lcom/firemint/realracing/MainActivity;->startActivity(Landroid/content/Intent;)V
const/4 p1, 0x1
return p1
:cond_settings_check_done
invoke-virtual {p0, p1, p2}, Lcom/firemint/realracing/MainActivity;->handleKeyEvent(ILandroid/view/KeyEvent;)Z
move-result v0

View File

@@ -0,0 +1,121 @@
.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

View File

@@ -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 <init>(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;-><init>()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

View File

@@ -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 <init>(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;-><init>()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

View File

@@ -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 <init>(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;-><init>()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

View File

@@ -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 <init>(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;-><init>()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

View File

@@ -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 <init>(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;-><init>()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;-><init>(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

View File

@@ -0,0 +1,233 @@
.class public Lcom/firemint/realracing/ServerSelectionActivity;
.super Landroid/app/Activity;
.source "ServerSelectionActivity.java"
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Landroid/app/Activity;-><init>()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;-><init>(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;-><init>(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;-><init>(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;-><init>(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;-><init>(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;-><init>(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;-><init>(Lcom/firemint/realracing/ServerSelectionActivity;)V
invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
return-void
.end method

View File

@@ -0,0 +1,51 @@
.class Lcom/firemint/realracing/SettingsActivity$1$1;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$1;->run()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$1:Lcom/firemint/realracing/SettingsActivity$1;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$1;)V
.locals 0
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$1$1;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.locals 3
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1$1;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\u2705 Connection successful!"
const v2, -0xff6534
invoke-static {v0, v1, v2}, Lcom/firemint/realracing/SettingsActivity;->access$000(Lcom/firemint/realracing/SettingsActivity;Ljava/lang/String;I)V
return-void
.end method

View File

@@ -0,0 +1,49 @@
.class Lcom/firemint/realracing/SettingsActivity$1$2;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$1;->run()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$1:Lcom/firemint/realracing/SettingsActivity$1;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$1;)V
.registers 2
.param p1, "this$1" # Lcom/firemint/realracing/SettingsActivity$1;
.line 70
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$1$2;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.registers 3
.line 73
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1$2;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\u274c Connection failed. Please check the URL."
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 74
return-void
.end method

View File

@@ -0,0 +1,68 @@
.class Lcom/firemint/realracing/SettingsActivity$1$3;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$1;->run()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$1:Lcom/firemint/realracing/SettingsActivity$1;
.field final synthetic val$error:Ljava/lang/String;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$1;Ljava/lang/String;)V
.registers 3
.param p1, "this$1" # Lcom/firemint/realracing/SettingsActivity$1;
.param p2, "error" # Ljava/lang/String;
.line 76
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$1$3;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
iput-object p2, p0, Lcom/firemint/realracing/SettingsActivity$1$3;->val$error:Ljava/lang/String;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.registers 4
.line 79
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1$3;->this$1:Lcom/firemint/realracing/SettingsActivity$1;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "\u274c Error: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$1$3;->val$error:Ljava/lang/String;
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-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 80
return-void
.end method

View File

@@ -0,0 +1,123 @@
.class Lcom/firemint/realracing/SettingsActivity$1;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity;->testConnection(Ljava/lang/String;)V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$0:Lcom/firemint/realracing/SettingsActivity;
.field final synthetic val$serverUrl:Ljava/lang/String;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;Ljava/lang/String;)V
.locals 0
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
iput-object p2, p0, Lcom/firemint/realracing/SettingsActivity$1;->val$serverUrl:Ljava/lang/String;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.locals 5
:try_start_0
new-instance v0, Ljava/net/URL;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$1;->val$serverUrl:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "/director/api/android/getDirectionByPackage?packageName=test"
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-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v0
check-cast v0, Ljava/net/HttpURLConnection;
const/16 v1, 0x1388
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setConnectTimeout(I)V
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setReadTimeout(I)V
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getResponseCode()I
move-result v1
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->disconnect()V
const/16 v0, 0xc8
if-ne v1, v0, :cond_0
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v1, Lcom/firemint/realracing/SettingsActivity$1$1;
invoke-direct {v1, p0}, Lcom/firemint/realracing/SettingsActivity$1$1;-><init>(Lcom/firemint/realracing/SettingsActivity$1;)V
invoke-virtual {v0, v1}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
goto :goto_0
:cond_0
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v2, Lcom/firemint/realracing/SettingsActivity$1$2;
invoke-direct {v2, p0, v1}, Lcom/firemint/realracing/SettingsActivity$1$2;-><init>(Lcom/firemint/realracing/SettingsActivity$1;I)V
invoke-virtual {v0, v2}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v0
iget-object v1, p0, Lcom/firemint/realracing/SettingsActivity$1;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v2, Lcom/firemint/realracing/SettingsActivity$1$3;
invoke-direct {v2, p0, v0}, Lcom/firemint/realracing/SettingsActivity$1$3;-><init>(Lcom/firemint/realracing/SettingsActivity$1;Ljava/lang/Exception;)V
invoke-virtual {v1, v2}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V
:goto_0
return-void
.end method

View File

@@ -0,0 +1,72 @@
.class Lcom/firemint/realracing/SettingsActivity$2;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity;->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/SettingsActivity;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;)V
.registers 2
.param p1, "this$0" # Lcom/firemint/realracing/SettingsActivity;
.line 145
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$2;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.registers 4
.param p1, "v" # Landroid/view/View;
.line 148
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$2;->this$0:Lcom/firemint/realracing/SettingsActivity;
const v1, 0x7f0a047b
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/EditText;
.line 149
.local v0, "etServerUrl":Landroid/widget/EditText;
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v1
.line 151
.local v1, "url":Ljava/lang/String;
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$2;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->testConnection(Ljava/lang/String;)V
.line 152
return-void
.end method

View File

@@ -0,0 +1,116 @@
.class Lcom/firemint/realracing/SettingsActivity$3;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity;->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/SettingsActivity;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;)V
.registers 2
.param p1, "this$0" # Lcom/firemint/realracing/SettingsActivity;
.line 157
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.registers 7
.param p1, "v" # Landroid/view/View;
.line 160
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
const v1, 0x7f0a047b
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/EditText;
.line 161
.local v0, "etServerUrl":Landroid/widget/EditText;
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v1
.line 163
.local v1, "newUrl":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->isEmpty()Z
move-result v2
if-eqz v2, :cond_2b
.line 164
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v3, "\u26a0\ufe0f Please enter a server URL"
invoke-virtual {v2, v3}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 165
return-void
.line 168
:cond_2b
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v3, "online"
invoke-virtual {v2, v3, v1}, Lcom/firemint/realracing/SettingsActivity;->saveSettings(Ljava/lang/String;Ljava/lang/String;)V
.line 169
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v3, "\u2705 Settings saved! Restart the game to apply."
invoke-virtual {v2, v3}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 171
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity$3;->this$0:Lcom/firemint/realracing/SettingsActivity;
const v3, 0x7f0a0b87
invoke-virtual {v2, v3}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object v2
check-cast v2, Landroid/widget/TextView;
.line 172
.local v2, "tvMode":Landroid/widget/TextView;
const-string v3, "\ud83c\udf0d Online Mode"
invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 173
return-void
.end method

View File

@@ -0,0 +1,74 @@
.class Lcom/firemint/realracing/SettingsActivity$4;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity;->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/SettingsActivity;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;)V
.registers 2
.param p1, "this$0" # Lcom/firemint/realracing/SettingsActivity;
.line 178
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$4;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.registers 5
.param p1, "v" # Landroid/view/View;
.line 181
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$4;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "offline"
const-string v2, ""
invoke-virtual {v0, v1, v2}, Lcom/firemint/realracing/SettingsActivity;->saveSettings(Ljava/lang/String;Ljava/lang/String;)V
.line 182
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$4;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\u2705 Switched to Offline Mode! Restart the game to apply."
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 184
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$4;->this$0:Lcom/firemint/realracing/SettingsActivity;
const v1, 0x7f0a0b87
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/TextView;
.line 185
.local v0, "tvMode":Landroid/widget/TextView;
const-string v1, "\ud83d\udcf1 Offline Mode"
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 186
return-void
.end method

View File

@@ -0,0 +1,51 @@
.class Lcom/firemint/realracing/SettingsActivity$5$1$1;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$5$1;->run()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
.registers 2
.param p1, "this$2" # Lcom/firemint/realracing/SettingsActivity$5$1;
.line 222
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$5$1$1;->this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.registers 3
.line 225
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$5$1$1;->this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\u2705 Synced successfully! Restart the game to apply."
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 226
return-void
.end method

View File

@@ -0,0 +1,51 @@
.class Lcom/firemint/realracing/SettingsActivity$5$1$2;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$5$1;->run()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
.registers 2
.param p1, "this$2" # Lcom/firemint/realracing/SettingsActivity$5$1;
.line 230
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$5$1$2;->this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.registers 3
.line 233
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$5$1$2;->this$2:Lcom/firemint/realracing/SettingsActivity$5$1;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\u274c Sync failed. Server did not respond."
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 234
return-void
.end method

View File

@@ -0,0 +1,224 @@
.class Lcom/firemint/realracing/SettingsActivity$5$1;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity$5;->onClick(Landroid/view/View;)V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$1:Lcom/firemint/realracing/SettingsActivity$5;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity$5;)V
.registers 2
.param p1, "this$1" # Lcom/firemint/realracing/SettingsActivity$5;
.line 196
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.registers 11
.line 199
:try_start_0
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
iget-object v0, v0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-virtual {v0}, Lcom/firemint/realracing/SettingsActivity;->getCurrentServerUrl()Ljava/lang/String;
move-result-object v0
.line 200
.local v0, "baseUrl":Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "/api/settings/getUserSettings"
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
.line 201
.local v1, "syncUrl":Ljava/lang/String;
new-instance v2, Ljava/net/URL;
invoke-direct {v2, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
.line 202
.local v2, "url":Ljava/net/URL;
invoke-virtual {v2}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v3
check-cast v3, Ljava/net/HttpURLConnection;
.line 203
.local v3, "conn":Ljava/net/HttpURLConnection;
const/16 v4, 0x1388
invoke-virtual {v3, v4}, Ljava/net/HttpURLConnection;->setConnectTimeout(I)V
.line 204
const-string v4, "GET"
invoke-virtual {v3, v4}, Ljava/net/HttpURLConnection;->setRequestMethod(Ljava/lang/String;)V
.line 206
invoke-virtual {v3}, Ljava/net/HttpURLConnection;->getResponseCode()I
move-result v4
.line 207
.local v4, "responseCode":I
const/16 v5, 0xc8
if-ne v4, v5, :cond_a1
.line 208
new-instance v5, Ljava/io/BufferedReader;
new-instance v6, Ljava/io/InputStreamReader;
invoke-virtual {v3}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream;
move-result-object v7
invoke-direct {v6, v7}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
invoke-direct {v5, v6}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
.line 209
.local v5, "reader":Ljava/io/BufferedReader;
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
.line 211
.local v6, "response":Ljava/lang/StringBuilder;
:goto_55
invoke-virtual {v5}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v7
move-object v8, v7
.local v8, "line":Ljava/lang/String;
if-eqz v7, :cond_62
.line 212
invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_55
.line 214
:cond_62
invoke-virtual {v5}, Ljava/io/BufferedReader;->close()V
.line 217
new-instance v7, Lorg/json/JSONObject;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-direct {v7, v9}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
.line 218
.local v7, "json":Lorg/json/JSONObject;
const-string v9, "mode"
invoke-virtual {v7, v9}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v9
.line 219
.local v9, "mode":Ljava/lang/String;
const-string v0, "serverUrl"
invoke-virtual {v7, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 221
.local v0, "serverUrl":Ljava/lang/String;
iget-object v7, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
.end local v7 # "json":Lorg/json/JSONObject;
iget-object v7, v7, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-virtual {v7, v9, v0}, Lcom/firemint/realracing/SettingsActivity;->saveSettings(Ljava/lang/String;Ljava/lang/String;)V
.line 222
iget-object v7, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
iget-object v7, v7, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v0, Lcom/firemint/realracing/SettingsActivity$5$1$1;
.end local v0 # "serverUrl":Ljava/lang/String;
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$5$1$1;-><init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
invoke-virtual {v7, v0}, Lcom/firemint/realracing/SettingsActivity;->runOnUiThread(Ljava/lang/Runnable;)V
.line 223
.end local v5 # "reader":Ljava/io/BufferedReader;
.end local v6 # "response":Ljava/lang/StringBuilder;
.end local v8 # "line":Ljava/lang/String;
.end local v9 # "mode":Ljava/lang/String;
goto :goto_b7
.line 224
:cond_a1
iget-object v5, p0, Lcom/firemint/realracing/SettingsActivity$5$1;->this$1:Lcom/firemint/realracing/SettingsActivity$5;
iget-object v5, v5, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
new-instance v6, Lcom/firemint/realracing/SettingsActivity$5$1$2;
invoke-direct {v6, p0}, Lcom/firemint/realracing/SettingsActivity$5$1$2;-><init>(Lcom/firemint/realracing/SettingsActivity$5$1;)V
invoke-virtual {v5, v6}, Lcom/firemint/realracing/SettingsActivity;->runOnUiThread(Ljava/lang/Runnable;)V
.line 225
.end local v1 # "syncUrl":Ljava/lang/String;
.end local v2 # "url":Ljava/net/URL;
.end local v3 # "conn":Ljava/net/HttpURLConnection;
.end local v4 # "responseCode":I
goto :goto_b7
.line 226
:catch_b3
move-exception v0
.line 227
.local v0, "e":Ljava/lang/Exception;
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
.line 229
.end local v0 # "e":Ljava/lang/Exception;
:goto_b7
return-void
.end method

View File

@@ -0,0 +1,59 @@
.class Lcom/firemint/realracing/SettingsActivity$5;
.super Ljava/lang/Object;
.source "SettingsActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemint/realracing/SettingsActivity;->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/SettingsActivity;
# direct methods
.method constructor <init>(Lcom/firemint/realracing/SettingsActivity;)V
.registers 2
.param p1, "this$0" # Lcom/firemint/realracing/SettingsActivity;
.line 191
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.registers 4
.param p1, "v" # Landroid/view/View;
.line 194
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity$5;->this$0:Lcom/firemint/realracing/SettingsActivity;
const-string v1, "\ud83d\udd04 Syncing from web panel..."
invoke-virtual {v0, v1}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;)V
.line 196
new-instance v0, Ljava/lang/Thread;
new-instance v1, Lcom/firemint/realracing/SettingsActivity$5$1;
invoke-direct {v1, p0}, Lcom/firemint/realracing/SettingsActivity$5$1;-><init>(Lcom/firemint/realracing/SettingsActivity$5;)V
invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
.line 230
return-void
.end method

View File

@@ -0,0 +1,259 @@
.class public Lcom/firemint/realracing/SettingsActivity;
.super Landroid/app/Activity;
.source "SettingsActivity.java"
# instance fields
.field private etServerUrl:Landroid/widget/EditText;
.field private tvCurrentMode:Landroid/widget/TextView;
.field private tvStatus:Landroid/widget/TextView;
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Landroid/app/Activity;-><init>()V
return-void
.end method
.method private getCurrentMode()Ljava/lang/String;
.locals 4
const-string v0, "rr3_server_config"
const/4 v1, 0x0
invoke-virtual {p0, v0, v1}, Lcom/firemint/realracing/SettingsActivity;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
move-result-object v0
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 v0
return-object v0
.end method
.method private getCurrentServerUrl()Ljava/lang/String;
.locals 4
const-string v0, "rr3_server_config"
const/4 v1, 0x0
invoke-virtual {p0, v0, v1}, Lcom/firemint/realracing/SettingsActivity;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
move-result-object v0
const-string v1, "serverUrl"
const-string v2, ""
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private saveSettings(Ljava/lang/String;Ljava/lang/String;)V
.locals 3
const-string v0, "rr3_server_config"
const/4 v1, 0x0
invoke-virtual {p0, v0, v1}, Lcom/firemint/realracing/SettingsActivity;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
move-result-object v0
invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
move-result-object v0
const-string v1, "mode"
invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
const-string v1, "serverUrl"
invoke-interface {v0, v1, p2}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
const-string v1, "skip_selection"
const/4 v2, 0x1
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V
return-void
.end method
.method private showStatus(Ljava/lang/String;I)V
.locals 2
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity;->tvStatus:Landroid/widget/TextView;
invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
iget-object p1, p0, Lcom/firemint/realracing/SettingsActivity;->tvStatus:Landroid/widget/TextView;
invoke-virtual {p1, p2}, Landroid/widget/TextView;->setTextColor(I)V
iget-object p1, p0, Lcom/firemint/realracing/SettingsActivity;->tvStatus:Landroid/widget/TextView;
const/4 p2, 0x0
invoke-virtual {p1, p2}, Landroid/widget/TextView;->setVisibility(I)V
return-void
.end method
.method private testConnection(Ljava/lang/String;)V
.locals 2
new-instance v0, Ljava/lang/Thread;
new-instance v1, Lcom/firemint/realracing/SettingsActivity$1;
invoke-direct {v1, p0, p1}, Lcom/firemint/realracing/SettingsActivity$1;-><init>(Lcom/firemint/realracing/SettingsActivity;Ljava/lang/String;)V
invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
return-void
.end method
.method private updateUI()V
.locals 3
invoke-direct {p0}, Lcom/firemint/realracing/SettingsActivity;->getCurrentMode()Ljava/lang/String;
move-result-object v0
invoke-direct {p0}, Lcom/firemint/realracing/SettingsActivity;->getCurrentServerUrl()Ljava/lang/String;
move-result-object v1
iget-object v2, p0, Lcom/firemint/realracing/SettingsActivity;->tvCurrentMode:Landroid/widget/TextView;
invoke-virtual {v2, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
iget-object v0, p0, Lcom/firemint/realracing/SettingsActivity;->etServerUrl:Landroid/widget/EditText;
invoke-virtual {v0, v1}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V
return-void
.end method
.method static synthetic access$000(Lcom/firemint/realracing/SettingsActivity;Ljava/lang/String;I)V
.locals 0
invoke-direct {p0, p1, p2}, Lcom/firemint/realracing/SettingsActivity;->showStatus(Ljava/lang/String;I)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
const p1, 0x7f0d001e
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->setContentView(I)V
const p1, 0x7f0a047b
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
check-cast p1, Landroid/widget/EditText;
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity;->etServerUrl:Landroid/widget/EditText;
const p1, 0x7f0a0b87
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity;->tvCurrentMode:Landroid/widget/TextView;
const p1, 0x7f0a0b88
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/firemint/realracing/SettingsActivity;->tvStatus:Landroid/widget/TextView;
invoke-direct {p0}, Lcom/firemint/realracing/SettingsActivity;->updateUI()V
const p1, 0x7f0a013d
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
new-instance v0, Lcom/firemint/realracing/SettingsActivity$2;
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$2;-><init>(Lcom/firemint/realracing/SettingsActivity;)V
invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
const p1, 0x7f0a013e
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
new-instance v0, Lcom/firemint/realracing/SettingsActivity$3;
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$3;-><init>(Lcom/firemint/realracing/SettingsActivity;)V
invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
const p1, 0x7f0a013f
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
new-instance v0, Lcom/firemint/realracing/SettingsActivity$4;
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$4;-><init>(Lcom/firemint/realracing/SettingsActivity;)V
invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
const p1, 0x7f0a0140
invoke-virtual {p0, p1}, Lcom/firemint/realracing/SettingsActivity;->findViewById(I)Landroid/view/View;
move-result-object p1
new-instance v0, Lcom/firemint/realracing/SettingsActivity$5;
invoke-direct {v0, p0}, Lcom/firemint/realracing/SettingsActivity$5;-><init>(Lcom/firemint/realracing/SettingsActivity;)V
invoke-virtual {p1, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
return-void
.end method