blob: c5c7e3d27b6b14ede0c36503e84e741394c21497 [file] [log] [blame] [raw]
package li.cil.oc.client
import cpw.mods.fml.client.FMLClientHandler
import li.cil.oc.OpenComputers
import net.minecraft.client.settings.GameSettings
import net.minecraft.client.settings.KeyBinding
import org.lwjgl.input.Keyboard
import org.lwjgl.input.Mouse
import scala.collection.mutable
object KeyBindings {
val keyBindingChecks = mutable.ArrayBuffer(isKeyBindingPressedVanilla _)
val keyBindingNameGetters = mutable.ArrayBuffer(getKeyBindingNameVanilla _)
def showExtendedTooltips = isKeyBindingPressed(extendedTooltip)
def showMaterialCosts = isKeyBindingPressed(materialCosts)
def isPastingClipboard = isKeyBindingPressed(clipboardPaste)
def getKeyBindingName(keyBinding: KeyBinding) = keyBindingNameGetters.map(_(keyBinding)).collectFirst {
case Some(name) => name
}.getOrElse("???")
def isKeyBindingPressed(keyBinding: KeyBinding) = keyBindingChecks.forall(_(keyBinding))
def getKeyBindingNameVanilla(keyBinding: KeyBinding) = try Some(GameSettings.getKeyDisplayString(keyBinding.getKeyCode)) catch {
case _: Throwable => None
}
def isKeyBindingPressedVanilla(keyBinding: KeyBinding) = try {
if (keyBinding.getKeyCode < 0)
Mouse.isCreated && Mouse.isButtonDown(keyBinding.getKeyCode + 100)
else
Keyboard.isCreated && Keyboard.isKeyDown(keyBinding.getKeyCode)
}
catch {
case _: Throwable => false
}
def extendedTooltip = FMLClientHandler.instance.getClient.gameSettings.keyBindSneak
val materialCosts = new KeyBinding("key.materialCosts", Keyboard.KEY_LMENU, OpenComputers.Name)
val clipboardPaste = new KeyBinding("key.clipboardPaste", Keyboard.KEY_INSERT, OpenComputers.Name)
}