X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=common.h;h=e9df311a030462474d0c27d2d09bc9c967b9bedc;hb=d8fc0acce1b39466038284aa6f1941ebe98c8348;hp=e4015a8d196750f17d50d94c3d72aca19b217f03;hpb=86dbcd5796ed674ca9433cce1ace8bef322cd121;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/common.h b/common.h index e4015a8..e9df311 100644 --- a/common.h +++ b/common.h @@ -1,32 +1,30 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef COMMON_H #define COMMON_H +#define VG_TIMESTEP_FIXED (1.0/60.0) #define VG_3D #define VG_FRAMEBUFFER_RESIZE 1 #include "vg/vg.h" +#include "anyascii/anyascii.h" -/* TODO: he needs a home somewhere */ -static float ktimestep = 1.0f/60.0f; +#define RESET_MAX_TIME 45.0 -/* TODO: he needs a home somewhere */ -enum classtype +enum menu_controller_type { - k_classtype_none = 0, - k_classtype_gate = 1, - k_classtype_block = 2, - k_classtype_spawn = 3, - k_classtype_water = 4, - k_classtype_car_path = 5, - k_classtype_instance = 6, - k_classtype_capsule = 7, - k_classtype_route_node = 8, - k_classtype_route = 9, - k_classtype_bone = 10, - k_classtype_skeleton = 11, - k_classtype_skin = 12 + k_menu_controller_type_keyboard, + k_menu_controller_type_xbox, + k_menu_controller_type_playstation, + k_menu_controller_type_steam, + k_menu_controller_type_steam_deck }; -/* TODO: he needs a home somewhere */ +VG_STATIC enum menu_controller_type menu_display_controller; +VG_STATIC float g_fov_option = 0.86f; + typedef struct ray_hit ray_hit; struct ray_hit { @@ -35,18 +33,65 @@ struct ray_hit v3f pos, normal; }; -/* TODO: he needs a home somewhere */ -static void eval_bezier_time( v3f p0, v3f p1, v3f h0, v3f h1, float t, v3f p ) +VG_STATIC int network_scores_updated = 0; + +VG_STATIC u32 utf8_byte0_byte_count( u8 char0 ) { - float tt = t*t, - ttt = tt*t; + for( u32 k=2; k<4; k++ ) + { + if( !(char0 & (0x80 >> k)) ) + return k; + } - v3_muls( p1, ttt, p ); - v3_muladds( p, h1, 3.0f*tt -3.0f*ttt, p ); - v3_muladds( p, h0, 3.0f*ttt -6.0f*tt +3.0f*t, p ); - v3_muladds( p, p0, 3.0f*tt -ttt -3.0f*t +1.0f, p ); + return 0; } -static int network_scores_updated = 0; +VG_STATIC void str_utf8_collapse( const char *str, char *buf, u32 length ) +{ + u8 *ustr = (u8 *)str; + u32 utf32_code = 0x00000000; + u32 i=0, j=0, utf32_byte_ct=0; + + for(;i < length-1;) + { + if( ustr[i] == 0x00 ) + break; + + if( ustr[i] & 0x80 ) + { + if( utf32_byte_ct ) + { + utf32_byte_ct --; + utf32_code |= (ustr[i] & 0x3F) << (utf32_byte_ct*6); + + if( !utf32_byte_ct ) + { + const char *match; + size_t chars = anyascii( utf32_code, &match ); + + for( u32 k=0; k> utf32_byte_ct); + utf32_code <<= utf32_byte_ct*6; + } + } + else + { + utf32_byte_ct = 0x00; + buf[j ++] = str[i]; + } + + i++; + } + + buf[j] = 0x00; +} #endif /* COMMON_H */