-#include "vg/vg.h"
#include "vg/vg_platform.h"
#include "vg/vg_log.h"
#include "vg/vg_opt.h"
* Compilation specifications
* -------------------------------------------------------------------------- */
-void build_game_content(void){
- const char *project_name = vg_build.project_name.buffer;
- vg_low( "Building game content structure\n" );
- vg_symlink( "textures_qoi", "textures" );
- vg_symlink( "maps", "maps" );
- vg_symlink( "sound", "sound" );
- vg_syscall( "mkdir -p bin/%s/cfg", project_name );
- vg_syscall( "mkdir -p bin/%s/sav", project_name );
+void build_game_content( struct vg_project *proj )
+{
+ vg_project_new_target( proj, "Content files", k_obj_type_none );
+ vg_symlink( proj, "textures_qoi", "textures" );
+ vg_symlink( proj, "maps", "maps" );
+ vg_symlink( proj, "sound", "sound" );
+ vg_syscall( "mkdir -p bin/%s/cfg", proj->uid.buffer );
+ vg_syscall( "mkdir -p bin/%s/sav", proj->uid.buffer );
}
void build_shaders(void);
-void compile_game( int binaries, int content ){
+void build_game_bin( struct vg_project *proj )
+{
static int meta = 0;
if( !meta ){
meta = 1;
vg_low( "\n\n" );
}
- vg_build_new( "marblecomp" );
-
- if( binaries ){
- vg_add_source( "marblecomp.c" );
- vg_add_graphics();
- vg_add_game_stuff();
- vg_compile( "fishladder" );
- }
-
- if( content )
- build_game_content();
+ vg_project_new_target( proj, "fishladder", k_obj_type_exe );
+ vg_add_engine( proj, &(struct vg_engine_config)
+ {
+ .fixed_update_hz = 60,
+ .legacy_support_vg_msg1 = 0,
+ .log_source_info = 1,
+ .steam_api = 1,
+ .use_3d = 0,
+ .custom_game_settings = 1
+ });
+
+ vg_add_source( proj, "marblecomp.c" );
+ vg_compile_project( proj );
}
/*
void s_release_all(void){
vg_info( "running script: s_release_all(void)\n" );
- vg_build.optimization = 3;
- vg_build.fresh = 1;
- vg_build.arch = k_architecture_x86_64;
- vg_build.compiler = k_compiler_zigcc;
- vg_build.libc = k_libc_version_2_23;
-
- /* binaries for windows and linux */
- vg_build.platform = k_platform_windows;
- compile_game( 1, 1 );
- vg_tarball_last_project();
- vg_success( "Completed 1/2\n" );
-
- vg_build.platform = k_platform_linux;
- compile_game( 1, 1 );
- vg_tarball_last_project();
- vg_success( "Completed 2/2\n" );
-
-#if 0
- /* content files for any platform */
- vg_build.platform = k_platform_anyplatform;
- vg_build.compiler = k_compiler_blob;
- vg_build.arch = k_architecture_anyarch;
- vg_build.libc = k_libc_version_native;
- compile_game( 0, 1 );
- vg_tarball_last_project();
- vg_success( "Completed 3/3\n" );
-#endif
+ struct vg_project linux_proj, windows_proj;
+
+ struct vg_env env = vg_release_env;
+ env.platform = k_platform_linux;
+ vg_project_init( &linux_proj, &env, "marblecomp" );
+ build_game_content( &linux_proj );
+ build_game_bin( &linux_proj );
+
+ env = vg_release_env;
+ env.platform = k_platform_windows;
+ vg_project_init( &windows_proj, &env, "marblecomp" );
+ build_game_content( &windows_proj );
+ build_game_bin( &windows_proj );
+
+ vg_tarball_project( &linux_proj );
+ vg_tarball_project( &windows_proj );
}
void s_testing_build(void){
vg_info( "running script: s_testing_build(void)\n" );
- vg_build.optimization = optimize_test_compile;
- vg_build.fresh = 0;
- vg_build.platform = k_platform_linux;
- vg_build.arch = k_architecture_x86_64;
- vg_build.compiler = k_compiler_clang;
- vg_build.libc = k_libc_version_native;
-
- compile_game( 1, 1 );
+ struct vg_project test_proj;
+ vg_project_init( &test_proj, &vg_test_env, "marblecomp-test" );
- vg_success( "Completed 1/1\n" );
+ build_game_content( &test_proj );
+ build_game_bin( &test_proj );
}
int main( int argc, char *argv[] ){
s_testing_build();
if( vg_opt('r') )
- optimize_test_compile = 3;
+ vg_test_env.optimization = 3;
}
- if( vg_build.warnings )
- vg_warn( "Finished with %u warnings\n", vg_build.warnings );
- else
- vg_success( "All scripts ran successfully\n" );
+ vg_success( "All scripts ran successfully\n" );
}
#define _S( NAME, VS, FS ) \
-clang -fsanitize=address -O0 -I./vg build.c -o /tmp/tmpsr && /tmp/tmpsr $@
+clang -fsanitize=address -O0 -I./vg build.c vg/vg_tool.c -o /tmp/tmpsr && /tmp/tmpsr $@
"depotid" "1218141"
"flags" "0"
"steamid" "76561198072130043"
- "manifest" "5841690690099065898"
- "baselinemanifest" "6242687686564087841"
+ "manifest" "5141257285104113125"
+ "baselinemanifest" "4806168269097984635"
}
"depotid" "1218142"
"flags" "0"
"steamid" "76561198072130043"
- "manifest" "5738002581659433661"
- "baselinemanifest" "2883070295580438548"
+ "manifest" "8087969014587143684"
+ "baselinemanifest" "9117998720832101161"
}
sw_leaderboard_downloaded = &leaderboard_downloaded;
#endif
- vg_console_reg_cmd( "_map_write", console_save_map, NULL );
- vg_console_reg_cmd( "_map_load", console_load_map, NULL );
- vg_console_reg_cmd( "map", console_changelevel, NULL );
- vg_console_reg_cmd( "credits", console_credits, NULL );
- vg_console_reg_var( "colours", &marblecomp.colour_set, k_var_dtype_i32,
- VG_VAR_PERSISTENT );
- vg_console_reg_var( "theme", &marblecomp.world_theme, k_var_dtype_i32,
- VG_VAR_PERSISTENT );
- vg_console_reg_var( "enable_bloom", &marblecomp.bloom, k_var_dtype_i32,
- VG_VAR_PERSISTENT );
- vg_console_reg_var( "enable_vignette", &marblecomp.vignette, k_var_dtype_i32,
- VG_VAR_PERSISTENT );
- vg_console_reg_var( "music", &marblecomp.music, k_var_dtype_i32,
- VG_VAR_PERSISTENT );
-
// Combined quad, long quad / empty circle / filled circle mesh
{
float combined_mesh[6*6 + 32*6*3] = {
-#ifndef INPUT_H
-#define INPUT_H
-
-#define VG_GAME
-#include "vg/vg.h"
+#pragma once
#include "vg/vg_platform.h"
#include "vg/vg_console.h"
#include "vg/vg_input.h"
#include "vg/vg_m.h"
+#include "vg/vg_tex.h"
+#include "vg/vg_imgui.h"
enum sr_bind{
k_srbind_primary = 0,
}
}
}
-
-#endif /* INPUT_H */
-#define VG_GAME
-#define VG_AUDIO_FORCE_COMPRESSED
-#define VG_2D
-#define VG_LOG_SOURCE_INFO
-#define VG_TIMESTEP_FIXED (1.0/60.0)
-#define VG_GAME_SETTINGS
-
-#ifndef VG_RELEASE
- #define VG_DEVWINDOW
-#endif
-
-#define SDL_MAIN_HANDLED
-
+#include "vg/vg_engine.h"
+#include "vg/vg_audio.h"
+#include "vg/vg_loader.h"
+#include "vg/vg_async.h"
+#include "vg/vg_lines.h"
#define STB_DS_IMPLEMENTATION
#include "vg/submodules/stb/stb_ds.h"
-
-#include "vg/vg.h"
#include "steam.h"
-struct {
+struct
+{
enum mc_op {
k_mc_op_none,
k_mc_op_clientloading
return 0;
}
-static void vg_launch_opt(void){
+void vg_launch_opt(void)
+{
const char *arg;
}
-static void vg_preload(void){
+void vg_preload(void)
+{
vg_audio.dsp_enabled = 0;
vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" );
vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" );
audio_unlock();
}
-static void vg_load(void){
+void vg_load(void)
+{
/* --------------------- */
+ vg_console_reg_cmd( "_map_write", console_save_map, NULL );
+ vg_console_reg_cmd( "_map_load", console_load_map, NULL );
+ vg_console_reg_cmd( "map", console_changelevel, NULL );
+ vg_console_reg_cmd( "credits", console_credits, NULL );
+ vg_console_reg_var( "colours", &marblecomp.colour_set, k_var_dtype_i32,
+ VG_VAR_PERSISTENT );
+ vg_console_reg_var( "theme", &marblecomp.world_theme, k_var_dtype_i32,
+ VG_VAR_PERSISTENT );
+ vg_console_reg_var( "enable_bloom", &marblecomp.bloom, k_var_dtype_i32,
+ VG_VAR_PERSISTENT );
+ vg_console_reg_var( "enable_vignette", &marblecomp.vignette, k_var_dtype_i32,
+ VG_VAR_PERSISTENT );
+ vg_console_reg_var( "music", &marblecomp.music, k_var_dtype_i32,
+ VG_VAR_PERSISTENT );
+
+ vg_audio.always_keep_compressed = 1;
_mc_vg1_register();
_mc_resource_load_main();
vg_bake_shaders();
}
-static void vg_pre_update(void){
+void vg_pre_update(void)
+{
steam_update();
if( marblecomp.op == k_mc_op_clientloading ) return;
skaterift_preupdate_inputs();
_mc_vg1_update();
}
-static void vg_fixed_update(void){
+void vg_fixed_update(void)
+{
if( marblecomp.op == k_mc_op_clientloading ) return;
}
-static void vg_post_update(void){
+void vg_post_update(void)
+{
if( marblecomp.op == k_mc_op_clientloading ) return;
_mc_vg1_projection_update();
}
-static void vg_framebuffer_resize( int w, int h ){
+void vg_framebuffer_resize( int w, int h )
+{
_mc_vg1_framebuffer_resize(w,h);
}
-static void vg_render(void){
+void vg_render(void)
+{
if( marblecomp.op == k_mc_op_clientloading ){
- _vg_loader_render();
+ vg_loader_render();
return;
}
vg_lines_drawall();
}
-static void vg_gui(void){
+void vg_gui(void)
+{
if( marblecomp.op == k_mc_op_clientloading ) return;
vg_ui.wants_mouse = 1;
_mc_vg1_ui();
.options = mc_settings_binary, .option_count = 2 }
};
-static void vg_game_settings_init(void){
+void vg_game_settings_init(void)
+{
ui_settings_enum_init( &mc_settings.colourscheme );
ui_settings_enum_init( &mc_settings.bloom );
ui_settings_enum_init( &mc_settings.vignette );
ui_settings_enum_init( &mc_settings.music );
}
-static void vg_game_settings_gui( ui_rect panel ){
+void vg_game_settings_gui( ui_rect panel )
+{
ui_rect rq;
ui_standard_widget( panel, rq, 1 );