Advertisement
fiveriverflow

BuffHandler Kotlin

Aug 23rd, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.27 KB | None | 0 0
  1. package gg.rsmod.game.model.buffs
  2.  
  3. import gg.rsmod.game.model.entity.Pawn
  4.  
  5. class BuffHandler(val pawn: Pawn) {
  6.  
  7.     private var timers = mutableListOf<BuffTimer>()
  8.  
  9.     fun add(timer: BuffTimers, time: Int = -1) {
  10.         val time = if (time == -1) timer.time else time
  11.  
  12.         if (time == 0)
  13.             return
  14.  
  15.         timers.removeIf { it.timer.id == timer.id && it.timer.override }
  16.  
  17.         val timer = BuffTimer(timer, time)
  18.         timers.add(timer)
  19.         //ToDo: Display buff for player with seconds remaining
  20.     }
  21.  
  22.     fun remove(timer: BuffTimers) {
  23.         timers.removeIf { it.timer.id == timer.id }
  24.         //Todo: Call any onEnd procedures for this timer, i.e. recalculating bonuses
  25.         //ToDo: Remove buff from displayed buffs for player
  26.     }
  27.  
  28.     fun reset(removeAttendance: Boolean = false, removeDeathPenalty: Boolean = false) {
  29.         timers.retainAll { it.timer.id == BuffTimers.ATTENDANCE.id && !removeAttendance || it.timer.id == BuffTimers.DEATH_PENALTY.id && !removeDeathPenalty }
  30.         //Todo: Call all onEnd procedures for all timers, i.e. recalculating bonuses
  31.         //ToDo: Remove buffs from displayed buffs for player
  32.     }
  33.  
  34.     fun isActive(timer: BuffTimer) : Boolean {
  35.         return timers.contains(timer)
  36.     }
  37.  
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement