updated to use 'type_info' and compiler vimscript master
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 26 Jun 2021 21:05:08 +0000 (16:05 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 26 Jun 2021 21:05:08 +0000 (16:05 -0500)
build.sh
compiler.vim [new file with mode: 0644]
src/tower.onyx

index 1bbe97e2c6eb7048d93d2b49d4a198cd4dd8f998..0c4b168915b6f2db919f3e8af637c16c83320654 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -3,13 +3,15 @@
 TARGET=site/tower.wasm
 ONYX_INSTALLATION_FOLDER="/home/brendan/dev/c/onyx"
 
 TARGET=site/tower.wasm
 ONYX_INSTALLATION_FOLDER="/home/brendan/dev/c/onyx"
 
-echo "Starting build at $(date)"
+echo "Starting build at $(date)"
 
 # Copy relative javascript modules from Onyx source directory
 cp "$ONYX_INSTALLATION_FOLDER/bin/onyx-loader.js" ./site/js/onyx-loader.js
 cp "$ONYX_INSTALLATION_FOLDER/modules/webgl2/webgl2.js" ./site/js/webgl2.js
 cp "$ONYX_INSTALLATION_FOLDER/modules/js_events/js_events.js" ./site/js/js_events.js
 
 
 # Copy relative javascript modules from Onyx source directory
 cp "$ONYX_INSTALLATION_FOLDER/bin/onyx-loader.js" ./site/js/onyx-loader.js
 cp "$ONYX_INSTALLATION_FOLDER/modules/webgl2/webgl2.js" ./site/js/webgl2.js
 cp "$ONYX_INSTALLATION_FOLDER/modules/js_events/js_events.js" ./site/js/js_events.js
 
-onyx -r js -V --use-post-mvp-features -o $TARGET \
+[ ! -z "$1" ] && COLOR_FLAG=--no-colors
+
+onyx -r js --use-post-mvp-features -o $TARGET $COLOR_FLAG --doc docs/source_reference.txt \
     src/build.onyx \
     -I "$ONYX_INSTALLATION_FOLDER" # Include the folder that contains the "modules"
     src/build.onyx \
     -I "$ONYX_INSTALLATION_FOLDER" # Include the folder that contains the "modules"
diff --git a/compiler.vim b/compiler.vim
new file mode 100644 (file)
index 0000000..10636ef
--- /dev/null
@@ -0,0 +1,2 @@
+set errorformat=%E\(%f\:%l\\,%c\)\ \%m,%C%.%#
+set makeprg=./build.sh\ something
index 845289007101db3730344e637bcd07f7f7e29042..5cc94a6797e15f9459c27cf46092b40e75adf3e4 100644 (file)
@@ -111,7 +111,7 @@ counter := 0;
 test_button_count := 1;
 
 check_buttons : [10] bool
 test_button_count := 1;
 
 check_buttons : [10] bool
-slider_values : [7] f32
+slider_values : [7] f32 = f32.[ 1.0f, 2.0f, 3.0, 4.0, 5.0, 6.0, 7.0 ];
 
 radio_options :: enum {
     Apples;
 
 radio_options :: enum {
     Apples;
@@ -182,7 +182,7 @@ draw :: () {
         for ^value: slider_values {
             slider, slider_panel = split_horizontal(slider_panel, top_height=48);
             slider = padding(slider, left=12, right=12, top=4);
         for ^value: slider_values {
             slider, slider_panel = split_horizontal(slider_panel, top_height=48);
             slider = padding(slider, left=12, right=12, top=4);
-            ui.slider(slider, value, 0, ~~(10 + i), "Test Slider", theme=^slider_theme, increment=i);
+            ui.slider(slider, value, ~~ -(10 + i), ~~(10 + i), theme=^slider_theme, increment=i);
 
             ui.draw_text(padding(slider, left=8, top=8), conv.str_format("Slider %i: %f", ~~str_buffer, i, *value));
             i += 1;
 
             ui.draw_text(padding(slider, left=8, top=8), conv.str_format("Slider %i: %f", ~~str_buffer, i, *value));
             i += 1;
@@ -191,20 +191,15 @@ draw :: () {
         }
 
 
         }
 
 
-        // When enum metadata is embedded in the binary file, this can become a for loop.
         radio: ui.Rectangle;
         radio: ui.Rectangle;
-        radio, slider_panel = split_horizontal(slider_panel, top_height=32);
-        ui.radio(padding(radio, left=12), ^radio_value, .Apples, "Apples");
 
 
-        radio, slider_panel = split_horizontal(slider_panel, top_height=32);
-        ui.radio(padding(radio, left=12), ^radio_value, .Bananas, "Bananas");
-
-        radio, slider_panel = split_horizontal(slider_panel, top_height=32);
-        ui.radio(padding(radio, left=12), ^radio_value, .Coconut, "Coconut");
-
-        radio, slider_panel = split_horizontal(slider_panel, top_height=32);
-        ui.radio(padding(radio, left=12), ^radio_value, .Apples, "Another Apples");
+        i = 0;
+        for v: (cast(^type_info.Type_Info_Enum) type_info.get_type_info(radio_options)).members {
+            radio, slider_panel = split_horizontal(slider_panel, top_height=32);
+            ui.radio(padding(radio, left=12), ^radio_value, ~~v.value, v.name, increment=i);
 
 
+            i += 1;
+        }
 
         textbox_part: ui.Rectangle;
         textbox_part, slider_panel = split_horizontal(slider_panel, top_height=72, padding=8);
 
         textbox_part: ui.Rectangle;
         textbox_part, slider_panel = split_horizontal(slider_panel, top_height=72, padding=8);