vg2 port: build script and resource loading
[fishladder.git] / marblecomp.c
diff --git a/marblecomp.c b/marblecomp.c
new file mode 100644 (file)
index 0000000..d9f8cd8
--- /dev/null
@@ -0,0 +1,94 @@
+#define VG_GAME
+#define VG_AUDIO_FORCE_COMPRESSED
+#define VG_2D
+#define VG_LOG_SOURCE_INFO
+#define VG_TIMESTEP_FIXED (1.0/60.0)
+
+#ifndef VG_RELEASE
+ #define VG_DEVWINDOW
+#endif
+
+#define SDL_MAIN_HANDLED
+
+#include "vg/vg.h"
+#include "fishladder_vg1.c"
+
+struct {
+   enum mc_op {
+      k_mc_op_none,
+      k_mc_op_clientloading
+   }
+   op;
+}
+static marblecomp = { .op = k_mc_op_clientloading };
+
+int main( int argc, char *argv[] ){
+   vg_mem.use_libc_malloc = 0;
+   vg_set_mem_quota( 80*1024*1024 );
+   vg_enter( argc, argv, "Voyager Game Engine" ); 
+   return 0;
+}
+
+static void vg_launch_opt(void){
+   const char *arg;
+}
+
+static void vg_preload(void){
+vg_info(" Copyright  .        . .       -----, ,----- ,---.   .---.  \n" );
+vg_info(" 2021-2023  |\\      /| |           /  |      |    | |    /| \n" );
+vg_info("            | \\    / | +--        /   +----- +---'  |   / | \n" );
+vg_info("            |  \\  /  | |         /    |      |   \\  |  /  | \n" );
+vg_info("            |   \\/   | |        /     |      |    \\ | /   | \n" );
+vg_info("            '        ' '--' [] '----- '----- '     ' '---'  " 
+        "SOFTWARE\n" );
+}
+
+static void async_call_ready( void *payload, u32 size ){
+   marblecomp.op = k_mc_op_none;
+}
+
+static void vg_load(void){
+   /* --------------------- */
+   vg_bake_shaders();
+   vg_async_call( async_call_ready, NULL, 0 );
+}
+
+static void vg_pre_update(void){
+   if( marblecomp.op == k_mc_op_clientloading ) return;
+}
+
+static void vg_fixed_update(void){
+   if( marblecomp.op == k_mc_op_clientloading ) return;
+}
+
+static void vg_post_update(void){
+   if( marblecomp.op == k_mc_op_clientloading ) return;
+}
+
+static void vg_framebuffer_resize( int w, int h ){
+}
+
+static void vg_render(void){
+   if( marblecomp.op == k_mc_op_clientloading ){
+      _vg_loader_render();
+      return;
+   }
+
+   glBindFramebuffer( GL_FRAMEBUFFER, 0 );
+   glViewport( 0,0, vg.window_x, vg.window_y );
+   glDisable( GL_DEPTH_TEST );
+   glDisable( GL_BLEND );
+
+   glClearColor( 0.0f, 0.3f, 0.5f, 0.0f );
+   glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
+
+   m4x4_identity( vg.pv );
+
+   glDisable(GL_BLEND);
+   glDisable(GL_DEPTH_TEST);
+   vg_lines_drawall();
+}
+
+static void vg_gui(void){
+   if( marblecomp.op == k_mc_op_clientloading ) return;
+}