From 0fdc2843da8d3d7718c6c016b5d6c5fdf5500dfa Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Mon, 7 Sep 2026 06:58:40 +0200 Subject: [PATCH] Inital boiler plate commit. Initial setup done, debug mode, build script, simple entry point, simple game manager setup. Ideal starting point for my games. --- .gitignore | 1 + build.sh | 107 ++ pong_odin.sublime-project | 44 + pong_odin.sublime-workspace | 3417 +++++++++++++++++++++++++++++++++++ src/game.odin | 44 + src/main.odin | 49 + 6 files changed, 3662 insertions(+) create mode 100644 .gitignore create mode 100644 build.sh create mode 100644 pong_odin.sublime-project create mode 100644 pong_odin.sublime-workspace create mode 100644 src/game.odin create mode 100644 src/main.odin diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..466e248 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +out/ \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..9d59cbc --- /dev/null +++ b/build.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +set -e + +# Find the odin binary +export PATH="$HOME/.odin:$PATH" + +SRC_DIR="src" +OUT_DIR="out" +OUT_NAME="pong" + +BUILD_ONLY=0 +OPTIMIZED=0 +WEB=0 +CLEAN=0 +DEBUGGER=0 +VALGRIND=0 + +usage() { + echo "Usage: $0 [-b] [-o] [-w] [-d] [-v] [-c] [-h]" + echo " -b build only, don't run" + echo " -o optimized release build (-o:speed, no debug info)" + echo " -w web/WASM build (js_wasm32 target)" + echo " -d build then launch in debugger instead of running" + echo " -v build then run under Valgrind" + echo " -c clean build artifacts" + echo " -h show this help" + exit 1 +} + +while getopts "bowdvch" opt; do + case $opt in + b) BUILD_ONLY=1 ;; + o) OPTIMIZED=1 ;; + w) WEB=1 ;; + d) DEBUGGER=1 ;; + v) VALGRIND=1 ;; + c) CLEAN=1 ;; + h) usage ;; + *) usage ;; + esac +done + +mkdir -p "$OUT_DIR" + +if [ "$CLEAN" -eq 1 ]; then + echo "Cleaning..." + rm -rf "${OUT_DIR:?}"/* + exit 0 +fi + +if [ "$WEB" -eq 1 ]; then + echo "Building web (WASM)..." + odin build "$SRC_DIR" \ + -target:js_wasm32 \ + -out:"$OUT_DIR/$OUT_NAME.wasm" \ + $( [ "$OPTIMIZED" -eq 1 ] && echo "-o:speed" || echo "-debug" ) + + # Copy the HTML shell if one exists + if [ -f "web/index_template.html" ]; then + cp web/index_template.html "$OUT_DIR/index.html" + fi + + echo "Web build complete -> $OUT_DIR/$OUT_NAME.wasm" + exit 0 +fi + +if [ "$OPTIMIZED" -eq 1 ]; then + echo "Building optimized ($SRC_DIR -> $OUT_DIR/$OUT_NAME)..." + odin build "$SRC_DIR" \ + -out:"$OUT_DIR/$OUT_NAME" \ + -o:speed \ + -no-bounds-check +else + echo "Building debug ($SRC_DIR -> $OUT_DIR/$OUT_NAME)..." + odin build "$SRC_DIR" \ + -out:"$OUT_DIR/$OUT_NAME" \ + -debug \ + -define:DEBUG_MODE=true +fi + +echo "Build complete." + +if [ "$BUILD_ONLY" -eq 0 ]; then + echo "----------------------------------------" + + if [ "$DEBUGGER" -eq 1 ]; then + lldb "$OUT_DIR/$OUT_NAME" + + elif [ "$VALGRIND" -eq 1 ]; then + # --show-leak-kinds=definite,possible reduces tons of noise + # still shows the leaks you actually need to fix. + # to audit whole process, temporarily switch back to --show-leak-kinds=all + valgrind \ + --leak-check=full \ + --show-leak-kinds=definite,possible \ + --track-origins=yes \ + --errors-for-leak-kinds=definite,possible \ + --error-exitcode=1 \ + --log-file="$OUT_DIR/valgrind.log" \ + "./$OUT_DIR/$OUT_NAME" + + echo + echo "Valgrind report written to $OUT_DIR/valgrind.log" + else + "./$OUT_DIR/$OUT_NAME" + fi +fi \ No newline at end of file diff --git a/pong_odin.sublime-project b/pong_odin.sublime-project new file mode 100644 index 0000000..c9e5a68 --- /dev/null +++ b/pong_odin.sublime-project @@ -0,0 +1,44 @@ +{ + "folders": + [ + { + "path": "." + } + ], + "build_systems": + [ + { + "name": "Run Build Script", + "cmd": ["/bin/bash", "build.sh"], + "working_dir": "$project_path", + "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", + "variants": + [ + { + "name": "Run with Arguments...", + "cmd": ["/bin/bash", "build.sh", "$select_args"] + }, + { + "name": "Build Only (-b)", + "cmd": ["/bin/bash", "build.sh", "-b"] + }, + { + "name": "Optimized (-o)", + "cmd": ["/bin/bash", "build.sh", "-o"] + }, + { + "name": "Debug in LLDB (-d)", + "cmd": ["/bin/bash", "build.sh", "-d"] + }, + { + "name": "Valgrind (-v)", + "cmd": ["/bin/bash", "build.sh", "-v"] + }, + { + "name": "Clean (-c)", + "cmd": ["/bin/bash", "build.sh", "-c"] + } + ] + } + ] +} \ No newline at end of file diff --git a/pong_odin.sublime-workspace b/pong_odin.sublime-workspace new file mode 100644 index 0000000..3d1cd00 --- /dev/null +++ b/pong_odin.sublime-workspace @@ -0,0 +1,3417 @@ +{ + "auto_complete": + { + "selected_items": + [ + [ + "in", + "info" + ] + ] + }, + "buffers": + [ + { + "file": "build.sh", + "file_size": 2416, + "file_write_time": 134332292785402586, + "settings": + { + "buffer_size": 2416, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 17, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "pong" + } + ] + ] + }, + "BQAAAHoAAAAAAAAAegAAAAAAAAALAAAAZ3JhdmVrZWVwZXJ6AAAAAAAAAHsAAAAAAAAAAAAAAHsAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAAB9AAAAAAAAAAAAAAB9AAAAAAAAAH4AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB6AAAAAAAAAIUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 46, + 1, + "insert", + { + "characters": " " + }, + "AQAAABYGAAAAAAAAFwYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWBgAAAAAAABYGAAAAAAAAAAAAAAAA8L8" + ], + [ + 48, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAABcGAAAAAAAAIQYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWBgAAAAAAABYGAAAAAAAAAAAAAAAA8L8" + ], + [ + 51, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "b" + } + ], + [ + "left_delete", + null + ] + ] + }, + "AgAAACAGAAAAAAAAIQYAAAAAAAAAAAAAIAYAAAAAAAAgBgAAAAAAAAEAAABi", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgBgAAAAAAACAGAAAAAAAAAAAAAAAA8L8" + ], + [ + 58, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "-defint\\" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "=" + } + ] + ] + }, + "CgAAABcGAAAAAAAAGAYAAAAAAAAAAAAAGAYAAAAAAAAZBgAAAAAAAAAAAAAZBgAAAAAAABoGAAAAAAAAAAAAABoGAAAAAAAAGwYAAAAAAAAAAAAAGwYAAAAAAAAcBgAAAAAAAAAAAAAcBgAAAAAAAB0GAAAAAAAAAAAAAB0GAAAAAAAAHgYAAAAAAAAAAAAAHgYAAAAAAAAfBgAAAAAAAAAAAAAeBgAAAAAAAB4GAAAAAAAAAQAAAFweBgAAAAAAAB8GAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAXBgAAAAAAABcGAAAAAAAAAAAAAAAA8L8" + ], + [ + 64, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "=" + } + ], + [ + "left_delete", + null + ] + ] + }, + "AgAAACkGAAAAAAAAKgYAAAAAAAAAAAAAKQYAAAAAAAApBgAAAAAAAAEAAAA9", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAApBgAAAAAAACkGAAAAAAAAAAAAAAAA8L8" + ], + [ + 70, + 1, + "sequence", + { + "commands": + [ + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "e" + } + ] + ] + }, + "AgAAAB0GAAAAAAAAHQYAAAAAAAABAAAAdB0GAAAAAAAAHgYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBgAAAAAAAB4GAAAAAAAAAAAAAAAA8L8" + ], + [ + 82, + 1, + "sequence", + { + "commands": + [ + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": ":" + } + ] + ] + }, + "AgAAAB4GAAAAAAAAHgYAAAAAAAABAAAAPR4GAAAAAAAAHwYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfBgAAAAAAAB8GAAAAAAAAAAAAAAAA8L8" + ], + [ + 87, + 1, + "insert", + { + "characters": "=true" + }, + "BQAAACkGAAAAAAAAKgYAAAAAAAAAAAAAKgYAAAAAAAArBgAAAAAAAAAAAAArBgAAAAAAACwGAAAAAAAAAAAAACwGAAAAAAAALQYAAAAAAAAAAAAALQYAAAAAAAAuBgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAApBgAAAAAAACkGAAAAAAAAAAAAAAAA8L8" + ], + [ + 97, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAABcGAAAAAAAAFwYAAAAAAAAXAAAALWRlZmluZTpERUJVR19NT0RFPXRydWU", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAuBgAAAAAAABcGAAAAAAAAAAAAAAAA8L8" + ], + [ + 101, + 1, + "insert", + { + "characters": " " + }, + "AQAAABAGAAAAAAAAEQYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAQBgAAAAAAABAGAAAAAAAAAAAAAAAA8L8" + ], + [ + 103, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAABEGAAAAAAAAKAYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAQBgAAAAAAABAGAAAAAAAAAAAAAAAA8L8" + ], + [ + 107, + 1, + "nv_vi_x", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAC8GAAAAAAAALwYAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAvBgAAAAAAAC8GAAAAAAAAAAAAAAAA8L8" + ], + [ + 124, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAGIGAAAAAAAAYwYAAAAAAAAAAAAAYwYAAAAAAABlBgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABhBgAAAAAAAGEGAAAAAAAAAAAAAAAA8L8" + ], + [ + 125, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAGMGAAAAAAAAYwYAAAAAAAACAAAACQk", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlBgAAAAAAAGUGAAAAAAAAAAAAAAAA8L8" + ], + [ + 133, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": " \\" + } + ] + ] + }, + "AgAAAGIGAAAAAAAAYwYAAAAAAAAAAAAAYwYAAAAAAABkBgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABaBgAAAAAAAFoGAAAAAAAAAAAAAAAA8L8" + ], + [ + 135, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAGQGAAAAAAAAZQYAAAAAAAAAAAAAZQYAAAAAAABnBgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABjBgAAAAAAAGMGAAAAAAAAAAAAAAAA8L8" + ], + [ + 136, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAGUGAAAAAAAAZQYAAAAAAAACAAAACQk", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABnBgAAAAAAAGcGAAAAAAAAAAAAAAAA8L8" + ], + [ + 137, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAGYGAAAAAAAAfQYAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlBgAAAAAAAGUGAAAAAAAAAAAAAAAA8L8" + ], + [ + 140, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAGUGAAAAAAAAZQYAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlBgAAAAAAAGYGAAAAAAAAAAAAAAAA8L8" + ], + [ + 142, + 1, + "insert", + { + "characters": "\t\t" + }, + "AgAAAGUGAAAAAAAAZgYAAAAAAAAAAAAAZgYAAAAAAABnBgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABlBgAAAAAAAGUGAAAAAAAAAAAAAAAA8L8" + ], + [ + 152, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAABEGAAAAAAAAEQYAAAAAAAAYAAAALWRlZmluZTpERUJVR19NT0RFPXRydWUg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARBgAAAAAAACkGAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "pong_odin.sublime-project", + "file_size": 806, + "file_write_time": 134332285637060368, + "settings": + { + "buffer_size": 806, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 58, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACwAAAAAAAAALQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAArAAAAAAAAACsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 60, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAC4AAAAAAAAAVAMAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAtAAAAAAAAAC0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 70, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAAAAAAAAAAAAAAAAAAAAAAAuAAAAewoJImZvbGRlcnMiOgoJWwoJCXsKCQkJInBhdGgiOiAiLiIKCQl9CgldCn0KCg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAC4AAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "src/main.odin", + "file_size": 1101, + "file_write_time": 134332294641802229, + "settings": + { + "buffer_size": 1101, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 4, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "package" + } + ], + [ + "insert", + { + "characters": " game" + } + ] + ] + }, + "DAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAkAAAAAAAAAAAAAAAkAAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 8, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "\n" + } + ] + ] + }, + "AgAAAAwAAAAAAAAADQAAAAAAAAAAAAAADQAAAAAAAAAOAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAAAAAAAAAAsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 16, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "mp" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "import" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "core:" + } + ] + ] + }, + "EQAAAA4AAAAAAAAADwAAAAAAAAAAAAAADwAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAAAAAA8AAAAAAAAAAQAAAHAOAAAAAAAAAA4AAAAAAAAAAQAAAG0OAAAAAAAAAA8AAAAAAAAAAAAAAA8AAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAARAAAAAAAAAAAAAAARAAAAAAAAABIAAAAAAAAAAAAAABIAAAAAAAAAEwAAAAAAAAAAAAAAEwAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFwAAAAAAAAAAAAAAFgAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABgAAAAAAAAAAAAAABgAAAAAAAAAGQAAAAAAAAAAAAAAGQAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABsAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 20, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAA4AAAAAAAAADgAAAAAAAAAOAAAAaW1wb3J0ICJjb3JlOiI", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAABwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 24, + 1, + "left_delete", + null, + "AQAAAA0AAAAAAAAADQAAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 45, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "\nimport" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "code" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "r:" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "e:fmt" + } + ] + ] + }, + "FwAAAA0AAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEQAAAAAAAAAAAAAAEQAAAAAAAAASAAAAAAAAAAAAAAASAAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAVAAAAAAAAAAAAAAAVAAAAAAAAABcAAAAAAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAAAAAAFwAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABkAAAAAAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAAAAAAGQAAAAAAAAAZAAAAAAAAAAEAAABlGAAAAAAAAAAYAAAAAAAAAAEAAABkGAAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAAAAAABkAAAAAAAAAGQAAAAAAAAABAAAAOhkAAAAAAAAAGgAAAAAAAAAAAAAAGgAAAAAAAAAbAAAAAAAAAAAAAAAbAAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAANAAAAAAAAAA0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 58, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "vendor:ray" + } + ], + [ + "insert_completion", + { + "completion": "lsp_select_completion {\"index\":16,\"session_name\":\"odin\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "raylib" + } + ] + ] + }, + "DQAAABYAAAAAAAAAFgAAAAAAAAAIAAAAY29yZTpmbXQWAAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAAAAAAHgAAAAAAAAAfAAAAAAAAAAAAAAAfAAAAAAAAACAAAAAAAAAAAAAAAB0AAAAAAAAAHQAAAAAAAAADAAAAcmF5HQAAAAAAAAAjAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWAAAAAAAAAB4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 62, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAA4AAAAAAAAADgAAAAAAAAAWAAAAaW1wb3J0ICJ2ZW5kb3I6cmF5bGliIg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAACQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 69, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "main" + } + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ] + ] + }, + "DQAAAA4AAAAAAAAADwAAAAAAAAAAAAAADwAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABEAAAAAAAAAAAAAABEAAAAAAAAAEgAAAAAAAAAAAAAAEgAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAAAAAAFQAAAAAAAAAWAAAAAAAAAAAAAAAWAAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAZAAAAAAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAAAHAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 77, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ], + [ + "run_macro_file", + { + "file": "res://Packages/Default/Add Line in Braces.sublime-macro" + } + ] + ] + }, + "BQAAABwAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAfAAAAAAAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAAAAAAHwAAAAAAAAAgAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 84, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "\tcontext.l" + } + ], + [ + "insert", + { + "characters": "o" + } + ], + [ + "insert_completion", + { + "completion": "lsp_select_completion {\"index\":2,\"session_name\":\"odin\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "logger" + } + ], + [ + "insert", + { + "characters": " =" + } + ], + [ + "insert", + { + "characters": " " + } + ] + ] + }, + "EAAAAB8AAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAkAAAAAAAAAAAAAAAkAAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAAqAAAAAAAAAAAAAAAoAAAAAAAAACgAAAAAAAAAAgAAAGxvKAAAAAAAAAAuAAAAAAAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAxAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 87, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAADIAAAAAAAAAMwAAAAAAAAAAAAAAMwAAAAAAAAA0AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAxAAAAAAAAADEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 88, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAADMAAAAAAAAAMwAAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA0AAAAAAAAADQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 90, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAADMAAAAAAAAAMwAAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAzAAAAAAAAADQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 102, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "gg" + } + ], + [ + "insert_completion", + { + "completion": "lsp_select_completion {\"index\":2,\"session_name\":\"odin\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "logger" + } + ], + [ + "insert", + { + "characters": "." + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": " =" + } + ], + [ + "insert", + { + "characters": " " + } + ] + ] + }, + "EQAAADEAAAAAAAAAMQAAAAAAAAABAAAACTAAAAAAAAAAMAAAAAAAAAABAAAAIC8AAAAAAAAALwAAAAAAAAABAAAAPS4AAAAAAAAALgAAAAAAAAABAAAAIC0AAAAAAAAALQAAAAAAAAABAAAAciwAAAAAAAAALAAAAAAAAAABAAAAZSsAAAAAAAAAKwAAAAAAAAABAAAAZyoAAAAAAAAAKgAAAAAAAAABAAAAZyoAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAAAAAACgAAAAAAAAABAAAAGxvZ2coAAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAAAAAALgAAAAAAAAAuAAAAAAAAAAEAAAAuLgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfAAAAAAAAAB8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 106, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": " log.cr" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ] + ] + }, + "CgAAADAAAAAAAAAAMQAAAAAAAAAAAAAAMQAAAAAAAAAyAAAAAAAAAAAAAAAyAAAAAAAAADMAAAAAAAAAAAAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANgAAAAAAAAA2AAAAAAAAAAEAAAByNQAAAAAAAAA1AAAAAAAAAAEAAABjNAAAAAAAAAA0AAAAAAAAAAEAAAAu", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 113, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "\nimport" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "core:log" + } + ] + ] + }, + "EgAAAAwAAAAAAAAADQAAAAAAAAAAAAAADQAAAAAAAAAOAAAAAAAAAAAAAAAOAAAAAAAAAA8AAAAAAAAAAAAAAA8AAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAARAAAAAAAAAAAAAAARAAAAAAAAABIAAAAAAAAAAAAAABIAAAAAAAAAEwAAAAAAAAAAAAAAEwAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAABUAAAAAAAAAAAAAABUAAAAAAAAAFwAAAAAAAAAAAAAAFgAAAAAAAAAXAAAAAAAAAAAAAAAXAAAAAAAAABgAAAAAAAAAAAAAABgAAAAAAAAAGQAAAAAAAAAAAAAAGQAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABsAAAAAAAAAAAAAABsAAAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB4AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAAAAAAAAAAsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 122, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": ".creat" + } + ], + [ + "insert", + { + "characters": "e_co" + } + ], + [ + "insert_completion", + { + "completion": "lsp_select_completion {\"index\":0,\"session_name\":\"odin\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "create_console_logger(lowest := Level.Debug, opt := Default_Console_Logger_Opts, ident := \"\", allocator := context.allocator) -> Logger" + } + ] + ] + }, + "DQAAAEcAAAAAAAAARwAAAAAAAAABAAAAIEcAAAAAAAAASAAAAAAAAAAAAAAASAAAAAAAAABJAAAAAAAAAAAAAABJAAAAAAAAAEoAAAAAAAAAAAAAAEoAAAAAAAAASwAAAAAAAAAAAAAASwAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAASAAAAAAAAABIAAAAAAAAAAkAAABjcmVhdGVfY29IAAAAAAAAAF8AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA+AAAAAAAAAD4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 137, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "f" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "defer" + } + ], + [ + "insert", + { + "characters": " logger" + } + ] + ] + }, + "EAAAAF8AAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABhAAAAAAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAAAAAAGEAAAAAAAAAYQAAAAAAAAABAAAAZmEAAAAAAAAAYgAAAAAAAAAAAAAAYgAAAAAAAABjAAAAAAAAAAAAAABjAAAAAAAAAGQAAAAAAAAAAAAAAGQAAAAAAAAAZQAAAAAAAAAAAAAAZQAAAAAAAABmAAAAAAAAAAAAAABmAAAAAAAAAGcAAAAAAAAAAAAAAGcAAAAAAAAAaAAAAAAAAAAAAAAAaAAAAAAAAABpAAAAAAAAAAAAAABpAAAAAAAAAGoAAAAAAAAAAAAAAGoAAAAAAAAAawAAAAAAAAAAAAAAawAAAAAAAABsAAAAAAAAAAAAAABsAAAAAAAAAG0AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAAAAAAAAAEgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 149, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": ".dest" + } + ], + [ + "insert", + { + "characters": "roy" + } + ] + ] + }, + "CAAAAG0AAAAAAAAAbgAAAAAAAAAAAAAAbgAAAAAAAABvAAAAAAAAAAAAAABvAAAAAAAAAHAAAAAAAAAAAAAAAHAAAAAAAAAAcQAAAAAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAAAAAAByAAAAAAAAAHMAAAAAAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsAAAAAAAAAGwAAAAAAAAAAAAAAAAA8L8" + ], + [ + 154, + 1, + "nv_vi_big_d", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAGoAAAAAAAAAagAAAAAAAAALAAAAZ2VyLmRlc3Ryb3k", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABqAAAAAAAAAGoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 160, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "g.ds" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "est" + } + ], + [ + "insert_completion", + { + "completion": "lsp_select_completion {\"index\":1,\"session_name\":\"odin\"}", + "format": "command", + "keep_prefix": false, + "must_insert": false, + "trigger": "destroy_console_logger(log: Logger, allocator := context.allocator)" + } + ] + ] + }, + "CwAAAGkAAAAAAAAAaQAAAAAAAAABAAAAZ2kAAAAAAAAAagAAAAAAAAAAAAAAagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbAAAAAAAAABsAAAAAAAAAAEAAABzbAAAAAAAAABtAAAAAAAAAAAAAABtAAAAAAAAAG4AAAAAAAAAAAAAAG4AAAAAAAAAbwAAAAAAAAAAAAAAawAAAAAAAABrAAAAAAAAAAQAAABkZXN0awAAAAAAAACDAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABpAAAAAAAAAGkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 169, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "cont" + } + ], + [ + "insert_completion", + { + "completion": "context", + "format": "snippet", + "keep_prefix": false, + "must_insert": false, + "trigger": "context" + } + ], + [ + "insert", + { + "characters": ".logger" + } + ] + ] + }, + "DQAAAIIAAAAAAAAAgwAAAAAAAAAAAAAAgwAAAAAAAACEAAAAAAAAAAAAAACEAAAAAAAAAIUAAAAAAAAAAAAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAggAAAAAAAACCAAAAAAAAAAQAAABjb250ggAAAAAAAACJAAAAAAAAAAAAAACJAAAAAAAAAIoAAAAAAAAAAAAAAIoAAAAAAAAAiwAAAAAAAAAAAAAAiwAAAAAAAACMAAAAAAAAAAAAAACMAAAAAAAAAI0AAAAAAAAAAAAAAI0AAAAAAAAAjgAAAAAAAAAAAAAAjgAAAAAAAACPAAAAAAAAAAAAAACPAAAAAAAAAJAAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAAAAAAAAAIIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 179, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "\nlog.in" + } + ], + [ + "insert_completion", + { + "completion": "info", + "format": "snippet", + "keep_prefix": false, + "must_insert": false, + "trigger": "info" + } + ] + ] + }, + "DAAAAJEAAAAAAAAAkgAAAAAAAAAAAAAAkgAAAAAAAACTAAAAAAAAAAAAAACTAAAAAAAAAJUAAAAAAAAAAAAAAJIAAAAAAAAAkgAAAAAAAAABAAAACZQAAAAAAAAAlQAAAAAAAAAAAAAAlQAAAAAAAACWAAAAAAAAAAAAAACWAAAAAAAAAJcAAAAAAAAAAAAAAJcAAAAAAAAAmAAAAAAAAAAAAAAAmAAAAAAAAACZAAAAAAAAAAAAAACZAAAAAAAAAJoAAAAAAAAAAAAAAJgAAAAAAAAAmAAAAAAAAAACAAAAaW6YAAAAAAAAAJwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACJAAAAAAAAAIkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 189, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "main" + } + ], + [ + "insert", + { + "characters": " rtu" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "unning" + } + ] + ] + }, + "EgAAAJwAAAAAAAAAngAAAAAAAAAAAAAAnQAAAAAAAACfAAAAAAAAAAAAAACeAAAAAAAAAJ8AAAAAAAAAAAAAAJ8AAAAAAAAAoAAAAAAAAAAAAAAAoAAAAAAAAAChAAAAAAAAAAAAAAChAAAAAAAAAKIAAAAAAAAAAAAAAKIAAAAAAAAAowAAAAAAAAAAAAAAowAAAAAAAACkAAAAAAAAAAAAAACkAAAAAAAAAKUAAAAAAAAAAAAAAKUAAAAAAAAApgAAAAAAAAAAAAAApQAAAAAAAAClAAAAAAAAAAEAAAB1pAAAAAAAAACkAAAAAAAAAAEAAAB0pAAAAAAAAAClAAAAAAAAAAAAAAClAAAAAAAAAKYAAAAAAAAAAAAAAKYAAAAAAAAApwAAAAAAAAAAAAAApwAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKkAAAAAAAAAAAAAAKkAAAAAAAAAqgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACaAAAAAAAAAJoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 205, + 1, + "toggle_comment", + { + "block": false + }, + "AgAAAGEAAAAAAAAAZAAAAAAAAAAAAAAAMwAAAAAAAAA2AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAyAAAAAAAAAJIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 216, + 1, + "toggle_comment", + { + "block": false + }, + "AgAAAGQAAAAAAAAAZAAAAAAAAAADAAAALy8gMwAAAAAAAAAzAAAAAAAAAAMAAAAvLyA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAyAAAAAAAAAJgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 244, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAB8AAAAAAAAAIAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 246, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACAAAAAAAAAAkQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 248, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAB8AAAAAAAAAIAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 252, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAJMAAAAAAAAAkwAAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACTAAAAAAAAAJQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 255, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAJIAAAAAAAAAkwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3AAAAAAAAAHcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 265, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "DEBUGM" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "_MODE" + } + ] + ] + }, + "DQAAAGoAAAAAAAAAagAAAAAAAAAMAAAARU5BQkxFX0RFQlVHagAAAAAAAABrAAAAAAAAAAAAAABrAAAAAAAAAGwAAAAAAAAAAAAAAGwAAAAAAAAAbQAAAAAAAAAAAAAAbQAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAG8AAAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAABvAAAAAAAAAAEAAABNbwAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHEAAAAAAAAAAAAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAABzAAAAAAAAAHQAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABqAAAAAAAAAHYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 272, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAAIBAAAAAAAAAwEAAAAAAAAAAAAAAwEAAAAAAAAEAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADXAAAAAAAAANcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 273, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAAMBAAAAAAAAAwEAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAEAQAAAAAAAAQBAAAAAAAAAAAAAAAA8L8" + ], + [ + 274, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAAMBAAAAAAAARwEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 276, + 1, + "insert", + { + "characters": "\t" + }, + "AQAAAAMBAAAAAAAABAEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAADAQAAAAAAAAMBAAAAAAAAAAAAAAAA8L8" + ], + [ + 279, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAAIBAAAAAAAAAwEAAAAAAAAAAAAAAwEAAAAAAAAEAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADRAAAAAAAAANEAAAAAAAAAAAAAAAAA8L8" + ], + [ + 280, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAAMBAAAAAAAAAwEAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAEAQAAAAAAAAQBAAAAAAAAAAAAAAAA8L8" + ], + [ + 294, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAAAoBAAAAAAAAFAEAAAAAAAAMAAAARU5BQkxFX0RFQlVH", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKAQAAAAAAABYBAAAAAAAAAAAAAAAA8L8" + ], + [ + 306, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAACEAAAAAAAAAIQAAAAAAAABJAAAALy8gUmVhZHMgIk1ZX0RFQlVHIiBmcm9tIHRoZSBjb21waWxlciAtIGRlZmF1bHQgdG8gZmFsc2UgaWYgbm90IHByb3ZpZGVkCg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhAAAAAAAAAGoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 322, + 1, + "sequence", + { + "commands": + [ + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ] + ] + }, + "BQAAACoAAAAAAAAAKgAAAAAAAAABAAAARSkAAAAAAAAAKQAAAAAAAAABAAAARCgAAAAAAAAAKAAAAAAAAAABAAAATycAAAAAAAAAJwAAAAAAAAABAAAATSYAAAAAAAAAJgAAAAAAAAABAAAAXw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAArAAAAAAAAACsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 332, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAALwAAAAAAAAAwQAAAAAAAAAKAAAAREVCVUdfTU9ERQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC8AAAAAAAAAMYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 340, + 1, + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAADIAAAAAAAAAMgAAAAAAAAAIAAAATVlfREVCVUc", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAyAAAAAAAAADoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 349, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "DEBUGM" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "_MODE" + } + ] + ] + }, + "DAAAADIAAAAAAAAAMwAAAAAAAAAAAAAAMwAAAAAAAAA0AAAAAAAAAAAAAAA0AAAAAAAAADUAAAAAAAAAAAAAADUAAAAAAAAANgAAAAAAAAAAAAAANgAAAAAAAAA3AAAAAAAAAAAAAAA3AAAAAAAAADgAAAAAAAAAAAAAADcAAAAAAAAANwAAAAAAAAABAAAATTcAAAAAAAAAOAAAAAAAAAAAAAAAOAAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAAAAAADoAAAAAAAAAOwAAAAAAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAyAAAAAAAAADIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 388, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "log" + } + ] + ] + }, + "BAAAAM4AAAAAAAAAzgAAAAAAAAADAAAAZm10zgAAAAAAAADPAAAAAAAAAAAAAADPAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA0QAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADRAAAAAAAAAM4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 395, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "infor" + } + ] + ] + }, + "BgAAANIAAAAAAAAA0gAAAAAAAAAHAAAAcHJpbnRsbtIAAAAAAAAA0wAAAAAAAAAAAAAA0wAAAAAAAADUAAAAAAAAAAAAAADUAAAAAAAAANUAAAAAAAAAAAAAANUAAAAAAAAA1gAAAAAAAAAAAAAA1gAAAAAAAADXAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADSAAAAAAAAANkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 397, + 1, + "nv_vi_x", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAANYAAAAAAAAA1gAAAAAAAAABAAAAcg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADWAAAAAAAAANYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 404, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_c", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "debug" + } + ] + ] + }, + "BgAAANIAAAAAAAAA0gAAAAAAAAAEAAAAaW5mb9IAAAAAAAAA0wAAAAAAAAAAAAAA0wAAAAAAAADUAAAAAAAAAAAAAADUAAAAAAAAANUAAAAAAAAAAAAAANUAAAAAAAAA1gAAAAAAAAAAAAAA1gAAAAAAAADXAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADWAAAAAAAAANIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 435, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "#" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "//" + } + ], + [ + "insert", + { + "characters": " Pass" + } + ], + [ + "insert", + { + "characters": " i" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "from" + } + ], + [ + "insert", + { + "characters": " compile" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "r" + } + ], + [ + "insert", + { + "characters": " set" + } + ], + [ + "insert", + { + "characters": " tde" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "debug" + } + ], + [ + "insert", + { + "characters": " mode" + } + ] + ] + }, + "NgAAACAAAAAAAAAAIQAAAAAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAAAAAAAAhAAAAAAAAACEAAAAAAAAAAQAAACMhAAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAkAAAAAAAAAAAAAAAkAAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAAqAAAAAAAAAAAAAAApAAAAAAAAACkAAAAAAAAAAQAAAGkoAAAAAAAAACgAAAAAAAAAAQAAACAnAAAAAAAAACcAAAAAAAAAAQAAAHMmAAAAAAAAACYAAAAAAAAAAQAAAHMlAAAAAAAAACUAAAAAAAAAAQAAAGEkAAAAAAAAACQAAAAAAAAAAQAAAFAkAAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAAAAAAKQAAAAAAAAAqAAAAAAAAAAAAAAAqAAAAAAAAACsAAAAAAAAAAAAAACsAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAtAAAAAAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAAAAAALwAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADEAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAABAAAAIDAAAAAAAAAAMQAAAAAAAAAAAAAAMQAAAAAAAAAyAAAAAAAAAAAAAAAyAAAAAAAAADMAAAAAAAAAAAAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADkAAAAAAAAAAAAAADgAAAAAAAAAOAAAAAAAAAABAAAAZTcAAAAAAAAANwAAAAAAAAABAAAAZDYAAAAAAAAANgAAAAAAAAABAAAAdDYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADkAAAAAAAAAAAAAADkAAAAAAAAAOgAAAAAAAAAAAAAAOgAAAAAAAAA7AAAAAAAAAAAAAAA7AAAAAAAAADwAAAAAAAAAAAAAADwAAAAAAAAAPQAAAAAAAAAAAAAAPQAAAAAAAAA+AAAAAAAAAAAAAAA+AAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAQAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 481, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAACQAAAAAAAAAJAAAAAAAAAAFAAAAZnJvbSA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAkAAAAAAAAACkAAAAAAAAAAAAAAAAA8L8" + ], + [ + 492, + 1, + "insert", + { + "characters": "s" + }, + "AQAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 496, + 1, + "nv_vi_dd", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACAAAAAAAAAAIAAAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 500, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAB8AAAAAAAAAIAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 507, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAABABAAAAAAAAEQEAAAAAAAAAAAAAEQEAAAAAAAAVAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAQAAAAAAAAsBAAAAAAAAAAAAAAAA8L8" + ], + [ + 508, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAABEBAAAAAAAAEQEAAAAAAAAEAAAAICAgIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAVAQAAAAAAABUBAAAAAAAAAAAAAAAA8L8" + ], + [ + 509, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAABIBAAAAAAAA5AEAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAA8L8" + ], + [ + 513, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAANQAAAAAAAAA1AAAAAAAAAA+AAAACXdoZW4gREVCVUcgewogICAgICAgIGxvZy5kZWJ1ZygiW0RFQlVHIE1PREUgQUNUSVZFXSIpCiAgICB9Cgo", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAASAQAAAAAAANQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 515, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAKYBAAAAAAAApwEAAAAAAAAAAAAApwEAAAAAAACoAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClAQAAAAAAAKUBAAAAAAAAAAAAAAAA8L8" + ], + [ + 516, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAKcBAAAAAAAApwEAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAQAAAAAAAKgBAAAAAAAAAAAAAAAA8L8" + ], + [ + 521, + 1, + "nv_vi_d", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AQAAAHMAAAAAAAAAcwAAAAAAAABgAAAACWNvbnRleHQubG9nZ2VyID0gbG9nLmNyZWF0ZV9jb25zb2xlX2xvZ2dlcigpCglkZWZlciBsb2cuZGVzdHJveV9jb25zb2xlX2xvZ2dlcihjb250ZXh0LmxvZ2dlcikK", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 523, + 1, + "left_delete", + null, + "AQAAAHIAAAAAAAAAcgAAAAAAAAABAAAACg", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzAAAAAAAAAHMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 526, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAIUAAAAAAAAAhgAAAAAAAAAAAAAAhgAAAAAAAACIAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB/AAAAAAAAAH8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 527, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAIYAAAAAAAAAhgAAAAAAAAACAAAACQk", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACIAAAAAAAAAIgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 529, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAIYAAAAAAAAA5gAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0AAAAAAAAAHQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 532, + 1, + "nv_vi_greater_than", + { + "count": 1, + "mode": "mode_visual_line", + "register": "\"" + }, + "AgAAAIYAAAAAAAAAhwAAAAAAAAAAAAAAtQAAAAAAAAC2AAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACGAAAAAAAAAOYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 546, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_visual", + "register": "\"" + }, + "AQAAAHkAAAAAAAAAfgAAAAAAAAAKAAAAREVCVUdfTU9ERQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5AAAAAAAAAIMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 572, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "log.de" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "ebug" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "---" + } + ], + [ + "insert", + { + "characters": " DEBUG" + } + ], + [ + "insert", + { + "characters": " MODE" + } + ], + [ + "insert", + { + "characters": " ENABLED" + } + ], + [ + "insert", + { + "characters": " _" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "---" + } + ] + ] + }, + "KwAAAOIAAAAAAAAA4wAAAAAAAAAAAAAA4wAAAAAAAADlAAAAAAAAAAAAAADlAAAAAAAAAOYAAAAAAAAAAAAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAADoAAAAAAAAAOkAAAAAAAAAAAAAAOkAAAAAAAAA6gAAAAAAAAAAAAAA6gAAAAAAAADrAAAAAAAAAAAAAADqAAAAAAAAAOoAAAAAAAAAAQAAAGXqAAAAAAAAAOsAAAAAAAAAAAAAAOsAAAAAAAAA7AAAAAAAAAAAAAAA7AAAAAAAAADtAAAAAAAAAAAAAADtAAAAAAAAAO4AAAAAAAAAAAAAAO4AAAAAAAAA8AAAAAAAAAAAAAAA7wAAAAAAAADxAAAAAAAAAAAAAADwAAAAAAAAAPEAAAAAAAAAAAAAAPEAAAAAAAAA8gAAAAAAAAAAAAAA8gAAAAAAAADzAAAAAAAAAAAAAADzAAAAAAAAAPQAAAAAAAAAAAAAAPQAAAAAAAAA9QAAAAAAAAAAAAAA9QAAAAAAAAD2AAAAAAAAAAAAAAD2AAAAAAAAAPcAAAAAAAAAAAAAAPcAAAAAAAAA+AAAAAAAAAAAAAAA+AAAAAAAAAD5AAAAAAAAAAAAAAD5AAAAAAAAAPoAAAAAAAAAAAAAAPoAAAAAAAAA+wAAAAAAAAAAAAAA+wAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAP0AAAAAAAAAAAAAAP0AAAAAAAAA/gAAAAAAAAAAAAAA/gAAAAAAAAD/AAAAAAAAAAAAAAD/AAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAQEAAAAAAAAAAAAAAQEAAAAAAAACAQAAAAAAAAAAAAACAQAAAAAAAAMBAAAAAAAAAAAAAAMBAAAAAAAABAEAAAAAAAAAAAAABAEAAAAAAAAFAQAAAAAAAAAAAAAFAQAAAAAAAAYBAAAAAAAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAAAABwEAAAAAAAAIAQAAAAAAAAAAAAAHAQAAAAAAAAcBAAAAAAAAAQAAAF8HAQAAAAAAAAgBAAAAAAAAAAAAAAgBAAAAAAAACQEAAAAAAAAAAAAACQEAAAAAAAAKAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC3AAAAAAAAALcAAAAAAAAAAAAAAAAA8L8" + ], + [ + 580, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAOgBAAAAAAAA6QEAAAAAAAAAAAAA6QEAAAAAAADqAQAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADUAQAAAAAAANQBAAAAAAAAAAAAAAAA8L8" + ], + [ + 581, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAOkBAAAAAAAA6QEAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqAQAAAAAAAOoBAAAAAAAAAAAAAAAA8L8" + ], + [ + 582, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAOoBAAAAAAAArQMAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAQAAAAAAAOkBAAAAAAAAAAAAAAAA8L8" + ], + [ + 586, + 1, + "sequence", + { + "commands": + [ + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ] + ] + }, + "BQAAAPkBAAAAAAAA+QEAAAAAAAABAAAARfgBAAAAAAAA+AEAAAAAAAABAAAARPcBAAAAAAAA9wEAAAAAAAABAAAAT/YBAAAAAAAA9gEAAAAAAAABAAAATfUBAAAAAAAA9QEAAAAAAAABAAAAXw", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD6AQAAAAAAAPoBAAAAAAAAAAAAAAAA8L8" + ], + [ + 593, + 1, + "insert", + { + "characters": "\n" + }, + "AwAAAKgDAAAAAAAAqgMAAAAAAAAAAAAAqQMAAAAAAACpAwAAAAAAAAEAAAAJqQMAAAAAAACpAwAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACoAwAAAAAAAKgDAAAAAAAAAAAAAAAA8L8" + ], + [ + 601, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "//" + } + ], + [ + "insert", + { + "characters": " Check" + } + ], + [ + "insert", + { + "characters": " for" + } + ], + [ + "insert", + { + "characters": " any" + } + ], + [ + "insert", + { + "characters": " leaks!" + } + ] + ] + }, + "GQAAAOkBAAAAAAAA6gEAAAAAAAAAAAAA6gEAAAAAAADrAQAAAAAAAAAAAADrAQAAAAAAAOwBAAAAAAAAAAAAAOwBAAAAAAAA7QEAAAAAAAAAAAAA7QEAAAAAAADuAQAAAAAAAAAAAADuAQAAAAAAAO8BAAAAAAAAAAAAAO8BAAAAAAAA8AEAAAAAAAAAAAAA8AEAAAAAAADxAQAAAAAAAAAAAADxAQAAAAAAAPIBAAAAAAAAAAAAAPIBAAAAAAAA8wEAAAAAAAAAAAAA8wEAAAAAAAD0AQAAAAAAAAAAAAD0AQAAAAAAAPUBAAAAAAAAAAAAAPUBAAAAAAAA9gEAAAAAAAAAAAAA9gEAAAAAAAD3AQAAAAAAAAAAAAD3AQAAAAAAAPgBAAAAAAAAAAAAAPgBAAAAAAAA+QEAAAAAAAAAAAAA+QEAAAAAAAD6AQAAAAAAAAAAAAD6AQAAAAAAAPsBAAAAAAAAAAAAAPsBAAAAAAAA/AEAAAAAAAAAAAAA/AEAAAAAAAD9AQAAAAAAAAAAAAD9AQAAAAAAAP4BAAAAAAAAAAAAAP4BAAAAAAAA/wEAAAAAAAAAAAAA/wEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAECAAAAAAAAAAAAAAECAAAAAAAAAgIAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADpAQAAAAAAAOkBAAAAAAAAAAAAAAAA8L8" + ], + [ + 612, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "//" + } + ], + [ + "insert", + { + "characters": " -----------------------------" + } + ], + [ + "insert", + { + "characters": "-------------------------" + } + ] + ] + }, + "OwAAAM0BAAAAAAAAzgEAAAAAAAAAAAAAzgEAAAAAAADPAQAAAAAAAAAAAADPAQAAAAAAANABAAAAAAAAAAAAANABAAAAAAAA0QEAAAAAAAAAAAAA0QEAAAAAAADSAQAAAAAAAAAAAADSAQAAAAAAANMBAAAAAAAAAAAAANMBAAAAAAAA1AEAAAAAAAAAAAAA1AEAAAAAAADVAQAAAAAAAAAAAADVAQAAAAAAANYBAAAAAAAAAAAAANYBAAAAAAAA1wEAAAAAAAAAAAAA1wEAAAAAAADYAQAAAAAAAAAAAADYAQAAAAAAANkBAAAAAAAAAAAAANkBAAAAAAAA2gEAAAAAAAAAAAAA2gEAAAAAAADbAQAAAAAAAAAAAADbAQAAAAAAANwBAAAAAAAAAAAAANwBAAAAAAAA3QEAAAAAAAAAAAAA3QEAAAAAAADeAQAAAAAAAAAAAADeAQAAAAAAAN8BAAAAAAAAAAAAAN8BAAAAAAAA4AEAAAAAAAAAAAAA4AEAAAAAAADhAQAAAAAAAAAAAADhAQAAAAAAAOIBAAAAAAAAAAAAAOIBAAAAAAAA4wEAAAAAAAAAAAAA4wEAAAAAAADkAQAAAAAAAAAAAADkAQAAAAAAAOUBAAAAAAAAAAAAAOUBAAAAAAAA5gEAAAAAAAAAAAAA5gEAAAAAAADnAQAAAAAAAAAAAADnAQAAAAAAAOgBAAAAAAAAAAAAAOgBAAAAAAAA6QEAAAAAAAAAAAAA6QEAAAAAAADqAQAAAAAAAAAAAADqAQAAAAAAAOsBAAAAAAAAAAAAAOsBAAAAAAAA7AEAAAAAAAAAAAAA7AEAAAAAAADtAQAAAAAAAAAAAADtAQAAAAAAAO4BAAAAAAAAAAAAAO4BAAAAAAAA7wEAAAAAAAAAAAAA7wEAAAAAAADwAQAAAAAAAAAAAADwAQAAAAAAAPEBAAAAAAAAAAAAAPEBAAAAAAAA8gEAAAAAAAAAAAAA8gEAAAAAAADzAQAAAAAAAAAAAADzAQAAAAAAAPQBAAAAAAAAAAAAAPQBAAAAAAAA9QEAAAAAAAAAAAAA9QEAAAAAAAD2AQAAAAAAAAAAAAD2AQAAAAAAAPcBAAAAAAAAAAAAAPcBAAAAAAAA+AEAAAAAAAAAAAAA+AEAAAAAAAD5AQAAAAAAAAAAAAD5AQAAAAAAAPoBAAAAAAAAAAAAAPoBAAAAAAAA+wEAAAAAAAAAAAAA+wEAAAAAAAD8AQAAAAAAAAAAAAD8AQAAAAAAAP0BAAAAAAAAAAAAAP0BAAAAAAAA/gEAAAAAAAAAAAAA/gEAAAAAAAD/AQAAAAAAAAAAAAD/AQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAQIAAAAAAAAAAAAAAQIAAAAAAAACAgAAAAAAAAAAAAACAgAAAAAAAAMCAAAAAAAAAAAAAAMCAAAAAAAABAIAAAAAAAAAAAAABAIAAAAAAAAFAgAAAAAAAAAAAAAFAgAAAAAAAAYCAAAAAAAAAAAAAAYCAAAAAAAABwIAAAAAAAAAAAAABwIAAAAAAAAIAgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADMAQAAAAAAAMwBAAAAAAAAAAAAAAAA8L8" + ], + [ + 619, + 1, + "nv_vi_paste", + { + "before_cursor": false, + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACUCAAAAAAAAYAIAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAkAgAAAAAAACQCAAAAAAAAAAAAAAAA8L8" + ], + [ + 622, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAAgCAAAAAAAACQIAAAAAAAAAAAAACQIAAAAAAAAKAgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADPAQAAAAAAAM8BAAAAAAAAAAAAAAAA8L8" + ], + [ + 623, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAAAkCAAAAAAAACQIAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKAgAAAAAAAAoCAAAAAAAAAAAAAAAA8L8" + ], + [ + 625, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAACUCAAAAAAAAJgIAAAAAAAAAAAAAJgIAAAAAAAAnAgAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAlAgAAAAAAACUCAAAAAAAAAAAAAAAA8L8" + ], + [ + 626, + 1, + "nv_enter_normal_mode", + { + "mode": "mode_insert" + }, + "AQAAACYCAAAAAAAAJgIAAAAAAAABAAAACQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAnAgAAAAAAACcCAAAAAAAAAAAAAAAA8L8" + ], + [ + 648, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "import" + } + ], + [ + "insert", + { + "characters": " :" + } + ], + [ + "left_delete", + null + ], + [ + "insert_snippet", + { + "contents": "\"$0\"" + } + ], + [ + "insert", + { + "characters": "core:meme" + } + ] + ] + }, + "FAAAAB8AAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAAAAAAIwAAAAAAAAAkAAAAAAAAAAAAAAAkAAAAAAAAACUAAAAAAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACgAAAAAAAAAAAAAACcAAAAAAAAAJwAAAAAAAAABAAAAOicAAAAAAAAAKQAAAAAAAAAAAAAAKAAAAAAAAAApAAAAAAAAAAAAAAApAAAAAAAAACoAAAAAAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAAAAAC0AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 651, + 1, + "nv_vi_x", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAADAAAAAAAAAAMAAAAAAAAAABAAAAZQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAA8L8" + ] + ] + }, + { + "file": "src/game.odin", + "file_size": 142, + "file_write_time": 134332288175077403, + "settings": + { + "buffer_size": 142, + "encoding": "UTF-8", + "line_ending": "Unix" + }, + "undo_stack": + [ + [ + 4, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "package" + } + ], + [ + "insert", + { + "characters": " game" + } + ] + ] + }, + "DAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAkAAAAAAAAAAAAAAAkAAAAAAAAACgAAAAAAAAAAAAAACgAAAAAAAAALAAAAAAAAAAAAAAALAAAAAAAAAAwAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 11, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "\n" + } + ] + ] + }, + "AgAAAAwAAAAAAAAADQAAAAAAAAAAAAAADQAAAAAAAAAOAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAALAAAAAAAAAAsAAAAAAAAAAAAAAAAA8L8" + ], + [ + 21, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "\ngame_i" + } + ], + [ + "insert", + { + "characters": "nit" + } + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ] + ] + }, + "EwAAAA0AAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEQAAAAAAAAAAAAAAEQAAAAAAAAASAAAAAAAAAAAAAAASAAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAVAAAAAAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAAAAAAFwAAAAAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAABkAAAAAAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAAAAAAGgAAAAAAAAAbAAAAAAAAAAAAAAAbAAAAAAAAABwAAAAAAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAIQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAANAAAAAAAAAA0AAAAAAAAAAAAAAAAA8L8" + ], + [ + 27, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ], + [ + "run_macro_file", + { + "file": "res://Packages/Default/Add Line in Braces.sublime-macro" + } + ] + ] + }, + "BQAAACEAAAAAAAAAIgAAAAAAAAAAAAAAIgAAAAAAAAAkAAAAAAAAAAAAAAAjAAAAAAAAACQAAAAAAAAAAAAAACQAAAAAAAAAJQAAAAAAAAAAAAAAJAAAAAAAAAAlAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 31, + 2, + "nv_vi_big_j", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AgAAAA4AAAAAAAAAJAAAAAAAAAAXAAAAZ2FtZV9pbml0IDo6IHByb2MoKSB7CgkjAAAAAAAAACUAAAAAAAAAAwAAACAKfQ", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ], + [ + 37, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "\ng" + } + ], + [ + "left_delete", + null + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "game" + } + ] + ] + }, + "CQAAACUAAAAAAAAAJgAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAnAAAAAAAAACgAAAAAAAAAAAAAACcAAAAAAAAAJwAAAAAAAAABAAAAZyYAAAAAAAAAJgAAAAAAAAABAAAACiYAAAAAAAAAJwAAAAAAAAAAAAAAJwAAAAAAAAAoAAAAAAAAAAAAAAAoAAAAAAAAACkAAAAAAAAAAAAAACkAAAAAAAAAKgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAkAAAAAAAAACQAAAAAAAAAAAAAAAAA8L8" + ], + [ + 48, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_big_a", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "_should_run" + } + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ] + ] + }, + "FgAAACoAAAAAAAAAKwAAAAAAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAAAAAC0AAAAAAAAALgAAAAAAAAAAAAAALgAAAAAAAAAvAAAAAAAAAAAAAAAvAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAAMQAAAAAAAAAyAAAAAAAAAAAAAAAyAAAAAAAAADMAAAAAAAAAAAAAADMAAAAAAAAANAAAAAAAAAAAAAAANAAAAAAAAAA1AAAAAAAAAAAAAAA1AAAAAAAAADYAAAAAAAAAAAAAADYAAAAAAAAANwAAAAAAAAAAAAAANwAAAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAADkAAAAAAAAAAAAAADkAAAAAAAAAOgAAAAAAAAAAAAAAOgAAAAAAAAA7AAAAAAAAAAAAAAA7AAAAAAAAADwAAAAAAAAAAAAAADwAAAAAAAAAPQAAAAAAAAAAAAAAPQAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAmAAAAAAAAACYAAAAAAAAAAAAAAAAA8L8" + ], + [ + 52, + 1, + "nv_vi_x", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACMAAAAAAAAAIwAAAAAAAAABAAAAIA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAjAAAAAAAAACMAAAAAAAAAAAAAAAAA8L8" + ], + [ + 55, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAEEAAAAAAAAAQgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA6AAAAAAAAADoAAAAAAAAAAAAAAAAA8L8" + ], + [ + 65, + 1, + "sequence", + { + "commands": + [ + [ + "insert", + { + "characters": "game_update:" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ] + ] + }, + "GAAAAEIAAAAAAAAAQwAAAAAAAAAAAAAAQwAAAAAAAABEAAAAAAAAAAAAAABEAAAAAAAAAEUAAAAAAAAAAAAAAEUAAAAAAAAARgAAAAAAAAAAAAAARgAAAAAAAABHAAAAAAAAAAAAAABHAAAAAAAAAEgAAAAAAAAAAAAAAEgAAAAAAAAASQAAAAAAAAAAAAAASQAAAAAAAABKAAAAAAAAAAAAAABKAAAAAAAAAEsAAAAAAAAAAAAAAEsAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAABNAAAAAAAAAAAAAABNAAAAAAAAAE4AAAAAAAAAAAAAAE0AAAAAAAAATQAAAAAAAAABAAAAOk0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAABPAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAUQAAAAAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAAAAAABSAAAAAAAAAFMAAAAAAAAAAAAAAFMAAAAAAAAAVAAAAAAAAAAAAAAAVAAAAAAAAABVAAAAAAAAAAAAAABVAAAAAAAAAFcAAAAAAAAAAAAAAFcAAAAAAAAAWAAAAAAAAAAAAAAAWAAAAAAAAABaAAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABCAAAAAAAAAEIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 78, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "game_f" + } + ], + [ + "left_delete", + null + ], + [ + "insert", + { + "characters": "draw" + } + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ] + ] + }, + "FwAAAFoAAAAAAAAAWwAAAAAAAAAAAAAAWwAAAAAAAABcAAAAAAAAAAAAAABcAAAAAAAAAF0AAAAAAAAAAAAAAF0AAAAAAAAAXgAAAAAAAAAAAAAAXgAAAAAAAABfAAAAAAAAAAAAAABfAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAYQAAAAAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAEAAABmYAAAAAAAAABhAAAAAAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAAAAAAGIAAAAAAAAAYwAAAAAAAAAAAAAAYwAAAAAAAABkAAAAAAAAAAAAAABkAAAAAAAAAGUAAAAAAAAAAAAAAGUAAAAAAAAAZgAAAAAAAAAAAAAAZgAAAAAAAABnAAAAAAAAAAAAAABnAAAAAAAAAGgAAAAAAAAAAAAAAGgAAAAAAAAAaQAAAAAAAAAAAAAAaQAAAAAAAABqAAAAAAAAAAAAAABqAAAAAAAAAGsAAAAAAAAAAAAAAGsAAAAAAAAAbAAAAAAAAAAAAAAAbAAAAAAAAABuAAAAAAAAAAAAAABuAAAAAAAAAG8AAAAAAAAAAAAAAG8AAAAAAAAAcQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABYAAAAAAAAAFgAAAAAAAAAAAAAAAAA8L8" + ], + [ + 90, + 1, + "sequence", + { + "commands": + [ + [ + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + } + ], + [ + "insert", + { + "characters": "game_close" + } + ], + [ + "insert", + { + "characters": " ::" + } + ], + [ + "insert", + { + "characters": " proc" + } + ], + [ + "insert_snippet", + { + "contents": "($0)" + } + ], + [ + "move", + { + "by": "characters", + "forward": true + } + ], + [ + "insert", + { + "characters": " " + } + ], + [ + "insert_snippet", + { + "contents": "{$0}" + } + ] + ] + }, + "FgAAAHEAAAAAAAAAcgAAAAAAAAAAAAAAcgAAAAAAAABzAAAAAAAAAAAAAABzAAAAAAAAAHQAAAAAAAAAAAAAAHQAAAAAAAAAdQAAAAAAAAAAAAAAdQAAAAAAAAB2AAAAAAAAAAAAAAB2AAAAAAAAAHcAAAAAAAAAAAAAAHcAAAAAAAAAeAAAAAAAAAAAAAAAeAAAAAAAAAB5AAAAAAAAAAAAAAB5AAAAAAAAAHoAAAAAAAAAAAAAAHoAAAAAAAAAewAAAAAAAAAAAAAAewAAAAAAAAB8AAAAAAAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAAAAAAH0AAAAAAAAAfgAAAAAAAAAAAAAAfgAAAAAAAAB/AAAAAAAAAAAAAAB/AAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgQAAAAAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAAAAAACCAAAAAAAAAIMAAAAAAAAAAAAAAIMAAAAAAAAAhAAAAAAAAAAAAAAAhAAAAAAAAACGAAAAAAAAAAAAAACGAAAAAAAAAIcAAAAAAAAAAAAAAIcAAAAAAAAAiQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABvAAAAAAAAAG8AAAAAAAAAAAAAAAAA8L8" + ], + [ + 94, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAHEAAAAAAAAAcgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABwAAAAAAAAAHAAAAAAAAAAAAAAAAAA8L8" + ], + [ + 97, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAFoAAAAAAAAAWwAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABCAAAAAAAAAEIAAAAAAAAAAAAAAAAA8L8" + ], + [ + 100, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAAEEAAAAAAAAAQgAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAlAAAAAAAAACUAAAAAAAAAAAAAAAAA8L8" + ], + [ + 103, + 1, + "nv_vi_o", + { + "count": 1, + "mode": "mode_internal_normal", + "register": "\"" + }, + "AQAAACQAAAAAAAAAJQAAAAAAAAAAAAAA", + "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOAAAAAAAAAA4AAAAAAAAAAAAAAAAA8L8" + ] + ] + } + ], + "build_system": "Run Build Script", + "build_system_choices": + [ + [ + [ + [ + "Run Build Script", + "" + ], + [ + "Run Build Script", + "Run with Arguments..." + ], + [ + "Run Build Script", + "Build Only (-b)" + ], + [ + "Run Build Script", + "Optimized (-o)" + ], + [ + "Run Build Script", + "Debug in LLDB (-d)" + ], + [ + "Run Build Script", + "Valgrind (-v)" + ], + [ + "Run Build Script", + "Clean (-c)" + ] + ], + [ + "Run Build Script", + "" + ] + ] + ], + "build_varint": "", + "command_palette": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "ter", + "Open Terminal Here…" + ], + [ + "ke", + "Preferences: Key Bindings" + ], + [ + "sett", + "Preferences: Settings" + ], + [ + "lsp ser", + "LSP: Restart Server" + ], + [ + "term", + "Open Terminal Here…" + ], + [ + "termi", + "Open Terminal Here…" + ], + [ + "ins", + "Package Control: Install Package" + ], + [ + "theme", + "UI: Customize Theme" + ], + [ + "inst", + "Package Control: Install Package" + ], + [ + "install ", + "Package Control: Install Package" + ], + [ + "settings", + "Preferences: Settings" + ], + [ + "list p", + "Package Control: List Packages" + ], + [ + "insta", + "Package Control: Install Package" + ], + [ + "install pa", + "Package Control: Install Package" + ], + [ + "install", + "Package Control: Install Package" + ], + [ + "package", + "Enable Package Control" + ] + ], + "width": 0.0 + }, + "console": + { + "height": 124.0, + "history": + [ + ] + }, + "distraction_free": + { + "menu_visible": true, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "status_bar_visible": false + }, + "expanded_folders": + [ + "/home/jason/Projects/Games/pong_raylib", + "/home/jason/Projects/Games/pong_raylib/src" + ], + "file_history": + [ + "/home/jason/Projects/Games/pong_raylib/build.sh", + "/home/jason/Projects/dotfiles/install.sh", + "/home/jason/Projects/dotfiles/config/kitty/kitty.conf", + "/home/jason/Projects/dotfiles/config/bash/bashrc", + "/home/jason/Projects/dotfiles/README.md", + "/home/jason/Projects/dotfiles/scripts/installs/install_odin", + "/home/jason/Projects/dotfiles/scripts/installs/install_raylib_deps", + "/home/jason/Projects/dotfiles/scripts/installs/install_php", + "/home/jason/Projects/Godot/test-struct/src/entities/player/player.gd", + "/home/jason/Projects/raylib_reference/src/map.odin" + ], + "find": + { + "height": 54.0 + }, + "find_in_files": + { + "height": 143.0, + "where_history": + [ + ] + }, + "find_state": + { + "case_sensitive": false, + "find_history": + [ + ], + "highlight": true, + "in_selection": false, + "preserve_case": false, + "regex": false, + "replace_history": + [ + ], + "reverse": false, + "scrollbar_highlights": true, + "show_context": true, + "use_buffer2": true, + "use_gitignore": true, + "whole_word": false, + "wrap": true + }, + "groups": + [ + { + "sheets": + [ + { + "buffer": 0, + "file": "build.sh", + "semi_transient": false, + "settings": + { + "buffer_size": 2416, + "regions": + { + }, + "selection": + [ + [ + 1486, + 1486 + ] + ], + "settings": + { + "_nv_visual_sel_mode": "mode_visual", + "lsp_uri": "file:///home/jason/Projects/Games/pong_raylib/build.sh", + "syntax": "Packages/ShellScript/Bash.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 2079.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 1, + "file": "pong_odin.sublime-project", + "semi_transient": false, + "settings": + { + "buffer_size": 806, + "regions": + { + }, + "selection": + [ + [ + 14, + 14 + ] + ], + "settings": + { + "_nv_visual_sel_mode": "mode_visual_line", + "highlight_line": false, + "lsp_uri": "file:///home/jason/Projects/Games/pong_raylib/pong_odin.sublime-project", + "spell_check": true, + "syntax": "Packages/JSON/JSON.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 2, + "file": "src/main.odin", + "selected": true, + "semi_transient": false, + "settings": + { + "buffer_size": 1101, + "regions": + { + }, + "selection": + [ + [ + 48, + 48 + ] + ], + "settings": + { + "_nv_visual_sel_mode": "mode_visual_line", + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".>#\"/:", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "odin" + } + ], + "lsp_active": true, + "lsp_uri": "file:///home/jason/Projects/Games/pong_raylib/src/main.odin", + "show_definitions": false, + "syntax": "Packages/Odin/Odin.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 3, + "file": "src/game.odin", + "semi_transient": false, + "settings": + { + "buffer_size": 142, + "regions": + { + }, + "selection": + [ + [ + 37, + 37 + ] + ], + "settings": + { + "auto_complete_triggers": + [ + { + "characters": "<", + "selector": "text.html, text.xml" + }, + { + "rhs_empty": true, + "selector": "punctuation.accessor" + }, + { + "characters": ".>#\"/:", + "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", + "server": "odin" + } + ], + "lsp_active": true, + "lsp_uri": "file:///home/jason/Projects/Games/pong_raylib/src/game.odin", + "show_definitions": false, + "syntax": "Packages/Odin/Odin.sublime-syntax" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "stack_multiselect": false, + "type": "text" + } + ] + } + ], + "incremental_find": + { + "height": 42.0 + }, + "input": + { + "height": 54.0 + }, + "layout": + { + "cells": + [ + [ + 0, + 0, + 1, + 1 + ] + ], + "cols": + [ + 0.0, + 1.0 + ], + "rows": + [ + 0.0, + 1.0 + ] + }, + "menu_visible": false, + "output.LSP Log Panel": + { + "height": 0.0, + "history": + [ + ] + }, + "output.diagnostics": + { + "height": 0.0, + "history": + [ + ] + }, + "output.exec": + { + "height": 584.0, + "history": + [ + ] + }, + "output.find_results": + { + "height": 0.0, + "history": + [ + ] + }, + "output.mdpopups": + { + "height": 0.0, + "history": + [ + ] + }, + "pinned_build_system": "Run Build Script", + "project": "pong_odin.sublime-project", + "replace": + { + "height": 80.0 + }, + "save_all_on_build": true, + "select_file": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "main", + "src/main.odin" + ], + [ + "mai", + "src/main.odin" + ], + [ + "bu", + "build.sh" + ], + [ + "", + "untitled" + ], + [ + "ins", + "install.sh" + ], + [ + "odin", + "scripts/installs/install_odin" + ], + [ + "rayl", + "scripts/installs/install_raylib_deps" + ], + [ + "install_odi", + "scripts/installs/install_odin" + ] + ], + "width": 0.0 + }, + "select_project": + { + "height": 500.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 380.0 + }, + "select_symbol": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "selected_group": 0, + "settings": + { + "_vintageous_reset_during_init": true, + "lsp_show_inlay_hints": false + }, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "side_bar_width": 271.0, + "status_bar_visible": true, + "template_settings": + { + } +} diff --git a/src/game.odin b/src/game.odin new file mode 100644 index 0000000..cd64368 --- /dev/null +++ b/src/game.odin @@ -0,0 +1,44 @@ +package game + +import rl "vendor:raylib" + +WINDOW_TITLE :: "Pong" +WINDOW_WIDTH :: 2560 +WINDOW_HEIGHT :: 1440 + +State :: enum { + IN_GAME, + MENU, + LOADING, + PAUSED, + FINISHED +} + +Game :: struct { + state: State +} + +// @NOTE: procs ie: game_init, game should run etc is a convention to work with wasm +game_should_run :: proc() -> bool { return !rl.WindowShouldClose( )} + +game_init :: proc(game: ^Game) { + rl.InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE) + rl.SetTargetFPS(60) + + game.state = .IN_GAME +} + +game_update :: proc(game: ^Game) { + // get delta time for frame + dt := rl.GetFrameTime() +} + +game_render :: proc(game: ^Game) { + rl.BeginDrawing() + rl.ClearBackground(rl.DARKGRAY) + rl.EndDrawing() +} + +game_quit :: proc(game: ^Game) { + rl.CloseWindow() +} \ No newline at end of file diff --git a/src/main.odin b/src/main.odin new file mode 100644 index 0000000..9385176 --- /dev/null +++ b/src/main.odin @@ -0,0 +1,49 @@ +package game + +import "core:log" +import "core:mem" + +// compiler sets debug mode +DEBUG :: #config(DEBUG_MODE, false) + +main :: proc() { + when DEBUG { + context.logger = log.create_console_logger() + defer log.destroy_console_logger(context.logger) + log.debug("--- DEBUG MODE ENABLED ---") + + track: mem.Tracking_Allocator + mem.tracking_allocator_init(&track, context.allocator) + defer mem.tracking_allocator_destroy(&track) + context.allocator = mem.tracking_allocator(&track) + } + // ------------------------------------------------------ + + game := Game{} + + game_init(&game) + + for game_should_run() { + game_update(&game) + game_render(&game) + } + + game_quit(&game) + + // ------------------------------------------------------ + // Check for any leaks! + when DEBUG { + if len(track.allocation_map) > 0 { + log.errorf("\nMEMORY LEAKS: %v allocation(s)", len(track.allocation_map)) + for _, entry in track.allocation_map { + log.errorf(" %v bytes @ %v", entry.size, entry.location) + } + } + if len(track.bad_free_array) > 0 { + log.errorf("\nBAD FREES: %v", len(track.bad_free_array)) + for entry in track.bad_free_array { + log.errorf(" %v @ %v", entry.memory, entry.location) + } + } + } +} \ No newline at end of file