diff --git a/build/apk/classes2.dex b/build/apk/classes2.dex index e9bd80efa..acb361036 100644 Binary files a/build/apk/classes2.dex and b/build/apk/classes2.dex differ diff --git a/smali_classes2/com/firemint/realracing/MainActivity.smali b/smali_classes2/com/firemint/realracing/MainActivity.smali index aa42d24f6..2d29cc0c7 100644 --- a/smali_classes2/com/firemint/realracing/MainActivity.smali +++ b/smali_classes2/com/firemint/realracing/MainActivity.smali @@ -2243,6 +2243,9 @@ # Initialize OfflineModeManager invoke-static {p0}, Lcom/firemint/realracing/OfflineModeManager;->init(Landroid/content/Context;)V + # Initialize OfflineCurrencyManager (sets unlimited currency for offline) + invoke-static {p0}, Lcom/firemint/realracing/OfflineCurrencyManager;->init(Landroid/content/Context;)V + .line 353 invoke-virtual {p0}, Landroid/app/Activity;->getApplication()Landroid/app/Application; diff --git a/smali_classes2/com/firemint/realracing/OfflineCurrencyManager.smali b/smali_classes2/com/firemint/realracing/OfflineCurrencyManager.smali new file mode 100644 index 000000000..599e09a15 --- /dev/null +++ b/smali_classes2/com/firemint/realracing/OfflineCurrencyManager.smali @@ -0,0 +1,382 @@ +.class public Lcom/firemint/realracing/OfflineCurrencyManager; +.super Ljava/lang/Object; +.source "OfflineCurrencyManager.java" + + +# static fields +.field private static final TAG:Ljava/lang/String; = "RR3_OfflineCurrency" + +.field private static final UNLIMITED_AMOUNT:I = 0x5f5e100 # 100,000,000 + +.field private static unlimitedCurrencyEnabled:Z = true + + +# direct methods +.method static constructor ()V + .locals 1 + + # Enable unlimited currency by default in offline mode + const/4 v0, 0x1 + + sput-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + return-void +.end method + +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + +.method public static init(Landroid/content/Context;)V + .locals 2 + + const-string v0, "RR3_OfflineCurrency" + + const-string v1, "Initializing OfflineCurrencyManager" + + invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I + + # Set high initial currency amounts in save file + invoke-static {p0}, Lcom/firemint/realracing/OfflineCurrencyManager;->ensureMinimumCurrency(Landroid/content/Context;)V + + return-void +.end method + +.method public static isUnlimitedEnabled()Z + .locals 1 + + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + return v0 +.end method + +.method public static setUnlimited(Z)V + .locals 0 + + sput-boolean p0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + return-void +.end method + +.method public static ensureMinimumCurrency(Landroid/content/Context;)V + .locals 4 + + const-string v0, "RR3_OfflineCurrency" + + # Check if unlimited is enabled + sget-boolean v1, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-nez v1, :cond_0 + + return-void + + :cond_0 + # Set high amounts for offline play + const v1, 0x5f5e100 # 100,000,000 + + :try_start_0 + # Set M$ (cash) + const-string v2, "cash" + + invoke-static {p0, v2, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + # Set Gold + const v1, 0x989680 # 10,000,000 + + const-string v2, "gold" + + invoke-static {p0, v2, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + # Set R$ (R-Dollars - 0 for now) + const/4 v1, 0x0 + + const-string v2, "rDollars" + + invoke-static {p0, v2, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + const-string p0, "Currency set: 100M M$, 10M Gold" + + 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 + + const-string v1, "Error setting currency" + + invoke-static {v0, v1, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + + :goto_0 + return-void +.end method + +.method public static getCashForOffline(Landroid/content/Context;)I + .locals 2 + + # Check if offline mode is enabled + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-eqz v0, :cond_online + + # Offline mode - check if unlimited + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_limited + + # Return unlimited amount + const v0, 0x5f5e100 # 100,000,000 + + return v0 + + :cond_limited + # Return from save file + const-string v0, "cash" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v0 + + return v0 + + :cond_online + # Online mode - return from save (or game will handle) + const-string v0, "cash" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v0 + + return v0 +.end method + +.method public static getGoldForOffline(Landroid/content/Context;)I + .locals 2 + + # Check if offline mode is enabled + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-eqz v0, :cond_online + + # Offline mode - check if unlimited + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_limited + + # Return unlimited amount + const v0, 0x989680 # 10,000,000 + + return v0 + + :cond_limited + # Return from save file + const-string v0, "gold" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v0 + + return v0 + + :cond_online + # Online mode - return from save (or game will handle) + const-string v0, "gold" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v0 + + return v0 +.end method + +.method public static addCash(Landroid/content/Context;I)V + .locals 3 + + # Only track in offline mode + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-nez v0, :cond_0 + + return-void + + :cond_0 + # If unlimited, don't bother tracking + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_1 + + return-void + + :cond_1 + # Get current amount + const-string v0, "cash" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v1 + + # Add new amount + add-int/2addr v1, p1 + + # Save + invoke-static {p0, v0, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + return-void +.end method + +.method public static addGold(Landroid/content/Context;I)V + .locals 3 + + # Only track in offline mode + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-nez v0, :cond_0 + + return-void + + :cond_0 + # If unlimited, don't bother tracking + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_1 + + return-void + + :cond_1 + # Get current amount + const-string v0, "gold" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v1 + + # Add new amount + add-int/2addr v1, p1 + + # Save + invoke-static {p0, v0, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + return-void +.end method + +.method public static spendCash(Landroid/content/Context;I)Z + .locals 3 + + # Only track in offline mode + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-nez v0, :cond_0 + + # Online mode - let game handle + const/4 p0, 0x1 + + return p0 + + :cond_0 + # If unlimited, always succeed + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_1 + + const/4 p0, 0x1 + + return p0 + + :cond_1 + # Get current amount + const-string v0, "cash" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v1 + + # Check if enough + if-lt v1, p1, :cond_insufficient + + # Subtract + sub-int/2addr v1, p1 + + # Save + invoke-static {p0, v0, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + # Success + const/4 p0, 0x1 + + return p0 + + :cond_insufficient + # Not enough currency + const/4 p0, 0x0 + + return p0 +.end method + +.method public static spendGold(Landroid/content/Context;I)Z + .locals 3 + + # Only track in offline mode + invoke-static {}, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode()Z + + move-result v0 + + if-nez v0, :cond_0 + + # Online mode - let game handle + const/4 p0, 0x1 + + return p0 + + :cond_0 + # If unlimited, always succeed + sget-boolean v0, Lcom/firemint/realracing/OfflineCurrencyManager;->unlimitedCurrencyEnabled:Z + + if-eqz v0, :cond_1 + + const/4 p0, 0x1 + + return p0 + + :cond_1 + # Get current amount + const-string v0, "gold" + + invoke-static {p0, v0}, Lcom/firemint/realracing/LocalSaveManager;->getCurrency(Landroid/content/Context;Ljava/lang/String;)I + + move-result v1 + + # Check if enough + if-lt v1, p1, :cond_insufficient + + # Subtract + sub-int/2addr v1, p1 + + # Save + invoke-static {p0, v0, v1}, Lcom/firemint/realracing/LocalSaveManager;->setCurrency(Landroid/content/Context;Ljava/lang/String;I)V + + # Success + const/4 p0, 0x1 + + return p0 + + :cond_insufficient + # Not enough currency + const/4 p0, 0x0 + + return p0 +.end method