drawing a purple rectangle.
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 4 May 2021 19:52:19 +0000 (14:52 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 4 May 2021 19:52:19 +0000 (14:52 -0500)
site/index.html
site/js/onyx-loader.js
src/build.onyx
src/tower.onyx

index eed42448ccd342edb209fc95aae9f92881aa4318..1211287728a9184ece0ccb8a3b38abc68a4abcaa 100644 (file)
@@ -20,6 +20,6 @@
     </head>
 
     <body>
-        <canvas id="simulation-canvas">This browser does not support the Canvas API.</canvas>
+        <canvas id="game">This browser does not support the Canvas API.</canvas>
     </body>
 </html>
index bece7b7ae0e2bde2a28376a656cab8695fe96bb9..a48a38acfd9880f61a852f73b5155e802aaddcf9 100644 (file)
@@ -28,8 +28,6 @@ function launch_onyx_program(script_path, call_start) {
         return WebAssembly.instantiate(wasm_code, import_object);
     })
     .then(function(wasm_module) {
-        // @ROBUSTNESS: This only allows for 1 Onyx program to running at a time in the window.
-        // This probably iesn't a limitation that needs to be worried about, but it is a limitation.
         window.ONYX_MEMORY = wasm_module.instance.exports.memory;
         window.ONYX_INSTANCE = wasm_module.instance;
 
index a2d32727109e86efee53501a136c10df6e3c3ae6..3869d2055af9adec52ad60bd16e1b6afb6941014 100644 (file)
@@ -6,5 +6,6 @@
 
 #load "modules/webgl2/module"
 #load "modules/js_events/module"
+#load "modules/immediate_mode/module"
 
 #load "src/tower"
index 536bfb01cb3363722ad36be0090330ca013c71aa..7f2ed0984cbdb9cc06c124fccfcbb51503a25b77 100644 (file)
@@ -1,6 +1,45 @@
 
 use package core
 
+#private_file events :: package js_events
+#private_file gl     :: package gl
+#private_file gfx    :: package immediate_mode
+
 main :: (args: [] cstr) {
     println("Hello World!");
+
+    gl.init("game");
+    events.init();
+    gfx.immediate_renderer_init();
+
+    start_loop :: () -> void #foreign "game" "start_loop" ---
+    start_loop();
+}
+
+#export "loop" () {
+    poll_events();
+    draw();
+}
+
+poll_events :: () {
+    for event: events.consume() do switch event.kind {
+        case .MouseDown do println("Mouse was down!");
+        
+        case .Resize {
+            printf("Window was resized to: %i %i\n", event.resize.width, event.resize.height);
+
+            gl.setSize(event.resize.width, event.resize.height);
+            gl.viewport(0, 0, event.resize.width, event.resize.height);
+            gfx.use_ortho_projection(0, ~~event.resize.width, 0, ~~event.resize.height);
+        }
+    }
+}
+
+draw :: () {
+    gl.clearColor(0, 0, 0, 1);
+    gl.clear(gl.COLOR_BUFFER_BIT);
+
+    gfx.quad(.{ 0, 0 }, .{ 400, 400 }, color=.{ 1, 0, 1 });
+    gfx.flush();
 }
+