From 745a51b7ff9a0fcbccbb06a171263ffbc27df908 Mon Sep 17 00:00:00 2001 From: Nikolay Kharitonov Date: Sun, 6 Oct 2013 07:02:43 +0400 Subject: [PATCH] Added option to disable recycling of Power Cubes, issue #20 --- bin/main.py | 7 +++++++ res/analyzer.yaml | 15 +++++++++++++++ src/broot/ingress/mod/AboutModActivity.java | 8 ++++++++ src/broot/ingress/mod/Entry.java | 12 ++++++++++++ src/broot/ingress/mod/util/Config.java | 3 +++ 5 files changed, 45 insertions(+) diff --git a/bin/main.py b/bin/main.py index 6675146..4708db6 100755 --- a/bin/main.py +++ b/bin/main.py @@ -205,6 +205,13 @@ def main(): edit.prepare_to_insert() edit.add_line(' :skip_item_shader') edit.save() + + edit = edit_cls('PowerCubeDetailsUiCreator') + edit.find_method_def('addActionButtons') + edit.find_line(r' invoke-super .*', where='down') + edit.prepare_to_insert() + edit.add_invoke_entry('PowerCubeDetailsUiCreator_onActionButtonsTableCreated', 'p1') + edit.save() #modify shader code before compiling it edit = edit_cls('ShaderUtils') diff --git a/res/analyzer.yaml b/res/analyzer.yaml index 00d4366..19fae44 100644 --- a/res/analyzer.yaml +++ b/res/analyzer.yaml @@ -22,6 +22,7 @@ broot.ingress.mod.Entry: Mod_ShowAgentTab: [null, Z] AssetFinder_onGetAssetPath: [null, Lcom/badlogic/gdx/files/FileHandle;, $String] PortalInfoDialog_onStatsTableCreated: [null, V, $PortalInfoDialog, $Table] + PowerCubeDetailsUiCreator_onActionButtonsTableCreated: [null, V, $Table] PortalInfoDialog_onPlayerLocationChanged: [null, V] ScannerStateManager_onEnablePortalVectors: [null, Z] PlayerModelUtils_onGetDefaultResonatorToDeploy: [null, Ljava/util/Map;, Ljava/util/TreeMap;] @@ -609,6 +610,14 @@ com.nianticproject.ingress.common.inventory.ui.BaseItemDetailsUiCreator: - [by_string, false, true, '"DROP"'] - [by_string, false, true, '"RECYCLE"'] +com.nianticproject.ingress.common.inventory.ui.PowerCubeDetailsUiCreator: + methods: + addActionButtons: [b, V, $Table, $Skin, $Stage] + + find: + - [by_string, false, true, '" XM"'] + - [by_string, false, true, '"USE"'] + com.nianticproject.ingress.common.inventory.ItemActionHandler: methods: drop: [a, V, $GameEntity] @@ -664,6 +673,12 @@ com.nianticproject.ingress.ui.CommsAdapter: find_by_string: "MMM dd" +com.nianticproject.ingress.content.CommsLoader: + find_by_string: "CommsLoader.deserializeNoneOnFail" + +com.nianticproject.ingress.content.CommsData: + find_by_string: "Massive plext in CommsData" + ### FRAMEWORK android.view.View: is_real_name: true diff --git a/src/broot/ingress/mod/AboutModActivity.java b/src/broot/ingress/mod/AboutModActivity.java index 1a08242..eb6fe66 100644 --- a/src/broot/ingress/mod/AboutModActivity.java +++ b/src/broot/ingress/mod/AboutModActivity.java @@ -236,6 +236,13 @@ public void clicked(InputEvent event, float x, float y) { updateUiTweaksValues(true); } }); + uiTweaksItem.addButton("Allow Cubes recyling", "", new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + Config.enablePowerCubesRecycle = !Config.enablePowerCubesRecycle; + updateUiTweaksValues(true); + } + }); addItem(uiTweaksItem); addItem(uiVariantItem = new ListItem(skin, "UI variant", "", "Toggle", new ClickListener() { @@ -358,6 +365,7 @@ private void updateUiTweaksValues(boolean save) { } uiTweaksItem.buttons.get(8).setText(gpsLockLabel); uiTweaksItem.buttons.get(9).setText(Config.changePortalInfoDialog ? "ON" : "OFF"); + uiTweaksItem.buttons.get(10).setText(Config.enablePowerCubesRecycle ? "ON" : "OFF"); } private void updateUiVariantValue() { diff --git a/src/broot/ingress/mod/Entry.java b/src/broot/ingress/mod/Entry.java index 0dbf123..2da5c28 100644 --- a/src/broot/ingress/mod/Entry.java +++ b/src/broot/ingress/mod/Entry.java @@ -173,6 +173,18 @@ public static void PortalInfoDialog_onStatsTableCreated(PortalInfoDialog dialog, t.add(portalInfoDistLabel = new Label("", style)).left().expandX(); } + public static void PowerCubeDetailsUiCreator_onActionButtonsTableCreated(Table t) { + if (Config.enablePowerCubesRecycle) { + return; + } + + List cells = new ArrayList(t.getCells()); + t.clear(); + t.add((Actor) cells.get(0).getWidget()).left().size(com.esotericsoftware.tablelayout.Value.percentWidth(0.29F), com.esotericsoftware.tablelayout.Value.percentWidth(0.12F)); + t.add((Actor) cells.get(1).getWidget()).left().size(com.esotericsoftware.tablelayout.Value.percentWidth(0.29F), com.esotericsoftware.tablelayout.Value.percentWidth(0.12F)); + t.row(); + } + public static void PortalInfoDialog_onPlayerLocationChanged() { if (!Config.changePortalInfoDialog) { return; diff --git a/src/broot/ingress/mod/util/Config.java b/src/broot/ingress/mod/util/Config.java index baa2ec8..cad102e 100644 --- a/src/broot/ingress/mod/util/Config.java +++ b/src/broot/ingress/mod/util/Config.java @@ -37,6 +37,7 @@ public class Config { public static boolean vibration; public static boolean keepScreenOn; public static boolean changePortalInfoDialog; + public static boolean enablePowerCubesRecycle; public static UiVariant uiVariant; @@ -73,6 +74,7 @@ public static void load() { vibration = prefs.getBoolean("vibration", true); keepScreenOn = prefs.getBoolean("keepScreenOn", false); changePortalInfoDialog = prefs.getBoolean("changePortalInfoDialog", true); + enablePowerCubesRecycle = prefs.getBoolean("enablePowerCubesRecycle", true); uiVariant = UiVariant.byName.get(prefs.getString("uiVariant", "auto")); if (uiVariant == null) { @@ -115,6 +117,7 @@ public static void save() { e.putBoolean("vibration", vibration); e.putBoolean("keepScreenOn", keepScreenOn); e.putBoolean("changePortalInfoDialog", changePortalInfoDialog); + e.putBoolean("enablePowerCubesRecycle", enablePowerCubesRecycle); e.putString("uiVariant", uiVariant.name);