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; package net.runelite.client.plugins.crystalmathlabs;
import java.io.IOException; import java.io.IOException;
import java.util.Objects;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Skill;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -51,17 +53,40 @@ import okhttp3.Response;
@Slf4j @Slf4j
public class CrystalMathLabs extends Plugin 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 @Inject
private Client client; private Client client;
private String lastUsername;
private long lastXp;
@Subscribe @Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged) public void onGameStateChanged(GameStateChanged gameStateChanged)
{ {
GameState state = gameStateChanged.getGameState(); 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(); 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()); log.debug("Submitting update for {}", local.getName());
sendUpdateRequest(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) private void sendUpdateRequest(String username)
{ {
String reformedUsername = username.replace(" ", "_"); String reformedUsername = username.replace(" ", "_");