From c9a3792faa4367544402af6ae3379c8c57ca293d Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 10 Aug 2022 13:51:12 +0000 Subject: [PATCH] WIP KeyShortcutWindow for NAT flixel --- src/kiss_flixel/KeyShortcutWindow.hx | 9 ++++++++ src/kiss_flixel/KeyShortcutWindow.kiss | 29 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/kiss_flixel/KeyShortcutWindow.hx create mode 100644 src/kiss_flixel/KeyShortcutWindow.kiss diff --git a/src/kiss_flixel/KeyShortcutWindow.hx b/src/kiss_flixel/KeyShortcutWindow.hx new file mode 100644 index 0000000..87fe55c --- /dev/null +++ b/src/kiss_flixel/KeyShortcutWindow.hx @@ -0,0 +1,9 @@ +package kiss_flixel; + +import kiss.Prelude; +import kiss.List; +import kiss_tools.KeyShortcutHandler; +import flixel.util.FlxColor; + +@:build(kiss.Kiss.build()) +class KeyShortcutWindow extends SimpleWindow {} diff --git a/src/kiss_flixel/KeyShortcutWindow.kiss b/src/kiss_flixel/KeyShortcutWindow.kiss new file mode 100644 index 0000000..a59869f --- /dev/null +++ b/src/kiss_flixel/KeyShortcutWindow.kiss @@ -0,0 +1,29 @@ +// Wraps a given generic KeyShortcutHandler within +// the FlxKeyShortcutHandler that every SimpleWindow has, +// using the window to display available mappings +// from the currently active prefix map +(defNew [&prop :KeyShortcutHandler innerKeyShortcuts + &prop :T->String elementToStringWithoutBrackets + &opt :String title + :FlxColor bgColor + :FlxColor textColor + :Float percentWidth + :Float percentHeight] + (super title bgColor textColor percentWidth percentHeight) + (set innerKeyShortcuts.onSelectPrefixMap ->map { + (clearControls) + (doFor =>key keyBehavior map + (case keyBehavior + ((Final item) + (makeText "[${key}] - $(elementToString item)" null ->_ (innerKeyShortcuts.onSelectItem item))) + ((Prefix innerMap) + (makeText "[${key}] - $(count innerMap) more options" null ->_ (innerKeyShortcuts.onSelectPrefixMap innerMap))) + (null null)))})) + +(method &override :Void show [] + (super.show) + (innerKeyShortcuts.start)) + +(method &override :Void hide [] + (super.hide) + (innerKeyShortcuts.cancel)) \ No newline at end of file