achivement dairy plugin: Add satisfiesRequirement to Requirement (#12265)
Add satisfiesRequirement to Requirement interface that all other requirements implement Instead of using instanceOf to see if each requirement is satisfied.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ? "<col=000080><str>" : "<col=800000>");
|
||||
b.append(ireq.toString());
|
||||
b.append(satifisfied ? "</str>" : "<col=000080>");
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.achievementdiary;
|
||||
|
||||
import net.runelite.api.Client;
|
||||
|
||||
public interface Requirement
|
||||
{
|
||||
boolean satisfiesRequirement(Client client);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user