diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java index 4befd43eb1..302822e534 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; +import net.runelite.api.Client; @RequiredArgsConstructor @Getter @@ -38,4 +39,9 @@ public class CombatLevelRequirement implements Requirement { return level + " " + "Combat"; } + + public boolean satisfiesRequirement(Client client) + { + return client.getLocalPlayer() == null ? false : client.getLocalPlayer().getCombatLevel() >= level; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java index ee77f19ecc..9afce27f26 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java @@ -35,9 +35,7 @@ import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.FontTypeFace; -import net.runelite.api.QuestState; import net.runelite.api.ScriptID; -import net.runelite.api.VarPlayer; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; @@ -277,7 +275,7 @@ public class DiaryRequirementsPlugin extends Plugin assert !req.getRequirements().isEmpty(); for (Requirement ireq : req.getRequirements()) { - boolean satifisfied = satisfiesRequirement(ireq); + boolean satifisfied = ireq.satisfiesRequirement(client); b.append(satifisfied ? "" : ""); b.append(ireq.toString()); b.append(satifisfied ? "" : ""); @@ -292,45 +290,4 @@ public class DiaryRequirementsPlugin extends Plugin } return reqs; } - - private boolean satisfiesRequirement(Requirement r) - { - if (r instanceof OrRequirement) - { - return ((OrRequirement) r).getRequirements() - .stream() - .anyMatch(this::satisfiesRequirement); - } - if (r instanceof SkillRequirement) - { - SkillRequirement s = (SkillRequirement) r; - return client.getRealSkillLevel(s.getSkill()) >= s.getLevel(); - } - if (r instanceof CombatLevelRequirement) - { - return client.getLocalPlayer().getCombatLevel() >= ((CombatLevelRequirement) r).getLevel(); - } - if (r instanceof QuestRequirement) - { - QuestRequirement q = (QuestRequirement) r; - QuestState state = q.getQuest().getState(client); - if (q.isStarted()) - { - return state != QuestState.NOT_STARTED; - } - return state == QuestState.FINISHED; - } - if (r instanceof QuestPointRequirement) - { - return client.getVar(VarPlayer.QUEST_POINTS) >= ((QuestPointRequirement) r).getQp(); - } - if (r instanceof FavourRequirement) - { - FavourRequirement f = (FavourRequirement) r; - int realFavour = client.getVar(f.getHouse().getVarbit()); - return (realFavour / 10) >= f.getPercent(); - } - log.warn("Unknown requirement {}", r); - return false; - } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java index 575faa0e75..916033f206 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; +import net.runelite.api.Client; import net.runelite.api.Favour; @RequiredArgsConstructor @@ -40,4 +41,10 @@ public class FavourRequirement implements Requirement { return percent + "% " + house.getName() + " favour"; } + + public boolean satisfiesRequirement(Client client) + { + int realFavour = client.getVar(house.getVarbit()); + return (realFavour / 10) >= percent; + } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java index 7b852426f9..44f9ebb0d5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java @@ -28,6 +28,7 @@ import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import java.util.List; import lombok.Getter; +import net.runelite.api.Client; public class OrRequirement implements Requirement { @@ -44,4 +45,16 @@ public class OrRequirement implements Requirement { return Joiner.on(" or ").join(requirements); } + + public boolean satisfiesRequirement(Client client) + { + for (Requirement r : getRequirements()) + { + if (r.satisfiesRequirement(client)) + { + return true; + } + } + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java index c2b13e7c9b..0813e6bed0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java @@ -26,6 +26,8 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; +import net.runelite.api.Client; +import net.runelite.api.VarPlayer; @RequiredArgsConstructor @Getter @@ -38,4 +40,9 @@ public class QuestPointRequirement implements Requirement { return qp + " " + "Quest points"; } + + public boolean satisfiesRequirement(Client client) + { + return client.getVar(VarPlayer.QUEST_POINTS) >= qp; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java index cbc471651f..ca02ee682d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java @@ -26,7 +26,9 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; +import net.runelite.api.Client; import net.runelite.api.Quest; +import net.runelite.api.QuestState; @Getter @RequiredArgsConstructor @@ -50,4 +52,14 @@ public class QuestRequirement implements Requirement return quest.getName(); } + + public boolean satisfiesRequirement(Client client) + { + QuestState questState = quest.getState(client); + if (started) + { + return questState != QuestState.NOT_STARTED; + } + return questState == QuestState.FINISHED; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java index a507cb4538..3360a15a7f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java @@ -24,6 +24,9 @@ */ package net.runelite.client.plugins.achievementdiary; +import net.runelite.api.Client; + public interface Requirement { + boolean satisfiesRequirement(Client client); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java index 1a711f91ac..ded0a3c84d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; +import net.runelite.api.Client; import net.runelite.api.Skill; @RequiredArgsConstructor @@ -40,4 +41,9 @@ public class SkillRequirement implements Requirement { return level + " " + skill.getName(); } + + public boolean satisfiesRequirement(Client client) + { + return client.getRealSkillLevel(skill) >= level; + } }