diff options
Diffstat (limited to 'src/main.janet')
-rw-r--r-- | src/main.janet | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main.janet b/src/main.janet new file mode 100644 index 0000000..8ca1215 --- /dev/null +++ b/src/main.janet @@ -0,0 +1,25 @@ +# Event loop +# SPDX-FileCopyrightText: 2025 Nguyễn Gia Phong +# SPDX-License-Identifier: GPL-3.0-or-later + +(defn handle + [event] + (match event + [:key-press key] (cond + (:matches key (chr "c") {:ctrl true}) [:quit] + (:matches key (chr "h") {}) (do (:go-up env) []) + (:matches key (chr "j") {}) (do (:go-right env) []) + (:matches key (chr "k") {}) (do (:go-left env) []) + (:matches key (chr "l") {}) (do (:go-down env) []) + []))) + +(defn run + [events] + (if-let [event (array/pop events)] + (unless (= :quit event) + (let [next-events (handle event)] + (:render env) + (run (array/join events next-events)))) + (run @[(:next-event env)]))) + +(run @[]) |