absorb FlxKeyShortcutHandler from kiss-tools

This commit is contained in:
2023-07-05 06:41:31 -06:00
parent a8a3a4ff53
commit e4d121b3a5
3 changed files with 61 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
# @install: lix --silent download "gh://github.com/kiss-lang/kiss-tools#a01cc6b76a2dfd7dcb72ee201fec1064ee050795" into kiss-tools/0.0.0/github/a01cc6b76a2dfd7dcb72ee201fec1064ee050795
# @install: lix --silent download "gh://github.com/kiss-lang/kiss-tools#31f11e8edaeefdd64d5f6a397a09ac1898647e21" into kiss-tools/0.0.0/github/31f11e8edaeefdd64d5f6a397a09ac1898647e21
-lib kiss
-cp ${HAXE_LIBCACHE}/kiss-tools/0.0.0/github/a01cc6b76a2dfd7dcb72ee201fec1064ee050795/src/
-cp ${HAXE_LIBCACHE}/kiss-tools/0.0.0/github/31f11e8edaeefdd64d5f6a397a09ac1898647e21/src/
-D kiss-tools=0.0.0

View File

@@ -0,0 +1,13 @@
#if flixel
package kiss_tools;
import kiss.Prelude;
import kiss.List;
import kiss_tools.KeyShortcutHandler;
import flixel.input.keyboard.FlxKey;
import flixel.FlxG;
@:build(kiss.Kiss.build())
class FlxKeyShortcutHandler<T> extends KeyShortcutHandler<T> {}
#end

View File

@@ -0,0 +1,46 @@
(var KEY_MAP [
=>"ZERO" "0"
=>"ONE" "1"
=>"TWO" "2"
=>"THREE" "3"
=>"FOUR" "4"
=>"FIVE" "5"
=>"SIX" "6"
=>"SEVEN" "7"
=>"EIGHT" "8"
=>"NINE" "9"
=>"NUMPADZERO" "0"
=>"NUMPADONE" "1"
=>"NUMPADTWO" "2"
=>"NUMPADTHREE" "3"
=>"NUMPADFOUR" "4"
=>"NUMPADFIVE" "5"
=>"NUMPADSIX" "6"
=>"NUMPADSEVEN" "7"
=>"NUMPADEIGHT" "8"
=>"NUMPADNINE" "9"
// TODO there are probably other keys worth converting
])
(defNew []
(super)
(set cancelKey "escape")
// TODO generic error handlers
)
// automatically pass the last pressed key to handle key
(method :Void update []
(let [:FlxKey id (FlxG.keys.firstJustPressed)]
(unless (= id -1)
(let [key (id.toString)]
(case key
("SHIFT" (return))
(otherwise
(handleKey
(case key
((when (KEY_MAP.exists key) key)
(dictGet KEY_MAP key))
((when FlxG.keys.pressed.SHIFT key)
(.toUpperCase key))
(key (.toLowerCase key))
(otherwise (throw "FlxKey.toString returned null!"))))))))))