Fix to allow multiple prayers.

Fixed not caching enum values.
This commit is contained in:
Trevor Flynn
2018-03-30 18:54:11 -07:00
committed by Gary Tierney
parent 94783da9e5
commit 1c0b1d827f
2 changed files with 14 additions and 18 deletions
+14 -17
View File
@@ -5,10 +5,12 @@ import org.apollo.game.model.entity.Player
val BURY_BONE_ANIMATION = Animation(827) val BURY_BONE_ANIMATION = Animation(827)
val PLAYER_PRAYERS = hashMapOf<Player, Prayer?>() val PLAYER_PRAYERS = hashMapOf<Player, ArrayList<Prayer>?>()
fun Player.getCurrentPrayer(): Prayer? = PLAYER_PRAYERS[this] fun Player.getCurrentPrayers(): ArrayList<Prayer> {
fun Player.setCurrentPrayer(prayer: Prayer?) = {PLAYER_PRAYERS[this] = prayer} PLAYER_PRAYERS[this] = PLAYER_PRAYERS[this] ?: ArrayList<Prayer>(); //Make sure that the array list exists
return PLAYER_PRAYERS[this]!!
}
enum class Bone(val id: Int, val xp: Double) { enum class Bone(val id: Int, val xp: Double) {
REGULAR_BONES(526, 5.0), REGULAR_BONES(526, 5.0),
@@ -32,7 +34,8 @@ enum class Bone(val id: Int, val xp: Double) {
OURG_BONES(4834, 140.0); OURG_BONES(4834, 140.0);
companion object { companion object {
fun findById(id: Int): Bone? = Bone.values().find { bone -> bone.id == id } val BONES = Bone.values()
fun findById(id: Int): Bone? = BONES.find { bone -> bone.id == id }
} }
} }
@@ -57,22 +60,16 @@ enum class Prayer(val button: Int, val level: Int, val setting: Int, val drain:
SMITE(685, 52, 100, 0.2); SMITE(685, 52, 100, 0.2);
companion object { companion object {
fun findByButton(button: Int): Prayer? = Prayer.values().find { prayer -> prayer.button == button } val PRAYERS = Prayer.values()
fun findByButton(button: Int): Prayer? = PRAYERS.find { prayer -> prayer.button == button }
} }
} }
fun updatePrayer(player: Player, prayer: Prayer?) { fun updatePrayer(player: Player, prayer: Prayer) {
//Clear active prayer //Clear active prayer
if (prayer != null) { if (player.getCurrentPrayers().contains(prayer)) {
if (player.getCurrentPrayer() == prayer) { player.send(ConfigMessage(prayer.setting, 0))
player.send(ConfigMessage(prayer.setting, 0)) } else {
} else if (player.getCurrentPrayer() == null) { player.send(ConfigMessage(prayer.setting, 1))
player.send(ConfigMessage(prayer.setting, 1))
} else {
val cprayer: Prayer = player.getCurrentPrayer()!!
player.send(ConfigMessage(cprayer.setting, 0))
player.send(ConfigMessage(prayer.setting, 1))
}
} }
player.setCurrentPrayer(prayer)
} }
@@ -17,7 +17,6 @@ on { ButtonMessage::class }
.then { .then {
val prayer = Prayer.findByButton(widgetId) ?: return@then val prayer = Prayer.findByButton(widgetId) ?: return@then
if (prayer.level > it.prayer.current) { if (prayer.level > it.prayer.current) {
updatePrayer(it,null)
terminate(); terminate();
return@then return@then
} }