A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/AlmasB/FXGL/commit/ffb97c648 below:

trigger listener now supports direct onKey and onButton callbac… · AlmasB/FXGL@ffb97c6 · GitHub

File tree Expand file treeCollapse file tree 2 files changed

+82

-13

lines changed

Filter options

Expand file treeCollapse file tree 2 files changed

+82

-13

lines changed Original file line number Diff line number Diff line change

@@ -20,7 +20,6 @@ import javafx.scene.Node

20 20

import javafx.scene.input.*

21 21

import java.util.*

22 22

import java.util.concurrent.CopyOnWriteArrayList

23 -

import kotlin.collections.ArrayList

24 23

import kotlin.collections.HashMap

25 24

import kotlin.collections.LinkedHashMap

26 25

@@ -271,15 +270,25 @@ class Input {

271 270

currentActions[i].action()

272 271

}

273 272 274 -

activeTriggers.forEach { trigger ->

275 -

listeners.forEach {

276 -

it.action(trigger)

277 -

}

273 +

activeTriggers.forEach {

274 +

updateTriggerListeners(it)

278 275

}

279 276 280 277

captureAppliers.forEach { it.update(tpf) }

281 278

}

282 279 280 +

private fun updateTriggerListeners(trigger: Trigger) {

281 +

listeners.forEach {

282 +

if (trigger is KeyTrigger) {

283 +

it.actionKey(trigger)

284 +

} else if (trigger is MouseTrigger) {

285 +

it.actionBtn(trigger)

286 +

}

287 + 288 +

it.action(trigger)

289 +

}

290 +

}

291 + 283 292

/**

284 293

* Called automatically by FXGL on key event.

285 294

*/

@@ -337,9 +346,7 @@ class Input {

337 346

if (newTrigger !in activeTriggers) {

338 347

activeTriggers += newTrigger

339 348 340 -

listeners.forEach {

341 -

it.begin(newTrigger)

342 -

}

349 +

handleTriggerPressed(newTrigger)

343 350

}

344 351 345 352

bindings.filter { (act, trigger) -> act !in currentActions && trigger.isTriggered(event) }

@@ -361,12 +368,22 @@ class Input {

361 368

}

362 369

}

363 370 364 -

private fun handleReleased(event: InputEvent) {

365 -

val releasedTriggers = activeTriggers.filter { it.isReleased(event) }

366 -

releasedTriggers.forEach { trigger ->

367 -

listeners.forEach {

368 -

it.end(trigger)

371 +

private fun handleTriggerPressed(trigger: Trigger) {

372 +

listeners.forEach {

373 +

if (trigger is KeyTrigger) {

374 +

it.beginKey(trigger)

375 +

} else if (trigger is MouseTrigger) {

376 +

it.beginBtn(trigger)

369 377

}

378 + 379 +

it.begin(trigger)

380 +

}

381 +

}

382 + 383 +

private fun handleReleased(event: InputEvent) {

384 +

val releasedTriggers = activeTriggers.filter { it.isReleased(event) || (it is KeyTrigger && isIllegal(it.key)) }

385 +

releasedTriggers.forEach {

386 +

handleTriggerReleased(it)

370 387

}

371 388 372 389

activeTriggers -= releasedTriggers

@@ -392,6 +409,18 @@ class Input {

392 409

}

393 410

}

394 411 412 +

private fun handleTriggerReleased(trigger: Trigger) {

413 +

listeners.forEach {

414 +

if (trigger is KeyTrigger) {

415 +

it.endKey(trigger)

416 +

} else if (trigger is MouseTrigger) {

417 +

it.endBtn(trigger)

418 +

}

419 + 420 +

it.end(trigger)

421 +

}

422 +

}

423 + 395 424

fun addTriggerListener(triggerListener: TriggerListener) {

396 425

listeners += triggerListener

397 426

}

Original file line number Diff line number Diff line change

@@ -16,6 +16,14 @@ abstract class TriggerListener {

16 16

internal fun action(trigger: Trigger) = onAction(trigger)

17 17

internal fun end(trigger: Trigger) = onActionEnd(trigger)

18 18 19 +

internal fun beginKey(trigger: KeyTrigger) = onKeyBegin(trigger)

20 +

internal fun actionKey(trigger: KeyTrigger) = onKey(trigger)

21 +

internal fun endKey(trigger: KeyTrigger) = onKeyEnd(trigger)

22 + 23 +

internal fun beginBtn(trigger: MouseTrigger) = onButtonBegin(trigger)

24 +

internal fun actionBtn(trigger: MouseTrigger) = onButton(trigger)

25 +

internal fun endBtn(trigger: MouseTrigger) = onButtonEnd(trigger)

26 + 19 27

/**

20 28

* Called once in the same tick when triggered.

21 29

*/

@@ -31,4 +39,36 @@ abstract class TriggerListener {

31 39

* Called once in the same tick when trigger was released.

32 40

*/

33 41

protected open fun onActionEnd(trigger: Trigger) {}

42 + 43 +

/**

44 +

* Called once in the same tick when triggered.

45 +

*/

46 +

protected open fun onKeyBegin(keyTrigger: KeyTrigger) {}

47 + 48 +

/**

49 +

* Called as long as the trigger is being held (pressed).

50 +

* Starts from the next tick from the one when was triggered.

51 +

*/

52 +

protected open fun onKey(keyTrigger: KeyTrigger) {}

53 + 54 +

/**

55 +

* Called once in the same tick when trigger was released.

56 +

*/

57 +

protected open fun onKeyEnd(keyTrigger: KeyTrigger) {}

58 + 59 +

/**

60 +

* Called once in the same tick when triggered.

61 +

*/

62 +

protected open fun onButtonBegin(mouseTrigger: MouseTrigger) {}

63 + 64 +

/**

65 +

* Called as long as the trigger is being held (pressed).

66 +

* Starts from the next tick from the one when was triggered.

67 +

*/

68 +

protected open fun onButton(mouseTrigger: MouseTrigger) {}

69 + 70 +

/**

71 +

* Called once in the same tick when trigger was released.

72 +

*/

73 +

protected open fun onButtonEnd(mouseTrigger: MouseTrigger) {}

34 74

}

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4