Phase 4: Add Special Events Offline Support (Discord Phase 2 Complete!)

- Created OfflineEventsManager.smali (all event types supported)
- Time Trials / Limited Time Series (LTS) available offline
- Daily Battles available offline
- Seasonal Championships available offline
- Special Events available offline
- Event validation bypassed in offline mode
- Automatic rewards based on finishing position
- Modified OfflineResponseMock to handle event API calls
- Builds successfully - DISCORD PHASE 2 COMPLETE!

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 18:05:23 -08:00
parent 3d380d3c6b
commit c5253880a0
4 changed files with 889 additions and 0 deletions

View File

@@ -99,11 +99,305 @@
:cond_3
# Default: mock generic success response
const-string v0, "event"
invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_4
invoke-static {p0, p1, p2}, Lcom/firemint/realracing/OfflineResponseMock;->mockEventResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
return-void
:cond_4
const-string v0, "lts"
invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_lts
const-string v0, "timetrial"
invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_5
:cond_lts
invoke-static {p0, p1, p2}, Lcom/firemint/realracing/OfflineResponseMock;->mockTimeTrialResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
return-void
:cond_5
const-string v0, "battle"
invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_6
invoke-static {p0, p1, p2}, Lcom/firemint/realracing/OfflineResponseMock;->mockDailyBattleResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
return-void
:cond_6
const-string v0, "championship"
invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_7
invoke-static {p0, p1, p2}, Lcom/firemint/realracing/OfflineResponseMock;->mockChampionshipResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
return-void
:cond_7
# Default: mock generic success response
invoke-static {p0, p1, p2}, Lcom/firemint/realracing/OfflineResponseMock;->mockGenericSuccess(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
return-void
.end method
.method private static mockEventResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
.locals 3
const-string p0, "RR3_OfflineResponseMock"
const-string v0, "Mocking generic event response"
invoke-static {p0, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_start_0
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
const-string v1, "available"
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
const-string v1, "canParticipate"
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
const-string v1, "validated"
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Lcom/firemint/realracing/OfflineResponseMock;->sendMockResponse(Lcom/ea/nimble/NetworkConnectionCallback;Ljava/lang/String;)V
:try_end_0
.catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception p1
const-string p2, "Error creating event mock"
invoke-static {p0, p2, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_0
return-void
.end method
.method private static mockTimeTrialResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
.locals 3
const-string p0, "RR3_OfflineResponseMock"
const-string v0, "Mocking time trial response"
invoke-static {p0, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_start_0
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
const-string v1, "available"
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
const-string v1, "track"
const-string v2, "brands_hatch"
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
const-string v1, "carClass"
const-string v2, "all"
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
const-string v1, "reward"
const/16 v2, 0x1388
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
const-string v1, "goldReward"
const/16 v2, 0x32
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Lcom/firemint/realracing/OfflineResponseMock;->sendMockResponse(Lcom/ea/nimble/NetworkConnectionCallback;Ljava/lang/String;)V
:try_end_0
.catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception p1
const-string p2, "Error creating time trial mock"
invoke-static {p0, p2, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_0
return-void
.end method
.method private static mockDailyBattleResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
.locals 3
const-string p0, "RR3_OfflineResponseMock"
const-string v0, "Mocking daily battle response"
invoke-static {p0, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_start_0
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
const-string v1, "available"
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
const-string v1, "opponents"
const/4 v2, 0x3
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
const-string v1, "reward"
const/16 v2, 0x7d0
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
const-string v1, "goldReward"
const/16 v2, 0x14
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Lcom/firemint/realracing/OfflineResponseMock;->sendMockResponse(Lcom/ea/nimble/NetworkConnectionCallback;Ljava/lang/String;)V
:try_end_0
.catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception p1
const-string p2, "Error creating daily battle mock"
invoke-static {p0, p2, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_0
return-void
.end method
.method private static mockChampionshipResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
.locals 3
const-string p0, "RR3_OfflineResponseMock"
const-string v0, "Mocking championship response"
invoke-static {p0, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_start_0
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
const-string v1, "available"
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
const-string v1, "season"
const-string v2, "all_seasons"
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
const-string v1, "reward"
const/16 v2, 0x2710
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
const-string v1, "goldReward"
const/16 v2, 0x64
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Lcom/firemint/realracing/OfflineResponseMock;->sendMockResponse(Lcom/ea/nimble/NetworkConnectionCallback;Ljava/lang/String;)V
:try_end_0
.catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception p1
const-string p2, "Error creating championship mock"
invoke-static {p0, p2, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_0
return-void
.end method
.method private static mockDailyRewardResponse(Lcom/ea/nimble/HttpRequest;Lcom/ea/nimble/NetworkConnectionCallback;Landroid/content/Context;)V
.locals 4