MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / Buttons

Class Buttons

src/main/java/trace/input/Buttons.kt:12–143  ·  view source on GitHub ↗

* Created by marc on 2/28/17. */

Source from the content-addressed store, hash-verified

10import java.util.*
11import java.util.function.Supplier
12
13/**
14 * Created by marc on 2/28/17.
15 */
16class Buttons : Runnable {
17
18 private val nameMap = LinkedHashMap<String, Int>()
19 private val nameMapBackwards = LinkedHashMap<Int, String>()
20
21 @JvmField
22 val edge_down = IdempotencyMap<Supplier<Boolean>>(Supplier::class.java)
23 @JvmField
24 val while_down = IdempotencyMap<Supplier<Boolean>>(Supplier::class.java)
25 @JvmField
26 val edge_up = IdempotencyMap<Supplier<Boolean>>(Supplier::class.java)
27
28 protected var downEvents: MutableSet<Int> = LinkedHashSet()
29 protected var upEvents: MutableSet<Int> = LinkedHashSet()
30 protected var down: MutableSet<Int> = LinkedHashSet()
31
32 private var on: Window? = null
33
34 fun attachToWindow(on: Window) {
35 on.addKeyboardHandler(this::state)
36 on.addMouseHandler(this::mouseState)
37 this.on = on
38
39 val f = GLFW::class.java.declaredFields
40 for (ff in f) {
41 if (Modifier.isStatic(ff.modifiers) && ff.name.startsWith("GLFW_KEY_")) {
42 try {
43 nameMap.put(ff.name.replace("GLFW_KEY_", "").toLowerCase(), ff.getInt(null))
44 nameMapBackwards.put(ff.getInt(null), ff.name.replace("GLFW_KEY_", "").toLowerCase())
45 } catch (e: IllegalAccessException) {
46 e.printStackTrace()
47 }
48 }
49 }
50
51 nameMap.put("mouse0", -1);
52 nameMap.put("mouse1", -2);
53 nameMap.put("mouse2", -3);
54 nameMapBackwards.put(-1, "mouse0");
55 nameMapBackwards.put(-2, "mouse1");
56 nameMapBackwards.put(-3, "mouse2");
57
58 }
59
60
61 private fun state(keyboardStateEvent: Window.Event<Window.KeyboardState>): Boolean {
62 var a = LinkedHashSet(keyboardStateEvent.after.keysDown)
63 var b = LinkedHashSet(keyboardStateEvent.before.keysDown)
64 a.addAll(keyboardStateEvent.after.charsDown.values.map { nameMap[it.toString()] }.filter { it!=null })
65 b.addAll(keyboardStateEvent.before.charsDown.values.map { nameMap[it.toString()] }.filter { it!=null })
66
67 a.removeAll(b)
68 downEvents.addAll(a)
69 down.addAll(a)

Callers 1

StageClass · 0.50

Calls 1

IdempotencyMapClass · 0.85

Tested by

no test coverage detected