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.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
@@ -38,4 +39,9 @@ public class CombatLevelRequirement implements Requirement
|
|||||||
{
|
{
|
||||||
return level + " " + "Combat";
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.FontTypeFace;
|
import net.runelite.api.FontTypeFace;
|
||||||
import net.runelite.api.QuestState;
|
|
||||||
import net.runelite.api.ScriptID;
|
import net.runelite.api.ScriptID;
|
||||||
import net.runelite.api.VarPlayer;
|
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
@@ -277,7 +275,7 @@ public class DiaryRequirementsPlugin extends Plugin
|
|||||||
assert !req.getRequirements().isEmpty();
|
assert !req.getRequirements().isEmpty();
|
||||||
for (Requirement ireq : req.getRequirements())
|
for (Requirement ireq : req.getRequirements())
|
||||||
{
|
{
|
||||||
boolean satifisfied = satisfiesRequirement(ireq);
|
boolean satifisfied = ireq.satisfiesRequirement(client);
|
||||||
b.append(satifisfied ? "<col=000080><str>" : "<col=800000>");
|
b.append(satifisfied ? "<col=000080><str>" : "<col=800000>");
|
||||||
b.append(ireq.toString());
|
b.append(ireq.toString());
|
||||||
b.append(satifisfied ? "</str>" : "<col=000080>");
|
b.append(satifisfied ? "</str>" : "<col=000080>");
|
||||||
@@ -292,45 +290,4 @@ public class DiaryRequirementsPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
return reqs;
|
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.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Favour;
|
import net.runelite.api.Favour;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -40,4 +41,10 @@ public class FavourRequirement implements Requirement
|
|||||||
{
|
{
|
||||||
return percent + "% " + house.getName() + " favour";
|
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 com.google.common.collect.ImmutableList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
|
||||||
public class OrRequirement implements Requirement
|
public class OrRequirement implements Requirement
|
||||||
{
|
{
|
||||||
@@ -44,4 +45,16 @@ public class OrRequirement implements Requirement
|
|||||||
{
|
{
|
||||||
return Joiner.on(" or ").join(requirements);
|
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.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.VarPlayer;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
@@ -38,4 +40,9 @@ public class QuestPointRequirement implements Requirement
|
|||||||
{
|
{
|
||||||
return qp + " " + "Quest points";
|
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.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Quest;
|
import net.runelite.api.Quest;
|
||||||
|
import net.runelite.api.QuestState;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -50,4 +52,14 @@ public class QuestRequirement implements Requirement
|
|||||||
|
|
||||||
return quest.getName();
|
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;
|
package net.runelite.client.plugins.achievementdiary;
|
||||||
|
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
|
||||||
public interface Requirement
|
public interface Requirement
|
||||||
{
|
{
|
||||||
|
boolean satisfiesRequirement(Client client);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary;
|
|||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -40,4 +41,9 @@ public class SkillRequirement implements Requirement
|
|||||||
{
|
{
|
||||||
return level + " " + skill.getName();
|
return level + " " + skill.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean satisfiesRequirement(Client client)
|
||||||
|
{
|
||||||
|
return client.getRealSkillLevel(skill) >= level;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user