loot tracker: submit loot to api

Co-authored-by: TheStonedTurtle <29030969+TheStonedTurtle@users.noreply.github.com>
This commit is contained in:
Adam
2018-12-14 14:48:55 -05:00
committed by Adam
parent 682bf8d77d
commit d747db2674

View File

@@ -52,8 +52,12 @@ import net.runelite.api.SpriteID;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.SessionClose;
import net.runelite.api.events.SessionOpen;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.WidgetID;
import net.runelite.client.account.AccountSession;
import net.runelite.client.account.SessionManager;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.NpcLootReceived;
@@ -67,6 +71,10 @@ import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text;
import net.runelite.http.api.loottracker.GameItem;
import net.runelite.http.api.loottracker.LootRecord;
import net.runelite.http.api.loottracker.LootRecordType;
import net.runelite.http.api.loottracker.LootTrackerClient;
@PluginDescriptor(
name = "Loot Tracker",
@@ -103,12 +111,17 @@ public class LootTrackerPlugin extends Plugin
@Inject
private Client client;
@Inject
private SessionManager sessionManager;
private LootTrackerPanel panel;
private NavigationButton navButton;
private String eventType;
private List<String> ignoredItems = new ArrayList<>();
private LootTrackerClient lootTrackerClient;
private static Collection<ItemStack> stack(Collection<ItemStack> items)
{
final List<ItemStack> list = new ArrayList<>();
@@ -144,6 +157,26 @@ public class LootTrackerPlugin extends Plugin
return configManager.getConfig(LootTrackerConfig.class);
}
@Subscribe
public void onSessionOpen(SessionOpen sessionOpen)
{
AccountSession accountSession = sessionManager.getAccountSession();
if (accountSession.getUuid() != null)
{
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
}
else
{
lootTrackerClient = null;
}
}
@Subscribe
public void onSessionClose(SessionClose sessionClose)
{
lootTrackerClient = null;
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
@@ -171,12 +204,19 @@ public class LootTrackerPlugin extends Plugin
.build();
clientToolbar.addNavigation(navButton);
AccountSession accountSession = sessionManager.getAccountSession();
if (accountSession != null)
{
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
}
}
@Override
protected void shutDown()
{
clientToolbar.removeNavigation(navButton);
lootTrackerClient = null;
}
@Subscribe
@@ -188,6 +228,12 @@ public class LootTrackerPlugin extends Plugin
final int combat = npc.getCombatLevel();
final LootTrackerItem[] entries = buildEntries(stack(items));
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
if (lootTrackerClient != null)
{
LootRecord lootRecord = new LootRecord(name, LootRecordType.NPC, toGameItems(items));
lootTrackerClient.submit(lootRecord);
}
}
@Subscribe
@@ -199,6 +245,12 @@ public class LootTrackerPlugin extends Plugin
final int combat = player.getCombatLevel();
final LootTrackerItem[] entries = buildEntries(stack(items));
SwingUtilities.invokeLater(() -> panel.add(name, combat, entries));
if (lootTrackerClient != null)
{
LootRecord lootRecord = new LootRecord(name, LootRecordType.PLAYER, toGameItems(items));
lootTrackerClient.submit(lootRecord);
}
}
@Subscribe
@@ -244,14 +296,19 @@ public class LootTrackerPlugin extends Plugin
.map(item -> new ItemStack(item.getId(), item.getQuantity(), client.getLocalPlayer().getLocalLocation()))
.collect(Collectors.toList());
if (!items.isEmpty())
{
final LootTrackerItem[] entries = buildEntries(stack(items));
SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries));
}
else
if (items.isEmpty())
{
log.debug("No items to find for Event: {} | Container: {}", eventType, container);
return;
}
final LootTrackerItem[] entries = buildEntries(stack(items));
SwingUtilities.invokeLater(() -> panel.add(eventType, -1, entries));
if (lootTrackerClient != null)
{
LootRecord lootRecord = new LootRecord(eventType, LootRecordType.EVENT, toGameItems(items));
lootTrackerClient.submit(lootRecord);
}
}
@@ -328,4 +385,11 @@ public class LootTrackerPlugin extends Plugin
ignored);
}).toArray(LootTrackerItem[]::new);
}
private static Collection<GameItem> toGameItems(Collection<ItemStack> items)
{
return items.stream()
.map(item -> new GameItem(item.getId(), item.getQuantity()))
.collect(Collectors.toList());
}
}