}
enum workshop_file_type type = k_workshop_file_type_none;
- vg_msg root;
- vg_msg_init( &root, reg->metadata, reg->metadata_len );
+ vg_msg root = {0};
+ root.buf = reg->metadata;
+ root.len = reg->metadata_len;
+ root.max = sizeof(reg->metadata);
+
vg_msg workshop = root;
if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){
- vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type", k_vg_msg_first );
- if( kv_type.code & k_vg_msg_code_integer ){
- type = kv_type.value._u32;
- }
+ type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first );
}
if( type == k_workshop_file_type_none ){
if( reg->metadata_len == 0 ){
/* create our own content commands */
- vg_msg msg;
- vg_msg_init( &msg, reg->metadata, sizeof(reg->metadata) );
+ vg_msg msg = {0};
+ msg.buf = reg->metadata;
+ msg.len = 0;
+ msg.max = sizeof(reg->metadata);
u32 content_count = 0;
vg_build_syscall( "mkdir -p %s/cfg", vg_compiler.build_dir );
u8 descriptor_buf[ 512 ];
- vg_msg descriptor;
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Longboard" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board );
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_long/addon.inf" );
}
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Fractal" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board );
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_fract/addon.inf" );
}
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Striped" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board );
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_striped/addon.inf" );
}
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Licco" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board);
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_licco/addon.inf" );
}
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Hypno" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board );
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_spiral/addon.inf" );
}
{
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", "Shark" );
vg_msg_wkvstr( &descriptor, "author", "Skaterift" );
- vg_msg_wkvuint(&descriptor, "type", u32 value=k_workshop_file_type_board);
+ vg_msg_wkvu32( &descriptor, "type", k_workshop_file_type_board );
vg_msg_end_frame( &descriptor );
vg_msg_wkvstr( &descriptor, "content", "board.mdl" );
write_msg( &descriptor, "boards_src/skaterift_shark/addon.inf" );
}
- /* method 2 */
-#if 0
- vg_info( "TRYING OUT METHOD 2 BINGO BONGO\n" );
- vg_msg root;
- vg_msg_init( &root, descriptor_buf, descriptor.cur );
-
- vg_msg workshop = root;
- if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){
- const char *err = vg_msg_seekkvstr(&workshop,"NOT HERE",k_vg_msg_first);
- const char *author = vg_msg_seekkvstr(&workshop,"author",k_vg_msg_first);
- const char *title = vg_msg_seekkvstr(&workshop,"title",k_vg_msg_first);
-
- vg_info( "TITLE: %s\n", title );
- vg_info( "AUTHOR: %s\n", author );
- vg_info( "and error code is: %s\n", err );
- }
-
- const char *content = vg_msg_seekkvstr(&root, "content", k_vg_msg_first);
- vg_info( "CONTENT: %s\n", content );
-#endif
-
vg_build();
compiled_something = 1;
}
#ifndef COMMON_H
#define COMMON_H
-#define VG_TIMESTEP_FIXED (1.0/60.0)
-#define VG_3D
-#define VG_GAME
-
-#include "vg/vg.h"
-
#endif /* COMMON_H */
#define VG_GAME
#include "vg/vg.h"
-#define SKATERIFT_APPID 2103940
-
-VG_STATIC f32 cl_fov = 0.86f,
- cl_blur_strength = 0.3f;
-VG_STATIC i32 cl_blur = 1,
- cl_playermdl_id = 0,
- cl_invert_y = 0;
-
-static f32 cl_cinema = 0;
-static i32 cl_cinema_fixed = 0;
-
-VG_STATIC void g_conf_init(void)
-{
- VG_VAR_F32( cl_blur_strength, flags=VG_VAR_PERSISTENT );
- VG_VAR_I32( cl_playermdl_id, flags=VG_VAR_PERSISTENT );
-
- vg_console_reg_var( "blur_effect", &cl_blur,
- k_var_dtype_i32, VG_VAR_PERSISTENT );
- vg_console_reg_var( "invert_y", &cl_invert_y,
- k_var_dtype_i32, VG_VAR_PERSISTENT );
- vg_console_reg_var( "fov", &cl_fov, k_var_dtype_f32, VG_VAR_PERSISTENT );
- vg_console_reg_var( "cinema", &cl_cinema, k_var_dtype_f32, 0 );
- vg_console_reg_var( "cinema_fixed", &cl_cinema_fixed, k_var_dtype_i32, 0 );
+VG_STATIC i32 k_playermdl_id = 0;
+VG_STATIC void conf_init(void){
+ VG_VAR_I32( k_playermdl_id, flags=VG_VAR_PERSISTENT ); /* TODO: .sav */
}
#endif /* CONF_H */
/* continue with the request */
SDL_AtomicUnlock( &global_skateshop.sl_cache_access );
- cache_ptr->reg_ptr = get_addon_from_index( k_workshop_file_type_board,
- cache_ptr->reg_index );
+ addon_reg *reg = get_addon_from_index( k_workshop_file_type_board,
+ cache_ptr->reg_index );
+ cache_ptr->reg_ptr = reg;
vg_str folder;
vg_strnull( &folder, path_buf, 4096 );
- if( !addon_get_content_folder( cache_ptr->reg_ptr, &folder ) )
+ if( !addon_get_content_folder( reg, &folder ) )
goto file_is_broken;
vg_str content_path = folder;
- vg_msg root;
- vg_msg_init( &root, cache_ptr->reg_ptr->metadata,
- cache_ptr->reg_ptr->metadata_len );
+
+ vg_msg root = {0};
+ root.buf = reg->metadata;
+ root.len = reg->metadata_len;
+ root.max = sizeof(reg->metadata);
const char *kv_content = vg_msg_seekkvstr( &root, "content", 0 );
if( kv_content ){
gui_helper_action( button_display_string( k_srbind_maccept ), "pick" );
if( button_down( k_srbind_mleft ) ){
- if( cl_playermdl_id > 0 ){
- cl_playermdl_id --;
+ if( k_playermdl_id > 0 ){
+ k_playermdl_id --;
}
else{
- cl_playermdl_id = 2; /* HACK */
+ k_playermdl_id = 2; /* HACK */
}
temp_update_playermodel(); /* HACK */
}
if( button_down( k_srbind_mright ) ){
- if( cl_playermdl_id+1 < 3 ){
- cl_playermdl_id ++;
+ if( k_playermdl_id+1 < 3 ){
+ k_playermdl_id ++;
}
else{
- cl_playermdl_id = 0; /* HACK */
+ k_playermdl_id = 0; /* HACK */
}
temp_update_playermodel(); /* HACK */
/*lol*/
global_skateshop.render.item_title = "";
global_skateshop.render.item_desc = "";
addon_reg *reg = cache_ptr->reg_ptr;
- vg_msg root;
- vg_msg_init( &root, reg->metadata, reg->metadata_len );
+ vg_msg root = {0};
+ root.buf = reg->metadata;
+ root.len = reg->metadata_len;
+ root.max = sizeof(reg->metadata);
vg_msg workshop = root;
if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){
addon_reg *reg = get_addon_from_index( k_workshop_file_type_world,
global_skateshop.selected_world_id );
- vg_msg root;
- vg_msg_init( &root, reg->metadata, reg->metadata_len );
+ vg_msg root = {0};
+ root.buf = reg->metadata;
+ root.len = reg->metadata_len;
+ root.max = sizeof(reg->metadata);
vg_msg workshop = root;
if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){
global_skateshop.render.world_title = vg_msg_seekkvstr( &workshop,
VG_VAR_F32( k_cam_punch );
VG_VAR_F32( k_cam_shake_strength );
VG_VAR_F32( k_cam_shake_trackspeed );
+
+ vg_console_reg_var( "cinema", &k_cinema, k_var_dtype_f32, 0 );
+ vg_console_reg_var( "cinema_fixed", &k_cinema_fixed, k_var_dtype_i32, 0 );
+ vg_console_reg_var( "invert_y", &k_invert_y,
+ k_var_dtype_i32, VG_VAR_PERSISTENT );
}
PLAYER_API
#define PLAYER_REWIND_FRAMES 60*4
#define RESET_MAX_TIME 45.0
+static i32 k_cinema_fixed = 0;
+static f32 k_cinema = 0.0f;
+static i32 k_invert_y = 0;
+
struct player_instance
{
/* transform definition */
vg.time_frame_delta * 8.0f, player->tpv_offset_smooth );
/* fov -- simple blend */
- float fov_skate = vg_lerpf( 97.0f, 135.0f, cl_fov ),
- fov_walk = vg_lerpf( 90.0f, 110.0f, cl_fov );
+ float fov_skate = vg_lerpf( 97.0f, 135.0f, k_fov ),
+ fov_walk = vg_lerpf( 90.0f, 110.0f, k_fov );
player->cam.fov = vg_lerpf( fov_walk, fov_skate, player->camera_type_blend );
player->cam_override_strength );
- if( cl_cinema >= 0.0001f ){
+ if( k_cinema >= 0.0001f ){
ent_camera *cam = NULL;
- f32 min_dist = cl_cinema;
+ f32 min_dist = k_cinema;
world_instance *world = player->viewable_world;
for( u32 i=0; i<mdl_arrcount(&world->ent_camera); i++ ){
player->cam.fov = cam->fov;
v3_copy( cam->transform.co, player->cam.pos );
v3f v0;
- if( cl_cinema_fixed )
+ if( k_cinema_fixed )
mdl_transform_vector( &cam->transform, (v3f){0.0f,-1.0f,0.0f}, v0 );
else v3_sub( player->rb.co, cam->transform.co, v0 );
m3x3_mulv( player->invbasis, v0, v0 );
v2f mouse_input;
v2_copy( vg.mouse_delta, mouse_input );
- if( cl_invert_y ) mouse_input[1] *= -1.0f;
+ if( k_invert_y ) mouse_input[1] *= -1.0f;
v2_muladds( angles, mouse_input, 0.0025f * sensitivity, angles );
v2f jlook;
angles[0] += jlook[0] * vg.time_delta * 4.0f * sensitivity;
float input_y = jlook[1] * vg.time_delta * 4.0f;
- if( cl_invert_y ) input_y *= -1.0f;
+ if( k_invert_y ) input_y *= -1.0f;
angles[1] += input_y * sensitivity;
angles[1] = vg_clampf( angles[1], -VG_PIf*0.5f, VG_PIf*0.5f );
#ifndef RENDER_H
#define RENDER_H
+static f32 k_render_scale = 1.0f;
+static i32 k_blur_effect = 1;
+static f32 k_blur_strength = 0.3f;
+static f32 k_fov = 0.86f;
+
typedef struct framebuffer framebuffer;
/*
*fb_water_beneath,
*fb_workshop_preview;
int ready;
-
- float view_render_scale,
- water_render_scale;
}
-gpipeline = { .view_render_scale = 1.0f };
+gpipeline;
struct framebuffer{
const char *display_name;
render_fb_get_current_res( fb, &x, &y );
if( use_scaling ){
- x = gpipeline.view_render_scale*(float)x;
- y = gpipeline.view_render_scale*(float)y;
+ x = k_render_scale*(float)x;
+ y = k_render_scale*(float)y;
x = VG_MAX( 16, x );
y = VG_MAX( 16, y );
*/
VG_STATIC void render_fb_resize(void)
{
- if( !gpipeline.ready )
- return;
+ if( !gpipeline.ready ) return;
for( int i=0; i<vg_list_size(framebuffers); i++ ){
struct framebuffer *fb = &framebuffers[i];
vg_console_reg_cmd( "fb", render_framebuffer_control,
render_framebuffer_poll );
- vg_console_reg_var( "render_scale", &gpipeline.view_render_scale,
- k_var_dtype_f32, VG_VAR_PERSISTENT );
-
glGenVertexArrays( 1, &gpipeline.fsquad.vao );
glGenBuffers( 1, &gpipeline.fsquad.vbo );
glBindVertexArray( gpipeline.fsquad.vao );
VG_STATIC void render_init(void)
{
+ vg_console_reg_var( "blur_strength", &k_blur_strength, k_var_dtype_f32, 0 );
+ vg_console_reg_var( "render_scale", &k_render_scale,
+ k_var_dtype_f32, VG_VAR_PERSISTENT );
+ vg_console_reg_var( "fov", &k_fov, k_var_dtype_f32, VG_VAR_PERSISTENT );
+ vg_console_reg_var( "blur_effect", &k_blur_effect,
+ k_var_dtype_i32, VG_VAR_PERSISTENT );
+
+
shader_blit_register();
shader_blitblur_register();
shader_blitcolour_register();
--- /dev/null
+#ifndef SAVE_H
+#define SAVE_H
+
+
+
+#endif /* SAVE_H */
* system headers
* --------------------- */
-#include "common.h"
+#include "skaterift.h"
#include "conf.h"
#include "steam.h"
#include "render.h"
VG_STATIC void vg_preload(void)
{
- g_conf_init();
+ conf_init();
vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" );
vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" );
}
void temp_update_playermodel(void){
- player__use_model( &localplayer, &localplayer_models[cl_playermdl_id] );
+ player__use_model( &localplayer, &localplayer_models[k_playermdl_id] );
}
VG_STATIC void async_skaterift_complete( void *payload, u32 size )
player__create( &localplayer );
player_avatar_load( &localplayer_avatar, "models/ch_new.mdl" );
player__use_avatar( &localplayer, &localplayer_avatar );
- player__use_model( &localplayer, &localplayer_models[cl_playermdl_id] );
+ player__use_model( &localplayer, &localplayer_models[k_playermdl_id] );
player__bind( &localplayer );
/* --------------------- */
/* Completing addon registrations
* -------------------------------------
*/
- vg_msg msg;
/* understate diy. */
addon_reg *spawn = addon_mount_local_addon( "maps/mp_spawn",
k_workshop_file_type_world,
".mdl" );
- vg_msg_init( &msg, spawn->metadata, sizeof(spawn->metadata) );
- vg_msg_frame( &msg, "workshop" );
- vg_msg_wkvstr( &msg, "title", "Understate DIY" );
- vg_msg_end_frame( &msg );
- vg_msg_wkvstr( &msg, "location", "USA" );
- spawn->metadata_len = msg.cur;
+ {
+ vg_msg msg = {0};
+ msg.buf = spawn->metadata;
+ msg.max = sizeof(spawn->metadata);
+ vg_msg_frame( &msg, "workshop" );
+ vg_msg_wkvstr( &msg, "title", "Understate DIY" );
+ vg_msg_end_frame( &msg );
+ vg_msg_wkvstr( &msg, "location", "USA" );
+ spawn->metadata_len = msg.cur;
+ }
/* mtzero island */
addon_reg *mtzero = addon_mount_local_addon( "maps/mp_mtzero",
k_workshop_file_type_world,
".mdl" );
- vg_msg_init( &msg, mtzero->metadata, sizeof(mtzero->metadata) );
- vg_msg_frame( &msg, "workshop" );
- vg_msg_wkvstr( &msg, "title", "Mt.Zero Island" );
- vg_msg_end_frame( &msg );
- vg_msg_wkvstr( &msg, "location", "Australia" );
- mtzero->metadata_len = msg.cur;
+ {
+ vg_msg msg = {0};
+ msg.buf = mtzero->metadata;
+ msg.max = sizeof(mtzero->metadata);
+ vg_msg_frame( &msg, "workshop" );
+ vg_msg_wkvstr( &msg, "title", "Mt.Zero Island" );
+ vg_msg_end_frame( &msg );
+ vg_msg_wkvstr( &msg, "location", "Australia" );
+ mtzero->metadata_len = msg.cur;
+ }
+
global_skateshop.selected_world_id=1;
global_skateshop.pointcloud_world_id=1;
skateshop_preview_loader_thread( mtzero ); /* HACK */
v2f inverse;
render_fb_inverse_ratio( gpipeline.fb_main, inverse );
- if( cl_blur ){
+ if( k_blur_effect ){
shader_blitblur_use();
shader_blitblur_uTexMain( 0 );
shader_blitblur_uTexMotion( 1 );
- shader_blitblur_uBlurStrength( cl_blur_strength /
+ shader_blitblur_uBlurStrength( k_blur_strength /
(vg.time_frame_delta*60.0) );
shader_blitblur_uInverseRatio( inverse );
#ifndef SKATERIFT_H
#define SKATERIFT_H
+#define SKATERIFT_APPID 2103940
+
+#define VG_TIMESTEP_FIXED (1.0/60.0)
+#define VG_3D
+#define VG_GAME
+#define VG_MSG_V1_SUPPORT
+#include "vg/vg.h"
+
#include "common.h"
#include "world.h"
#include "addon.h"
* Create the metadata file
* -----------------------------------------------------------------------*/
u8 descriptor_buf[ 512 ];
- vg_msg descriptor;
- vg_msg_init( &descriptor, descriptor_buf, 512 );
+ vg_msg descriptor = {0};
+ descriptor.buf = descriptor_buf;
+ descriptor.max = sizeof(descriptor_buf);
+
+ vg_linear_clear( vg_mem.scratch );
+
+ /* short description */
vg_msg_frame( &descriptor, "workshop" );
vg_msg_wkvstr( &descriptor, "title", workshop_form.submission.title );
//vg_msg_wkvstr( &descriptor, "author", "unknown" );
- vg_msg_wkvuint( &descriptor, "type",
- u32 value=workshop_form.submission.type);
+ vg_msg_wkvu32( &descriptor, "type", workshop_form.submission.type );
vg_msg_wkvstr( &descriptor, "folder", workshop_form.addon_folder );
vg_msg_end_frame( &descriptor );
//vg_msg_wkvstr( &descriptor, "location", "USA" );
- //
- vg_linear_clear( vg_mem.scratch );
- char *descriptor_str = vg_linear_alloc( vg_mem.scratch,
- vg_align8(descriptor.cur*2+1) );
- vg_bin_str( descriptor_buf, descriptor_str, descriptor.cur );
- descriptor_str[descriptor.cur*2] = '\0';
- vg_info( "binstr: %s\n", descriptor_str );
+
+ char *short_descriptor_str = vg_linear_alloc( vg_mem.scratch,
+ vg_align8(descriptor.cur*2+1));
+ vg_bin_str( descriptor_buf, short_descriptor_str, descriptor.cur );
+ short_descriptor_str[descriptor.cur*2] = '\0';
+ vg_info( "binstr: %s\n", short_descriptor_str );
vg_dir dir;
if( !vg_dir_open( &dir, folder.buffer ) ){
stbi_flip_vertically_on_write(1);
stbi_write_jpg( preview.buffer, w,h, 3, workshop_form.img_buffer, 90 );
- vg_async_call( workshop_form_async_submit_begin, descriptor_str, 0 );
+ vg_async_call( workshop_form_async_submit_begin, short_descriptor_str, 0 );
}
/*
u32 len = strlen(metadata_str);
vg_info( "Metadata: %s\n", metadata_str );
vg_str_bin( metadata_str, metadata_buf, len );
- vg_msg root;
- vg_msg_init( &root, metadata_buf, len/2 );
+ vg_msg root = {0};
+ root.buf = metadata_buf;
+ root.len = len/2;
+ root.max = len/2;
vg_msg workshop = root;
if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){
- vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type",
- k_vg_msg_first );
- if( kv_type.code & k_vg_msg_code_integer ){
- u32 u = kv_type.value._u32;
- workshop_form.submission.type = u;
- workshop_form.submission.submission_type_selection.value = u;
- }
+ u32 type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first );
+ workshop_form.submission.type = type;
+ workshop_form.submission.submission_type_selection.value = type;
const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder",
k_vg_msg_first );
/* console variables */
-static float k_day_length = 30.0f; /* minutes */
-static int k_debug_light_indices = 0,
+static f32 k_day_length = 30.0f; /* minutes */
+static i32 k_debug_light_indices = 0,
k_debug_light_complexity= 0,
k_light_preview = 0;