| package li.cil.oc.common |
| |
| import li.cil.oc.Settings |
| import li.cil.oc.api.driver.Container |
| |
| import scala.collection.mutable |
| |
| object Sound { |
| val lastPlayed = mutable.WeakHashMap.empty[Container, Long] |
| |
| def play(container: Container, name: String) { |
| container.world.playSoundEffect(container.xPosition, container.yPosition, container.zPosition, Settings.resourceDomain + ":" + name, 1, 1) |
| } |
| |
| def playDiskInsert(container: Container) { |
| play(container, "floppy_insert") |
| } |
| |
| def playDiskEject(container: Container) { |
| play(container, "floppy_eject") |
| } |
| |
| def playDiskActivity(container: Container, isFloppy: Boolean) = this.synchronized { |
| lastPlayed.get(container) match { |
| case Some(time) if time > System.currentTimeMillis() => // Cooldown. |
| case _ => |
| if (isFloppy) play(container, "floppy_access") |
| else play(container, "hdd_access") |
| lastPlayed += container -> (System.currentTimeMillis() + 500) |
| } |
| } |
| } |