cml: only send update if at least 1k exp has been gained

This commit is contained in:
Adam
2019-01-03 20:55:29 -05:00
parent 0246e04b83
commit 9301eed3f0

View File

@@ -25,11 +25,13 @@
package net.runelite.client.plugins.crystalmathlabs;
import java.io.IOException;
import java.util.Objects;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.api.Skill;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
@@ -51,17 +53,40 @@ import okhttp3.Response;
@Slf4j
public class CrystalMathLabs extends Plugin
{
/**
* Amount of EXP that must be gained for an update to be submitted.
*/
private static final int XP_THRESHOLD = 1000;
@Inject
private Client client;
private String lastUsername;
private long lastXp;
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
GameState state = gameStateChanged.getGameState();
if (state == GameState.LOGIN_SCREEN)
if (state == GameState.LOGGED_IN)
{
if (!Objects.equals(client.getUsername(), lastUsername))
{
lastUsername = client.getUsername();
lastXp = getTotalXp();
}
}
else if (state == GameState.LOGIN_SCREEN)
{
Player local = client.getLocalPlayer();
if (local != null)
if (local == null)
{
return;
}
long totalXp = getTotalXp();
// Don't submit update unless xp threshold is reached
if (Math.abs(totalXp - lastXp) > XP_THRESHOLD)
{
log.debug("Submitting update for {}", local.getName());
sendUpdateRequest(local.getName());
@@ -69,6 +94,16 @@ public class CrystalMathLabs extends Plugin
}
}
private long getTotalXp()
{
long total = 0;
for (Skill skill : Skill.values())
{
total += client.getSkillExperience(skill);
}
return total;
}
private void sendUpdateRequest(String username)
{
String reformedUsername = username.replace(" ", "_");