package prayer;
import java.util.ArrayList;
import java.util.List;
import org.osbot.script.Script;
import org.osbot.script.rs2.skill.Skill;
import org.osbot.script.rs2.ui.RS2InterfaceChild;
public class Prayers {
private Script script;
public Prayers(Script script) {
this.script = script;
}
enum Prayer {
THICK_SKIN(1, 1, 1, "Thick Skin"), BURST_OF_STRENGTH(4, 2, 2,
"Burst of Strength"), CLARITY_OF_THOUGHT(7, 4, 3,
"Clarity of Thought"), SHARP_EYE(8, 262144, 4, "Sharp Eye"), MYSTIC_WILL(
9, 524288, 5, "Mystic Will"), ROCK_SKIN(10, 8, 6, "Rock Skin"), SUPERHUMAN_STRENGTH(
13, 16, 7, "Superhuman Strength"), IMPROVED_REFLEXES(16, 32, 8,
"Improved Reflexes"), RAPID_RESTORE(19, 64, 9, "Rapid Restore"), RAPID_HEAL(
22, 128, 10, "Rapid Heal"), PROTECT_ITEM(25, 256, 11,
"Protect Item"), HAWK_EYE(26, 1048576, 12, "Hawk Eye"), MYSTIC_LORE(
27, 2097152, 13, "Mystic Lore"), STEEL_SKIN(28, 512, 14,
"Steel Skin"), ULTIMATE_STRENGTH(31, 1024, 15,
"Ultimate Strength"), INCREDIBLE_REFLEXES(34, 2048, 16,
"Incredible Reflexes"), PROTECT_FROM_MAGIC(37, 4096, 17,
"Protect from Magic"), PROTECT_FROM_MISSILES(40, 8192, 18,
"Protect from Missiles"), PROTECT_FROM_MELEE(43, 16384, 19,
"Protect from Melee");
private int requiredPrayerLevel;
private int configValue;
private int slot;
private String prayerName;
Prayer(final int requiredPrayerLevel, final int configValue,
final int slot, final String prayerName) {
this.requiredPrayerLevel = requiredPrayerLevel;
this.configValue = configValue;
this.slot = slot;
this.prayerName = prayerName;
}
public int getRequiredPrayerLevel() {
return requiredPrayerLevel;
}
public int getConfigValue() {
return configValue;
}
public int getSlot() {
return slot-1;
}
public String getName() {
return prayerName;
}
}
public boolean hasRequiredPrayerLevel(Prayer p) {
return script.client.getSkills().getLevel(Skill.PRAYER) >= p
.getRequiredPrayerLevel();
}
public boolean isSet(Prayer p) {
return p != null && getSelectedPrayers().contains(p);
}
public List<Prayer> getSelectedPrayers() {
List<Prayer> selectedPrayers = new ArrayList<Prayer>();
for (Prayer p : Prayer.values()) {
if ((script.client.getConfig(83) & (1 << getReversedPower(2,
p.getConfigValue()))) != 0) {
selectedPrayers.add(p);
}
}
return selectedPrayers;
}
public List<Prayer> getSelectedQuickPrayers() {
List<Prayer> selectedPrayers = new ArrayList<Prayer>();
for (Prayer p : Prayer.values()) {
if ((script.client.getConfig(84) & (1 << getReversedPower(2,
p.getConfigValue()))) != 0) {
selectedPrayers.add(p);
}
}
return selectedPrayers;
}
public boolean isSetQuickPrayer(Prayer p){
return p != null && getSelectedQuickPrayers().contains(p);
}
public boolean isQuickPrayerMenuOpen(){
return getChild(77,4) !=null;
}
private RS2InterfaceChild getChild(int parent, int child) {
if (script.client.getInterface(parent) != null) {
RS2InterfaceChild c = script.client.getInterface(parent).getChild(child);
if (c != null && c.isVisible()) {
return c;
}
}
return null;
}
/*
* Used to figure out how many shifts are needed..
*/
private int getReversedPower(int powerOfNumber, int endNumber) {
for (int i = 1; i < 31; i++) {
if (Math.pow(powerOfNumber, i) == endNumber) {
return i;
}
}
return 0;
}
}
the slot class to return the slots like such..
package prayer;
import java.awt.Point;
import java.awt.Rectangle;
import org.osbot.script.Script;
import org.osbot.script.mouse.RectangleDestination;
import org.osbot.script.rs2.ui.RS2InterfaceChild;
import org.osbot.script.rs2.ui.Tab;
import prayer.Prayers.Prayer;
public class PrayerSlot {
private Script script;
private Prayers prayers;
public PrayerSlot(Script script) {
this.script = script;
prayers = new Prayers(script);
}
private final int START_WIDTH = 553;
private final int START_HEIGHT = 218;
private final int WIDTH = 37;
private final int HEIGHT = 37;
private Point getPoint(int slot) {
int column = slot / 5;
int row = slot % 5;
int x = (int) (START_WIDTH + (row * WIDTH));
int y = (int) START_HEIGHT + (column * HEIGHT);
return new Point(x, y);
}
public Rectangle getRectangle(int slot) {
Point p = getPoint(slot);
return new Rectangle(p.x, p.y, 30, 27);
}
public void togglePrayerOn(Prayer p) throws InterruptedException {
if (p != null && !prayers.isSet(p)) {
Rectangle interactionSlot = getRectangle(p.getSlot());
if (script.currentTab() != null && interactionSlot != null) {
if (!script.currentTab().equals(Tab.PRAYER)) {
script.openTab(Tab.PRAYER);
}
if (script.currentTab().equals(Tab.PRAYER)) {
interact(interactionSlot, "Activate");
}
}
}
}
public void togglePrayerOff(Prayer p) throws InterruptedException {
if (p != null && prayers.isSet(p)) {
Rectangle interactionSlot = getRectangle(p.getSlot());
if (script.currentTab() != null && interactionSlot != null) {
if (!script.currentTab().equals(Tab.PRAYER)) {
script.openTab(Tab.PRAYER);
}
if (script.currentTab().equals(Tab.PRAYER)) {
interact(interactionSlot, "Deactivate");
}
}
}
}
public void toogleQuickPrayerOn(Prayer p) throws InterruptedException {
if (p != null && !prayers.isSetQuickPrayer(p)) {
Rectangle interactionSlot = getRectangle(p.getSlot());
if (script.currentTab() != null && interactionSlot != null) {
if (!script.currentTab().equals(Tab.PRAYER)) {
script.openTab(Tab.PRAYER);
}
if (script.currentTab().equals(Tab.PRAYER)) {
interact(interactionSlot, "Toggle");
}
}
}
}
public void toogleQuickPrayerOff(Prayer p) throws InterruptedException {
if (p != null && prayers.isSetQuickPrayer(p)) {
Rectangle interactionSlot = getRectangle(p.getSlot());
if (script.currentTab() != null && interactionSlot != null) {
if (!script.currentTab().equals(Tab.PRAYER)) {
script.openTab(Tab.PRAYER);
}
if (script.currentTab().equals(Tab.PRAYER)) {
interact(interactionSlot, "Toggle");
}
}
}
}
public void confirmQuickPrayers() throws InterruptedException {
if (script.currentTab() != null && prayers.isQuickPrayerMenuOpen()) {
if (!script.currentTab().equals(Tab.PRAYER)) {
script.openTab(Tab.PRAYER);
}
if (script.currentTab().equals(Tab.PRAYER)) {
interact(getChild(77,4).getRectangle(),"Done");
}
}
}
public void openQuickPrayerMenu() throws InterruptedException{
//548,85
if (getChild(548,85) !=null){
interact(getChild(548,85).getRectangle(),"Setup");
}
}
public void activateQuickPrayers() throws InterruptedException{
if (getChild(548,85) !=null){
getChild(548,85).interact("Activate");
}
}
private RS2InterfaceChild getChild(int parent, int child) {
if (script.client.getInterface(parent) != null) {
RS2InterfaceChild c = script.client.getInterface(parent).getChild(child);
if (c != null && c.isVisible()) {
return c;
}
}
return null;
}
private boolean interact(Rectangle rec, String action)
throws InterruptedException {
return script.selectOption(null, new RectangleDestination(rec), action);
}
}
updated it again a little