Merge pull request #7828 from deathbeam/fix-item-comp-cache

Reset item composition cache on menu shift-click change
This commit is contained in:
Tomas Slusny
2019-02-15 07:56:49 +00:00
committed by GitHub
4 changed files with 43 additions and 2 deletions

View File

@@ -1574,4 +1574,9 @@ public interface Client extends GameEngine
* Sets if a widget is in target mode * Sets if a widget is in target mode
*/ */
void setSpellSelected(boolean selected); void setSpellSelected(boolean selected);
/**
* Returns client item composition cache
*/
NodeCache getItemCompositionCache();
} }

View File

@@ -256,6 +256,15 @@ public class ItemManager
itemCompositions.put(event.getItemComposition().getId(), event.getItemComposition()); itemCompositions.put(event.getItemComposition().getId(), event.getItemComposition());
} }
/**
* Invalidates internal item manager item composition cache (but not client item composition cache)
* @see Client#getItemCompositionCache()
*/
public void invalidateItemCompositionCache()
{
itemCompositions.invalidateAll();
}
/** /**
* Look up an item's price * Look up an item's price
* *

View File

@@ -45,8 +45,10 @@ import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.PostItemComposition; import net.runelite.api.events.PostItemComposition;
import net.runelite.api.events.WidgetMenuOptionClicked; import net.runelite.api.events.WidgetMenuOptionClicked;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager;
import net.runelite.client.game.ItemVariationMapping; import net.runelite.client.game.ItemVariationMapping;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
@@ -101,6 +103,9 @@ public class MenuEntrySwapperPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private ClientThread clientThread;
@Inject @Inject
private MenuEntrySwapperConfig config; private MenuEntrySwapperConfig config;
@@ -116,6 +121,9 @@ public class MenuEntrySwapperPlugin extends Plugin
@Inject @Inject
private MenuManager menuManager; private MenuManager menuManager;
@Inject
private ItemManager itemManager;
@Getter @Getter
private boolean configuringShiftClick = false; private boolean configuringShiftClick = false;
@@ -146,6 +154,11 @@ public class MenuEntrySwapperPlugin extends Plugin
@Subscribe @Subscribe
public void onConfigChanged(ConfigChanged event) public void onConfigChanged(ConfigChanged event)
{ {
if (!CONFIG_GROUP.equals(event.getGroup()))
{
return;
}
if (event.getKey().equals("shiftClickCustomization")) if (event.getKey().equals("shiftClickCustomization"))
{ {
if (config.shiftClickCustomization()) if (config.shiftClickCustomization())
@@ -157,6 +170,16 @@ public class MenuEntrySwapperPlugin extends Plugin
disableCustomization(); disableCustomization();
} }
} }
else if (event.getKey().startsWith(ITEM_KEY_PREFIX))
{
clientThread.invoke(this::resetItemCompositionCache);
}
}
private void resetItemCompositionCache()
{
itemManager.invalidateItemCompositionCache();
client.getItemCompositionCache().reset();
} }
private Integer getSwapConfig(int itemId) private Integer getSwapConfig(int itemId)
@@ -187,6 +210,7 @@ public class MenuEntrySwapperPlugin extends Plugin
{ {
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
refreshShiftClickCustomizationMenus(); refreshShiftClickCustomizationMenus();
clientThread.invoke(this::resetItemCompositionCache);
} }
private void disableCustomization() private void disableCustomization()
@@ -194,6 +218,7 @@ public class MenuEntrySwapperPlugin extends Plugin
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
removeShiftClickCustomizationMenus(); removeShiftClickCustomizationMenus();
configuringShiftClick = false; configuringShiftClick = false;
clientThread.invoke(this::resetItemCompositionCache);
} }
@Subscribe @Subscribe
@@ -291,7 +316,6 @@ public class MenuEntrySwapperPlugin extends Plugin
if (option.equals(RESET) && target.equals(MENU_TARGET)) if (option.equals(RESET) && target.equals(MENU_TARGET))
{ {
unsetSwapConfig(itemId); unsetSwapConfig(itemId);
itemComposition.resetShiftClickActionIndex();
return; return;
} }
@@ -324,7 +348,6 @@ public class MenuEntrySwapperPlugin extends Plugin
if (valid) if (valid)
{ {
setSwapConfig(itemId, index); setSwapConfig(itemId, index);
itemComposition.setShiftClickActionIndex(index);
} }
} }

View File

@@ -785,6 +785,10 @@ public interface RSClient extends RSGameEngine, Client
@Override @Override
RSNodeCache getWidgetSpriteCache(); RSNodeCache getWidgetSpriteCache();
@Import("items")
@Override
RSNodeCache getItemCompositionCache();
@Import("oculusOrbState") @Import("oculusOrbState")
@Override @Override
int getOculusOrbState(); int getOculusOrbState();