cml: only send update if at least 1k exp has been gained
This commit is contained in:
@@ -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(" ", "_");
|
||||||
|
|||||||
Reference in New Issue
Block a user