From b043390964ee4f87ceb876e89f5774c0ab602680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Fri, 13 Oct 2023 14:07:53 +0200 Subject: [PATCH] load icon from vfs + non-workdir --- engine/joint/v4k.h | 212 ++++++++++++++++++++------------------ engine/split/v4k_config.h | 4 + engine/split/v4k_main.c | 12 ++- engine/split/v4k_window.c | 4 +- engine/v4k | 58 +++++------ engine/v4k.c | 84 +++++++-------- engine/v4k.h | 70 +++++++------ tools/join.py | 2 +- 8 files changed, 232 insertions(+), 214 deletions(-) diff --git a/engine/joint/v4k.h b/engine/joint/v4k.h index caed168..2c5cd71 100644 --- a/engine/joint/v4k.h +++ b/engine/joint/v4k.h @@ -14028,7 +14028,7 @@ extern "C" { //----------------------------------------------------------------------------- // Headers -#line 1 "v4k_config.h" +#line 1 "engine/split/v4k_config.h" // ----------------------------------------------------------------------------- // config directives @@ -14060,6 +14060,10 @@ extern "C" { #define ENABLE_TESTS 0 // ifdef(debug, 1, 0) ///+ #endif +#ifndef ENABLE_RETAIL +#define ENABLE_RETAIL 0 +#endif + // ----------------------------------------------------------------------------- // if/n/def hell @@ -14362,7 +14366,7 @@ typedef char bool; #endif #line 0 -#line 1 "v4k_ds.h" +#line 1 "engine/split/v4k_ds.h" // data structures and utils: array, set, map, hash, sort. // - rlyeh, public domain @@ -14826,7 +14830,7 @@ enum { #line 0 -#line 1 "v4k_math.h" +#line 1 "engine/split/v4k_math.h" // ----------------------------------------------------------------------------- // math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4 // - rlyeh, public domain @@ -15186,7 +15190,7 @@ API void swapf4(vec4 *a, vec4 *b); #line 0 -#line 1 "v4k_ai.h" +#line 1 "engine/split/v4k_ai.h" typedef enum SWARM_DISTANCE { SWARM_DISTANCE_LINEAR, SWARM_DISTANCE_INVERSE_LINEAR, @@ -15239,7 +15243,7 @@ API int ui_swarm(swarm_t *self); API int pathfind_astar(int width, int height, const unsigned* map, vec2i src, vec2i dst, vec2i* path, size_t maxpath); #line 0 -#line 1 "v4k_bt.h" +#line 1 "engine/split/v4k_bt.h" // Behavior trees: decision planning and decision making. // Supersedes finite state-machines (FSM) and hierarchical finite state-machines (HFSM). // - rlyeh, public domain. @@ -15265,7 +15269,7 @@ API char *bt_funcname(bt_func fn); API int ui_bt(bt_t *b); #line 0 -#line 1 "v4k_audio.h" +#line 1 "engine/split/v4k_audio.h" // ----------------------------------------------------------------------------- // audio framework // - rlyeh, public domain @@ -15326,7 +15330,7 @@ enum AUDIO_FLAGS { API int audio_queue( const void *samples, int num_samples, int flags ); #line 0 -#line 1 "v4k_buffer.h" +#line 1 "engine/split/v4k_buffer.h" // ---------------------------------------------------------------------------- // compression api @@ -15424,7 +15428,7 @@ API uint64_t crc64(uint64_t h, const void *ptr, uint64_t len); API void entropy( void *buf, unsigned n ); #line 0 -#line 1 "v4k_collide.h" +#line 1 "engine/split/v4k_collide.h" // ----------------------------------------------------------------------------- // original code by @vurtun (PD) and @barerose (CC0). // [src] https://gist.github.com/vurtun/95f088e4889da2474ad1ce82d7911fee @@ -15585,7 +15589,7 @@ API poly diamond(vec3 from, vec3 to, float size); // poly_free() required API void collide_demo(); // debug draw collisions #line 0 -#line 1 "v4k_cooker.h" +#line 1 "engine/split/v4k_cooker.h" // ----------------------------------------------------------------------------- // asset pipeline framework // - rlyeh, public domain. @@ -15620,7 +15624,7 @@ API int cook_progress(); // [0..100] #line 0 -#line 1 "v4k_data.h" +#line 1 "engine/split/v4k_data.h" // ----------------------------------------------------------------------------- // data framework (json5, xml, compression) @todo:kvdb // - rlyeh, public domain @@ -15659,7 +15663,7 @@ API void xml_pop(); API bool data_tests(); #line 0 -#line 1 "v4k_dll.h" +#line 1 "engine/split/v4k_dll.h" // dll utils // - rlyeh, public domain @@ -15674,7 +15678,7 @@ API bool data_tests(); API void* dll(const char *filename, const char *symbol); #line 0 -#line 1 "v4k_editor.h" +#line 1 "engine/split/v4k_editor.h" // ----------------------------------------------------------------------------- // in-game editor // - rlyeh, public domain. @@ -15719,7 +15723,7 @@ API char* kit_translate2( const char *id, const char *langcode_iso639_1 ); // pe API void kit_dump_state( FILE *fp ); #line 0 -#line 1 "v4k_file.h" +#line 1 "engine/split/v4k_file.h" // ----------------------------------------------------------------------------- // files, cache and virtual filesystem (registered directories and/or compressed zip archives). // - rlyeh, public domain. @@ -15819,7 +15823,7 @@ API void ini_destroy(ini_t); API bool ini_write(const char *filename, const char *section, const char *key, const char *value); #line 0 -#line 1 "v4k_font.h" +#line 1 "engine/split/v4k_font.h" // ----------------------------------------------------------------------------- // font framework // - rlyeh, public domain @@ -15911,7 +15915,7 @@ API void* font_colorize(const char *text, const char *comma_types, const char *c API vec2 font_highlight(const char *text, const void *colors); #line 0 -#line 1 "v4k_id.h" +#line 1 "engine/split/v4k_id.h" // ----------------------------------------------------------------------------- // factory of handle ids, based on code by randy gaul (PD/Zlib licensed) // - rlyeh, public domain @@ -15940,7 +15944,7 @@ bool id_valid(uintptr_t id); #define ID_DATA_BITS (64-ID_COUNT_BITS) #line 0 -#line 1 "v4k_pack.h" +#line 1 "engine/split/v4k_pack.h" // ---------------------------------------------------------------------------- // endianness @@ -16131,7 +16135,7 @@ API int loadf(FILE *file, const char *format, ...); API int loadb(const unsigned char *buf, const char *format, ...); #line 0 -#line 1 "v4k_input.h" +#line 1 "engine/split/v4k_input.h" // ----------------------------------------------------------------------------- // input framework // - rlyeh, public domain @@ -16251,7 +16255,7 @@ enum INPUT_ENUMS { }; #line 0 -#line 1 "v4k_memory.h" +#line 1 "engine/split/v4k_memory.h" // ----------------------------------------------------------------------------- // memory framework // - rlyeh, public domain @@ -16291,7 +16295,7 @@ static FORCE_INLINE void *(CALLOC_)(size_t m, size_t n) { return n *= m, memset( static FORCE_INLINE char *(STRDUP_)(const char *s) { size_t n = strlen(s)+1; return ((char*)memcpy(REALLOC(0,n), s, n)); } ///- #line 0 -#line 1 "v4k_network.h" +#line 1 "engine/split/v4k_network.h" // ----------------------------------------------------------------------------- // network framework // - rlyeh, public domain @@ -16343,7 +16347,7 @@ API int tcp_debug(int); // toggle traffic monitoring on/off for given socket //API int tcp_crypt(int,uint64_t); // set shared secret #line 0 -#line 1 "v4k_netsync.h" +#line 1 "engine/split/v4k_netsync.h" // high-level, socket-less networking api. inspired by Quake, MPI and RenderBuckets theories. // - rlyeh, public domain // @@ -16429,7 +16433,7 @@ API int64_t client_join(const char *ip, int port); #define LOCALHOST_IPV6 "::1" #line 0 -#line 1 "v4k_obj.h" +#line 1 "engine/split/v4k_obj.h" // ----------------------------------------------------------------------------- // semantic versioning in a single byte (octal) // - rlyeh, public domain. @@ -16489,7 +16493,7 @@ typedef struct double4 { double x,y,z,w; } double4; #define double4(x,y,z,w) M_CAST(double4, (double)(x), (double)(y), (double)(z), (double)(w) ) #line 0 -#line 1 "v4k_profile.h" +#line 1 "engine/split/v4k_profile.h" // ----------------------------------------------------------------------------- // profiler & stats (@fixme: threadsafe) @@ -16521,7 +16525,7 @@ extern API int profiler_enabled; ///- #endif #line 0 -#line 1 "v4k_reflect.h" +#line 1 "engine/split/v4k_reflect.h" // C reflection: enums, functions, structs, members and anotations. // - rlyeh, public domain // @@ -16583,7 +16587,7 @@ API void reflected_printf(reflected_t *r); API void reflected_printf_all(); #line 0 -#line 1 "v4k_render.h" +#line 1 "engine/split/v4k_render.h" // ----------------------------------------------------------------------------- // naive rendering framework // - rlyeh, public domain @@ -17285,7 +17289,7 @@ API void* screenshot(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA API void* screenshot_async(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA #line 0 -#line 1 "v4k_renderdd.h" +#line 1 "engine/split/v4k_renderdd.h" // ----------------------------------------------------------------------------- // debugdraw framework // - rlyeh, public domain. @@ -17352,7 +17356,7 @@ API void ddraw_flush(); API void ddraw_flush_projview(mat44 proj, mat44 view); #line 0 -#line 1 "v4k_scene.h" +#line 1 "engine/split/v4k_scene.h" // ----------------------------------------------------------------------------- // scene framework // - rlyeh, public domain @@ -17489,7 +17493,7 @@ API unsigned scene_count_light(); API light_t* scene_index_light(unsigned index); #line 0 -#line 1 "v4k_script.h" +#line 1 "engine/split/v4k_script.h" // ----------------------------------------------------------------------------- // script framework // - rlyeh, public domain @@ -17505,7 +17509,7 @@ API void script_call(const char *lua_function); API bool script_tests(); #line 0 -#line 1 "v4k_string.h" +#line 1 "engine/split/v4k_string.h" // string framework // - rlyeh, public domain @@ -17599,7 +17603,7 @@ unsigned quark_intern( quarks_db*, const char *string ); const char *quark_string( quarks_db*, unsigned key ); #line 0 -#line 1 "v4k_time.h" +#line 1 "engine/split/v4k_time.h" // ----------------------------------------------------------------------------- // time framework utils // - rlyeh, public domain. @@ -17646,7 +17650,7 @@ AUTORUN { */ #line 0 -#line 1 "v4k_system.h" +#line 1 "engine/split/v4k_system.h" // ----------------------------------------------------------------------------- // system framework utils // - rlyeh, public domain. @@ -17727,7 +17731,7 @@ API int (test)(const char *file, int line, const char *expr, bool result); #line 0 -#line 1 "v4k_ui.h" +#line 1 "engine/split/v4k_ui.h" // ----------------------------------------------------------------------------- // immediate ui framework // - rlyeh, public domain @@ -17817,7 +17821,7 @@ API int ui_active(); // ui_is_active()? API int ui_demo(int do_windows); #line 0 -#line 1 "v4k_video.h" +#line 1 "engine/split/v4k_video.h" // ----------------------------------------------------------------------------- // video decoder (mpeg) // - rlyeh, public domain @@ -17860,7 +17864,7 @@ API bool record_active(); API void record_stop(void); #line 0 -#line 1 "v4k_window.h" +#line 1 "engine/split/v4k_window.h" // ----------------------------------------------------------------------------- // window framework // - rlyeh, public domain @@ -17993,7 +17997,7 @@ API void window_cursor_shape(unsigned shape); #define GLAD_GL_IMPLEMENTATION // glad #endif -#line 1 "3rd_glad.h" +#line 1 "engine/split/3rd_glad.h" #ifndef __EMSCRIPTEN__ #ifndef _GNU_SOURCE // juicy linux headers @@ -29675,7 +29679,7 @@ int gladLoadGL( GLADloadfunc load) { #endif /* __EMSCRIPTEN__ */ #line 0 -#line 1 "3rd_icon_md.h" +#line 1 "engine/split/3rd_icon_md.h" // Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++ // from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints // for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf @@ -32017,7 +32021,7 @@ errno_t fopen_s( //--- -#line 1 "3rd_glfw3.h" +#line 1 "engine/split/3rd_glfw3.h" #ifndef __EMSCRIPTEN__ // forked from https://github.com/SasLuca/glfw-single-header (CC0-1.0 licensed) @@ -71214,7 +71218,7 @@ uint32_t _glfwKeySym2Unicode(unsigned int keysym) #line 0 #undef timeGetTime //--- -#line 1 "3rd_swrap.h" +#line 1 "engine/split/3rd_swrap.h" // https://github.com/BareRose/swrap/blob/master/swrap.h /* @@ -71507,7 +71511,7 @@ SWDEF int swrapMultiSelect (int* socks, size_t socks_size, double timeout) { #endif //SWRAP_H #line 0 //--- -#line 1 "3rd_jo_mp1.h" +#line 1 "engine/split/3rd_jo_mp1.h" /* public domain Simple, Minimalistic MPEG Layer 1 decoder - http://jonolick.com * * Revision History: @@ -71918,7 +71922,7 @@ bool jo_read_mp1(const void *input, int inputSize, short **output_, int *outputS #line 0 #define get_bits stb_vorbis_get_bits #define error stb_vorbis_error -#line 1 "3rd_stb_vorbis.h" +#line 1 "engine/split/3rd_stb_vorbis.h" // Ogg Vorbis audio decoder - v1.19 - public domain // http://nothings.org/stb_vorbis/ // @@ -77479,7 +77483,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #line 0 #undef error #undef DEBUG -#line 1 "3rd_sts_mixer.h" +#line 1 "engine/split/3rd_sts_mixer.h" /////////////////////////////////////////////////////////////////////////////// // sts_mixer.h - v0.02 // written 2016 by Sebastian Steinhauer @@ -77992,7 +77996,7 @@ int main(int argc, char *argv[]) { For more information, please refer to */ #line 0 -#line 1 "3rd_miniaudio.h" +#line 1 "engine/split/3rd_miniaudio.h" /* Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. miniaudio - v0.11.18 - 2023-08-07 @@ -170537,7 +170541,7 @@ SOFTWARE. #undef R #define error l_error #define panic l_panic -#line 1 "3rd_lua.h" +#line 1 "engine/split/3rd_lua.h" /* minilua.h -- Lua in a single header Project URL: https://github.com/edubart/minilua @@ -199515,7 +199519,7 @@ int main (int argc, char **argv) { #undef cast #undef G //--- -#line 1 "3rd_stb_image.h" +#line 1 "engine/split/3rd_stb_image.h" /* stb_image - v2.26 - public domain image loader - http://nothings.org/stb no warranty implied; use at your own risk @@ -207279,7 +207283,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ */ #line 0 -#line 1 "3rd_stb_image_write.h" +#line 1 "engine/split/3rd_stb_image_write.h" /* stb_image_write - v1.15 - public domain - http://nothings.org/stb writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 no warranty implied; use at your own risk @@ -208977,7 +208981,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define STBTT_free(x,u) ((void)(u),FREE(x)) #define NK_ASSERT ASSERT #define NK_DTOA(s,n) strcpy(s, va("%f", n)) // override cos built-in nk_dtoa() will freeze while parsing UINT_MAX otherwise -#line 1 "3rd_nuklear.h" +#line 1 "engine/split/3rd_nuklear.h" /* /// # Nuklear /// ![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif) @@ -239338,7 +239342,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// for his single header file packer. */ #line 0 -#line 1 "3rd_nuklear_glfw_gl3.h" +#line 1 "engine/split/3rd_nuklear_glfw_gl3.h" /* * Nuklear - 1.32.0 - public domain @@ -239889,7 +239893,7 @@ void nk_glfw3_shutdown(struct nk_glfw* glfw) #endif #endif #line 0 -#line 1 "3rd_nuklear_filebrowser.h" +#line 1 "engine/split/3rd_nuklear_filebrowser.h" // file browser for nuklear, based on https://github.com/vurtun/nuklear/blob/master/example/file_browser.c (public domain) // - rlyeh, public domain // @@ -240300,7 +240304,7 @@ static struct nk_image icon_load_rect(unsigned id, unsigned w, unsigned h, unsig //#include "3rd_assimp/postprocess.h" //#pragma comment(lib, "3rd/3rd_assimp/x64/assimp") #endif -#line 1 "3rd_json5.h" +#line 1 "engine/split/3rd_json5.h" // JSON5 + SJSON parser module // // License: @@ -240740,7 +240744,7 @@ int main() { #endif // JSON5_C #line 0 -#line 1 "3rd_gjk.h" +#line 1 "engine/split/3rd_gjk.h" // GJK distance algorithm. original code by @vurtun and @randygaul, public domain. // [src] https://gist.github.com/vurtun/29727217c269a2fbf4c0ed9a1d11cb40 // - rlyeh, public domain. @@ -241349,7 +241353,7 @@ gjk_result gjk_quad(float a_radius, float b_radius) { #endif #line 0 -#line 1 "3rd_compress.h" +#line 1 "engine/split/3rd_compress.h" // compress.c de/compressors into a single-file header // - rlyeh, public domain // @@ -252198,7 +252202,7 @@ unsigned file_decode(FILE* in, FILE* out, FILE *logfile) { // multi decoder #endif // COMPRESS_C #line 0 -#line 1 "3rd_archive.h" +#line 1 "engine/split/3rd_archive.h" // archive.c pak/zip/tar/dir archivers // - rlyeh, public domain @@ -253802,7 +253806,7 @@ int main( int argc, char **argv ) { #if is(win32) #include // timeapi.h #endif -#line 1 "3rd_thread.h" +#line 1 "engine/split/3rd_thread.h" /* ------------------------------------------------------------------------------ Licensing information can be found at the end of the file. @@ -255532,7 +255536,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ */ #line 0 -#line 1 "3rd_plmpeg.h" +#line 1 "engine/split/3rd_plmpeg.h" /* PL_MPEG - MPEG1 Video decoder, MP2 Audio decoder, MPEG-PS demuxer @@ -259798,7 +259802,7 @@ void plm_audio_matrix_transform(int s[32][3], int ss, float *d, int dp) { #endif // PL_MPEG_IMPLEMENTATION #line 0 -#line 1 "3rd_jo_mpeg.h" +#line 1 "engine/split/3rd_jo_mpeg.h" /* public domain Simple, Minimalistic, No Allocations MPEG writer - http://jonolick.com * * Latest revisions: @@ -260065,7 +260069,7 @@ void jo_write_mpeg(FILE *fp, const unsigned char *bgrx, int width, int height, i #endif #line 0 //#define _RTL_RUN_ONCE _RTL_RUN_ONCE2 // __MINGW64__ -#line 1 "3rd_https.h" +#line 1 "engine/split/3rd_https.h" /* ------------------------------------------------------------------------------ Licensing information can be found at the end of the file. @@ -307048,7 +307052,7 @@ int main() { #line 0 #undef F2 #undef F3 -#line 1 "3rd_enet.h" +#line 1 "engine/split/3rd_enet.h" /** * include/enet.h - a Single-Header auto-generated variant of enet.h library. * @@ -313189,7 +313193,7 @@ extern "C" { #endif // ENET_INCLUDE_H #line 0 #define tls_init tls_init2 -#line 1 "3rd_bq_websocket.h" +#line 1 "engine/split/3rd_bq_websocket.h" /* ------------------------------------------------------------------------------ This software is available under 2 licenses -- choose whichever you prefer. @@ -319552,7 +319556,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif // BQ_PLATFORM_IMPLEMENTATION #line 0 -#line 1 "3rd_simplex.h" +#line 1 "engine/split/3rd_simplex.h" /** 1D, 2D, 3D and 4D float Perlin Simplex noise */ /** Original code, stefan gustavson (PD). */ @@ -320035,7 +320039,7 @@ float snoise4(float x, float y, float z, float w) { #endif #line 0 -#line 1 "3rd_tfd.h" +#line 1 "engine/split/3rd_tfd.h" /* If you are using a C++ compiler to compile tinyfiledialogs.c (maybe renamed with an extension ".cpp") then comment out << extern "C" >> bellow in this header file) */ @@ -328095,7 +328099,7 @@ tinyfd_messageBox("The selected hexcolor is", #endif // TFD_IMPLEMENTATION #line 0 -#line 1 "3rd_stb_sprintf.h" +#line 1 "engine/split/3rd_stb_sprintf.h" // stb_sprintf - v1.10 - public domain snprintf() implementation // originally by Jeff Roberts / RAD Game Tools, 2015/10/20 // http://github.com/nothings/stb @@ -330004,7 +330008,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #line 0 #define g g2 -#line 1 "3rd_xml.h" +#line 1 "engine/split/3rd_xml.h" // original xml.h/xml.c files by tor andersson, public domain #ifndef xml_h @@ -330535,7 +330539,7 @@ struct xml *xml_parse(char *s, int preserve_white, char **errorp) #endif #line 0 #undef g -#line 1 "3rd_polychop.h" +#line 1 "engine/split/3rd_polychop.h" /* Progressive Mesh type Polygon Reduction Algorithm * * 1998: Original version by Stan Melax (c) 1998 @@ -331067,7 +331071,7 @@ for( int lock_ = (thread_mutex_lock( mutexptr ), 1); lock_; lock_ = (thread_mute //----------------------------------------------------------------------------- // C files -#line 1 "v4k_ds.c" +#line 1 "engine/split/v4k_ds.c" // ----------------------------------------------------------------------------- // sort/less @@ -331476,7 +331480,7 @@ char *cc8str(uint64_t x) { #line 0 -#line 1 "v4k_string.c" +#line 1 "engine/split/v4k_string.c" #include char* tempvl(const char *fmt, va_list vl) { @@ -331897,7 +331901,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_compat.c" +#line 1 "engine/split/v4k_compat.c" //----------------------------------------------------------------------------- // compat (unix & stdio.h) @@ -332014,7 +332018,7 @@ static void v4k_pre_init(); static void v4k_post_init(float); #line 0 -#line 1 "v4k_audio.c" +#line 1 "engine/split/v4k_audio.c" // @fixme: really shutdown audio & related threads before quitting. ma_dr_wav crashes. @@ -332607,7 +332611,7 @@ int ui_audio() { } #line 0 -#line 1 "v4k_buffer.c" +#line 1 "engine/split/v4k_buffer.c" // ---------------------------------------------------------------------------- // compression api @@ -333363,7 +333367,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_collide.c" +#line 1 "engine/split/v4k_collide.c" /* poly */ poly poly_alloc(int cnt) { poly p = {0}; @@ -334791,7 +334795,7 @@ void collide_demo() { // debug draw collisions // @fixme: fix leaks: poly_free() } #line 0 -#line 1 "v4k_cooker.c" +#line 1 "engine/split/v4k_cooker.c" // data pipeline // - rlyeh, public domain. // ---------------------------------------------------------------------------- @@ -335608,7 +335612,7 @@ void cook_config( const char *pathfile_to_cook_ini ) { // @todo: test run-from-" } #line 0 -#line 1 "v4k_data.c" +#line 1 "engine/split/v4k_data.c" static array(char) base64__decode(const char *in_, unsigned inlen) { @@ -335911,7 +335915,7 @@ bool data_tests() { } #line 0 -#line 1 "v4k_dll.c" +#line 1 "engine/split/v4k_dll.c" #if is(win32) # include # define dlopen(name,mode) (void*)( (name) ? LoadLibraryA(name) : GetModuleHandle(NULL)) @@ -335943,7 +335947,7 @@ int main() { int (*adder)() = dll("demo.dll", "add2"); printf("%d\n", adder(2,3) #endif #line 0 -#line 1 "v4k_file.c" +#line 1 "engine/split/v4k_file.c" // ----------------------------------------------------------------------------- // file @@ -337083,7 +337087,7 @@ bool ini_write(const char *filename, const char *section, const char *key, const #line 0 -#line 1 "v4k_font.c" +#line 1 "engine/split/v4k_font.c" // font framework. original code by Vassvik (UNLICENSED) // - rlyeh, public domain. // @@ -339433,7 +339437,7 @@ vec2 font_rect(const char *str) { } #line 0 -#line 1 "v4k_input.c" +#line 1 "engine/split/v4k_input.c" // input framework // - rlyeh, public domain // @@ -340166,7 +340170,7 @@ int ui_gamepads() { } #line 0 -#line 1 "v4k_math.c" +#line 1 "engine/split/v4k_math.c" // ----------------------------------------------------------------------------- // math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4 // - rlyeh, public domain @@ -341172,7 +341176,7 @@ void print34( float *m ) { print_(m,3,4); } void print44( float *m ) { print_(m,4,4); } #line 0 -#line 1 "v4k_memory.c" +#line 1 "engine/split/v4k_memory.c" size_t dlmalloc_usable_size(void*); // __ANDROID_API__ #if is(bsd) || is(osx) // bsd or osx @@ -341270,7 +341274,7 @@ void* forget( void *ptr ) { } #line 0 -#line 1 "v4k_network.c" +#line 1 "engine/split/v4k_network.c" #if is(tcc) && is(win32) // @fixme: https lib is broken with tcc. replaced with InternetReadFile() api for now @@ -341580,7 +341584,7 @@ static void network_init() { } #line 0 -#line 1 "v4k_netsync.c" +#line 1 "engine/split/v4k_netsync.c" typedef void* (*rpc_function)(); typedef struct rpc_call { @@ -342266,7 +342270,7 @@ void network_rpc_send(unsigned id, const char *cmdline) { } #line 0 -#line 1 "v4k_pack.c" +#line 1 "engine/split/v4k_pack.c" // endianness ----------------------------------------------------------------- // - rlyeh, public domain @@ -343726,7 +343730,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_reflect.c" +#line 1 "engine/split/v4k_reflect.c" // C reflection: enums, functions, structs, members and anotations. // - rlyeh, public domain // @@ -343838,7 +343842,7 @@ AUTOTEST { } #line 0 -#line 1 "v4k_render.c" +#line 1 "engine/split/v4k_render.c" // ----------------------------------------------------------------------------- // opengl @@ -348606,7 +348610,7 @@ anims_t animations(const char *pathfile, int flags) { } #line 0 -#line 1 "v4k_renderdd.c" +#line 1 "engine/split/v4k_renderdd.c" static const char *dd_vs = "//" FILELINE "\n" "in vec3 att_position;\n" "uniform mat4 u_MVP;\n" @@ -349454,7 +349458,7 @@ void ddraw_demo() { } #line 0 -#line 1 "v4k_scene.c" +#line 1 "engine/split/v4k_scene.c" // // @todo: remove explicit GL code from here @@ -350026,7 +350030,7 @@ void scene_render(int flags) { } #line 0 -#line 1 "v4k_script.c" +#line 1 "engine/split/v4k_script.c" typedef lua_State lua; // the Lua interpreter @@ -350207,7 +350211,7 @@ bool script_tests() { #undef XMACRO #line 0 -#line 1 "v4k_time.c" +#line 1 "engine/split/v4k_time.c" // ---------------------------------------------------------------------------- // time @@ -350458,7 +350462,7 @@ guid guid_create() { } #line 0 -#line 1 "v4k_system.c" +#line 1 "engine/split/v4k_system.c" #if (is(tcc) && is(linux)) || (is(gcc) && !is(mingw)) // || is(clang) int __argc; char **__argv; #if !is(ems) @@ -351343,7 +351347,7 @@ int (test)(const char *file, int line, const char *expr, bool result) { } #line 0 -#line 1 "v4k_id.c" +#line 1 "engine/split/v4k_id.c" // ----------------------------------------------------------------------------- // factory of handle ids, based on code by randy gaul (PD/Zlib licensed) // - rlyeh, public domain @@ -351513,7 +351517,7 @@ bool id_valid(uintptr_t id) { } #line 0 -#line 1 "v4k_ui.c" +#line 1 "engine/split/v4k_ui.c" #ifndef UI_ICONS_SMALL //#define UI_ICONS_SMALL 1 @@ -353978,7 +353982,7 @@ int ui_demo(int do_windows) { } #line 0 -#line 1 "v4k_profile.c" +#line 1 "engine/split/v4k_profile.c" #if ENABLE_PROFILER profiler_t profiler; int profiler_enabled = 1; @@ -354034,7 +354038,7 @@ void (ui_profiler)() { #endif #line 0 -#line 1 "v4k_video.c" +#line 1 "engine/split/v4k_video.c" // tip: convert video to x265/mp4. note: higher crf to increase compression (default crf is 28) // ffmpeg -i {{infile}} -c:v libx265 -crf 24 -c:a copy {{outfile}} @@ -354266,7 +354270,7 @@ void record_frame() { } #line 0 -#line 1 "v4k_window.c" +#line 1 "engine/split/v4k_window.c" //----------------------------------------------------------------------------- // fps locking @@ -355252,9 +355256,9 @@ void window_color(unsigned color) { winbgcolor = vec4(r / 255.0, g / 255.0, b / 255.0, a / 255.0); } void window_icon(const char *file_icon) { - unsigned len = file_size(file_icon); // len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + unsigned len = file_size(file_icon); len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( len ) { - void *data = file_read(file_icon); // data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + void *data = file_read(file_icon); data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( data ) { image_t img = image_from_mem(data, len, IMAGE_RGBA); if( img.w && img.h && img.pixels ) { @@ -355539,7 +355543,7 @@ int window_has_maximize() { #line 0 -#line 1 "v4k_obj.c" +#line 1 "engine/split/v4k_obj.c" // ----------------------------------------------------------------------------- // semantic versioning in a single byte (octal) // - rlyeh, public domain. @@ -355586,7 +355590,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_ai.c" +#line 1 "engine/split/v4k_ai.c" // AI framework // - rlyeh, public domain. // @@ -356162,7 +356166,7 @@ int pathfind_astar(int width, int height, const unsigned* map, vec2i src, vec2i } #line 0 -#line 1 "v4k_bt.c" +#line 1 "engine/split/v4k_bt.c" // Behavior trees: decision planning and decision making. // Supersedes finite state-machines (FSM) and hierarchical finite state-machines (HFSM). // - rlyeh, public domain. @@ -356426,7 +356430,7 @@ int ui_bt(bt_t *b) { } #line 0 -#line 1 "v4k_editor.c" +#line 1 "engine/split/v4k_editor.c" // editing: // nope > functions: add/rem property @@ -356880,13 +356884,14 @@ int main() { // editor is last in place, so it can use all internals from above headers -#line 1 "v4k_main.c" +#line 1 "engine/split/v4k_main.c" // ---------------------------------------------------------------------------- static void v4k_pre_init() { const char *appname = app_name(); - window_icon(va("%s.png", appname)); - ifdef(win32,window_icon(va("%s.ico", appname))); + const char *appdir = app_path(); + window_icon(va("%s/%s.png", appdir, appname)); + ifdef(win32,window_icon(va("%s/%s.ico", appdir, appname))); glfwPollEvents(); @@ -356922,8 +356927,9 @@ static void v4k_post_init(float refresh_rate) { } // @todo - // window_icon(vfs_file(va("%s.png", app))); - // window_icon(vfs_file(va("%s.ico", app))); + const char *appname = app_name(); + window_icon(va("%s.png", appname)); + window_icon(va("%s.ico", appname)); // display window glfwShowWindow(window); @@ -356972,7 +356978,7 @@ void v4k_init() { __argc = 0; } - #ifdef COOK_DISABLED + #if defined(COOK_DISABLED) || ENABLE_RETAIL cook_disable(); #endif diff --git a/engine/split/v4k_config.h b/engine/split/v4k_config.h index b7dc834..a897ce9 100644 --- a/engine/split/v4k_config.h +++ b/engine/split/v4k_config.h @@ -29,6 +29,10 @@ #define ENABLE_TESTS 0 // ifdef(debug, 1, 0) ///+ #endif +#ifndef ENABLE_RETAIL +#define ENABLE_RETAIL 0 +#endif + // ----------------------------------------------------------------------------- // if/n/def hell diff --git a/engine/split/v4k_main.c b/engine/split/v4k_main.c index 98dd244..6269b31 100644 --- a/engine/split/v4k_main.c +++ b/engine/split/v4k_main.c @@ -2,8 +2,9 @@ static void v4k_pre_init() { const char *appname = app_name(); - window_icon(va("%s.png", appname)); - ifdef(win32,window_icon(va("%s.ico", appname))); + const char *appdir = app_path(); + window_icon(va("%s/%s.png", appdir, appname)); + ifdef(win32,window_icon(va("%s/%s.ico", appdir, appname))); glfwPollEvents(); @@ -39,8 +40,9 @@ static void v4k_post_init(float refresh_rate) { } // @todo - // window_icon(vfs_file(va("%s.png", app))); - // window_icon(vfs_file(va("%s.ico", app))); + const char *appname = app_name(); + window_icon(va("%s.png", appname)); + window_icon(va("%s.ico", appname)); // display window glfwShowWindow(window); @@ -89,7 +91,7 @@ void v4k_init() { __argc = 0; } - #ifdef COOK_DISABLED + #if defined(COOK_DISABLED) || ENABLE_RETAIL cook_disable(); #endif diff --git a/engine/split/v4k_window.c b/engine/split/v4k_window.c index 3efe0a0..0ecee67 100644 --- a/engine/split/v4k_window.c +++ b/engine/split/v4k_window.c @@ -983,9 +983,9 @@ void window_color(unsigned color) { winbgcolor = vec4(r / 255.0, g / 255.0, b / 255.0, a / 255.0); } void window_icon(const char *file_icon) { - unsigned len = file_size(file_icon); // len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + unsigned len = file_size(file_icon); len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( len ) { - void *data = file_read(file_icon); // data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + void *data = file_read(file_icon); data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( data ) { image_t img = image_from_mem(data, len, IMAGE_RGBA); if( img.w && img.h && img.pixels ) { diff --git a/engine/v4k b/engine/v4k index a3cd2a4..80af2a3 100644 --- a/engine/v4k +++ b/engine/v4k @@ -6,7 +6,7 @@ #define GLAD_GL_IMPLEMENTATION // glad #endif -#line 1 "3rd_glad.h" +#line 1 "engine/split/3rd_glad.h" #ifndef __EMSCRIPTEN__ #ifndef _GNU_SOURCE // juicy linux headers @@ -11688,7 +11688,7 @@ int gladLoadGL( GLADloadfunc load) { #endif /* __EMSCRIPTEN__ */ #line 0 -#line 1 "3rd_icon_md.h" +#line 1 "engine/split/3rd_icon_md.h" // Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++ // from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints // for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf @@ -14030,7 +14030,7 @@ errno_t fopen_s( //--- -#line 1 "3rd_glfw3.h" +#line 1 "engine/split/3rd_glfw3.h" #ifndef __EMSCRIPTEN__ // forked from https://github.com/SasLuca/glfw-single-header (CC0-1.0 licensed) @@ -53227,7 +53227,7 @@ uint32_t _glfwKeySym2Unicode(unsigned int keysym) #line 0 #undef timeGetTime //--- -#line 1 "3rd_swrap.h" +#line 1 "engine/split/3rd_swrap.h" // https://github.com/BareRose/swrap/blob/master/swrap.h /* @@ -53520,7 +53520,7 @@ SWDEF int swrapMultiSelect (int* socks, size_t socks_size, double timeout) { #endif //SWRAP_H #line 0 //--- -#line 1 "3rd_jo_mp1.h" +#line 1 "engine/split/3rd_jo_mp1.h" /* public domain Simple, Minimalistic MPEG Layer 1 decoder - http://jonolick.com * * Revision History: @@ -53931,7 +53931,7 @@ bool jo_read_mp1(const void *input, int inputSize, short **output_, int *outputS #line 0 #define get_bits stb_vorbis_get_bits #define error stb_vorbis_error -#line 1 "3rd_stb_vorbis.h" +#line 1 "engine/split/3rd_stb_vorbis.h" // Ogg Vorbis audio decoder - v1.19 - public domain // http://nothings.org/stb_vorbis/ // @@ -59492,7 +59492,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #line 0 #undef error #undef DEBUG -#line 1 "3rd_sts_mixer.h" +#line 1 "engine/split/3rd_sts_mixer.h" /////////////////////////////////////////////////////////////////////////////// // sts_mixer.h - v0.02 // written 2016 by Sebastian Steinhauer @@ -60005,7 +60005,7 @@ int main(int argc, char *argv[]) { For more information, please refer to */ #line 0 -#line 1 "3rd_miniaudio.h" +#line 1 "engine/split/3rd_miniaudio.h" /* Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. miniaudio - v0.11.18 - 2023-08-07 @@ -152550,7 +152550,7 @@ SOFTWARE. #undef R #define error l_error #define panic l_panic -#line 1 "3rd_lua.h" +#line 1 "engine/split/3rd_lua.h" /* minilua.h -- Lua in a single header Project URL: https://github.com/edubart/minilua @@ -181528,7 +181528,7 @@ int main (int argc, char **argv) { #undef cast #undef G //--- -#line 1 "3rd_stb_image.h" +#line 1 "engine/split/3rd_stb_image.h" /* stb_image - v2.26 - public domain image loader - http://nothings.org/stb no warranty implied; use at your own risk @@ -189292,7 +189292,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ */ #line 0 -#line 1 "3rd_stb_image_write.h" +#line 1 "engine/split/3rd_stb_image_write.h" /* stb_image_write - v1.15 - public domain - http://nothings.org/stb writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 no warranty implied; use at your own risk @@ -190990,7 +190990,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define STBTT_free(x,u) ((void)(u),FREE(x)) #define NK_ASSERT ASSERT #define NK_DTOA(s,n) strcpy(s, va("%f", n)) // override cos built-in nk_dtoa() will freeze while parsing UINT_MAX otherwise -#line 1 "3rd_nuklear.h" +#line 1 "engine/split/3rd_nuklear.h" /* /// # Nuklear /// ![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif) @@ -221351,7 +221351,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// for his single header file packer. */ #line 0 -#line 1 "3rd_nuklear_glfw_gl3.h" +#line 1 "engine/split/3rd_nuklear_glfw_gl3.h" /* * Nuklear - 1.32.0 - public domain @@ -221902,7 +221902,7 @@ void nk_glfw3_shutdown(struct nk_glfw* glfw) #endif #endif #line 0 -#line 1 "3rd_nuklear_filebrowser.h" +#line 1 "engine/split/3rd_nuklear_filebrowser.h" // file browser for nuklear, based on https://github.com/vurtun/nuklear/blob/master/example/file_browser.c (public domain) // - rlyeh, public domain // @@ -222313,7 +222313,7 @@ static struct nk_image icon_load_rect(unsigned id, unsigned w, unsigned h, unsig //#include "3rd_assimp/postprocess.h" //#pragma comment(lib, "3rd/3rd_assimp/x64/assimp") #endif -#line 1 "3rd_json5.h" +#line 1 "engine/split/3rd_json5.h" // JSON5 + SJSON parser module // // License: @@ -222753,7 +222753,7 @@ int main() { #endif // JSON5_C #line 0 -#line 1 "3rd_gjk.h" +#line 1 "engine/split/3rd_gjk.h" // GJK distance algorithm. original code by @vurtun and @randygaul, public domain. // [src] https://gist.github.com/vurtun/29727217c269a2fbf4c0ed9a1d11cb40 // - rlyeh, public domain. @@ -223362,7 +223362,7 @@ gjk_result gjk_quad(float a_radius, float b_radius) { #endif #line 0 -#line 1 "3rd_compress.h" +#line 1 "engine/split/3rd_compress.h" // compress.c de/compressors into a single-file header // - rlyeh, public domain // @@ -234211,7 +234211,7 @@ unsigned file_decode(FILE* in, FILE* out, FILE *logfile) { // multi decoder #endif // COMPRESS_C #line 0 -#line 1 "3rd_archive.h" +#line 1 "engine/split/3rd_archive.h" // archive.c pak/zip/tar/dir archivers // - rlyeh, public domain @@ -235815,7 +235815,7 @@ int main( int argc, char **argv ) { #if is(win32) #include // timeapi.h #endif -#line 1 "3rd_thread.h" +#line 1 "engine/split/3rd_thread.h" /* ------------------------------------------------------------------------------ Licensing information can be found at the end of the file. @@ -237545,7 +237545,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ */ #line 0 -#line 1 "3rd_plmpeg.h" +#line 1 "engine/split/3rd_plmpeg.h" /* PL_MPEG - MPEG1 Video decoder, MP2 Audio decoder, MPEG-PS demuxer @@ -241811,7 +241811,7 @@ void plm_audio_matrix_transform(int s[32][3], int ss, float *d, int dp) { #endif // PL_MPEG_IMPLEMENTATION #line 0 -#line 1 "3rd_jo_mpeg.h" +#line 1 "engine/split/3rd_jo_mpeg.h" /* public domain Simple, Minimalistic, No Allocations MPEG writer - http://jonolick.com * * Latest revisions: @@ -242078,7 +242078,7 @@ void jo_write_mpeg(FILE *fp, const unsigned char *bgrx, int width, int height, i #endif #line 0 //#define _RTL_RUN_ONCE _RTL_RUN_ONCE2 // __MINGW64__ -#line 1 "3rd_https.h" +#line 1 "engine/split/3rd_https.h" /* ------------------------------------------------------------------------------ Licensing information can be found at the end of the file. @@ -289061,7 +289061,7 @@ int main() { #line 0 #undef F2 #undef F3 -#line 1 "3rd_enet.h" +#line 1 "engine/split/3rd_enet.h" /** * include/enet.h - a Single-Header auto-generated variant of enet.h library. * @@ -295202,7 +295202,7 @@ extern "C" { #endif // ENET_INCLUDE_H #line 0 #define tls_init tls_init2 -#line 1 "3rd_bq_websocket.h" +#line 1 "engine/split/3rd_bq_websocket.h" /* ------------------------------------------------------------------------------ This software is available under 2 licenses -- choose whichever you prefer. @@ -301565,7 +301565,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif // BQ_PLATFORM_IMPLEMENTATION #line 0 -#line 1 "3rd_simplex.h" +#line 1 "engine/split/3rd_simplex.h" /** 1D, 2D, 3D and 4D float Perlin Simplex noise */ /** Original code, stefan gustavson (PD). */ @@ -302048,7 +302048,7 @@ float snoise4(float x, float y, float z, float w) { #endif #line 0 -#line 1 "3rd_tfd.h" +#line 1 "engine/split/3rd_tfd.h" /* If you are using a C++ compiler to compile tinyfiledialogs.c (maybe renamed with an extension ".cpp") then comment out << extern "C" >> bellow in this header file) */ @@ -310108,7 +310108,7 @@ tinyfd_messageBox("The selected hexcolor is", #endif // TFD_IMPLEMENTATION #line 0 -#line 1 "3rd_stb_sprintf.h" +#line 1 "engine/split/3rd_stb_sprintf.h" // stb_sprintf - v1.10 - public domain snprintf() implementation // originally by Jeff Roberts / RAD Game Tools, 2015/10/20 // http://github.com/nothings/stb @@ -312017,7 +312017,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #line 0 #define g g2 -#line 1 "3rd_xml.h" +#line 1 "engine/split/3rd_xml.h" // original xml.h/xml.c files by tor andersson, public domain #ifndef xml_h @@ -312548,7 +312548,7 @@ struct xml *xml_parse(char *s, int preserve_white, char **errorp) #endif #line 0 #undef g -#line 1 "3rd_polychop.h" +#line 1 "engine/split/3rd_polychop.h" /* Progressive Mesh type Polygon Reduction Algorithm * * 1998: Original version by Stan Melax (c) 1998 diff --git a/engine/v4k.c b/engine/v4k.c index a32f370..e39628b 100644 --- a/engine/v4k.c +++ b/engine/v4k.c @@ -105,7 +105,7 @@ for( int lock_ = (thread_mutex_lock( mutexptr ), 1); lock_; lock_ = (thread_mute //----------------------------------------------------------------------------- // C files -#line 1 "v4k_ds.c" +#line 1 "engine/split/v4k_ds.c" // ----------------------------------------------------------------------------- // sort/less @@ -514,7 +514,7 @@ char *cc8str(uint64_t x) { #line 0 -#line 1 "v4k_string.c" +#line 1 "engine/split/v4k_string.c" #include char* tempvl(const char *fmt, va_list vl) { @@ -935,7 +935,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_compat.c" +#line 1 "engine/split/v4k_compat.c" //----------------------------------------------------------------------------- // compat (unix & stdio.h) @@ -1052,7 +1052,7 @@ static void v4k_pre_init(); static void v4k_post_init(float); #line 0 -#line 1 "v4k_audio.c" +#line 1 "engine/split/v4k_audio.c" // @fixme: really shutdown audio & related threads before quitting. ma_dr_wav crashes. @@ -1645,7 +1645,7 @@ int ui_audio() { } #line 0 -#line 1 "v4k_buffer.c" +#line 1 "engine/split/v4k_buffer.c" // ---------------------------------------------------------------------------- // compression api @@ -2401,7 +2401,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_collide.c" +#line 1 "engine/split/v4k_collide.c" /* poly */ poly poly_alloc(int cnt) { poly p = {0}; @@ -3829,7 +3829,7 @@ void collide_demo() { // debug draw collisions // @fixme: fix leaks: poly_free() } #line 0 -#line 1 "v4k_cooker.c" +#line 1 "engine/split/v4k_cooker.c" // data pipeline // - rlyeh, public domain. // ---------------------------------------------------------------------------- @@ -4646,7 +4646,7 @@ void cook_config( const char *pathfile_to_cook_ini ) { // @todo: test run-from-" } #line 0 -#line 1 "v4k_data.c" +#line 1 "engine/split/v4k_data.c" static array(char) base64__decode(const char *in_, unsigned inlen) { @@ -4949,7 +4949,7 @@ bool data_tests() { } #line 0 -#line 1 "v4k_dll.c" +#line 1 "engine/split/v4k_dll.c" #if is(win32) # include # define dlopen(name,mode) (void*)( (name) ? LoadLibraryA(name) : GetModuleHandle(NULL)) @@ -4981,7 +4981,7 @@ int main() { int (*adder)() = dll("demo.dll", "add2"); printf("%d\n", adder(2,3) #endif #line 0 -#line 1 "v4k_file.c" +#line 1 "engine/split/v4k_file.c" // ----------------------------------------------------------------------------- // file @@ -6121,7 +6121,7 @@ bool ini_write(const char *filename, const char *section, const char *key, const #line 0 -#line 1 "v4k_font.c" +#line 1 "engine/split/v4k_font.c" // font framework. original code by Vassvik (UNLICENSED) // - rlyeh, public domain. // @@ -8471,7 +8471,7 @@ vec2 font_rect(const char *str) { } #line 0 -#line 1 "v4k_input.c" +#line 1 "engine/split/v4k_input.c" // input framework // - rlyeh, public domain // @@ -9204,7 +9204,7 @@ int ui_gamepads() { } #line 0 -#line 1 "v4k_math.c" +#line 1 "engine/split/v4k_math.c" // ----------------------------------------------------------------------------- // math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4 // - rlyeh, public domain @@ -10210,7 +10210,7 @@ void print34( float *m ) { print_(m,3,4); } void print44( float *m ) { print_(m,4,4); } #line 0 -#line 1 "v4k_memory.c" +#line 1 "engine/split/v4k_memory.c" size_t dlmalloc_usable_size(void*); // __ANDROID_API__ #if is(bsd) || is(osx) // bsd or osx @@ -10308,7 +10308,7 @@ void* forget( void *ptr ) { } #line 0 -#line 1 "v4k_network.c" +#line 1 "engine/split/v4k_network.c" #if is(tcc) && is(win32) // @fixme: https lib is broken with tcc. replaced with InternetReadFile() api for now @@ -10618,7 +10618,7 @@ static void network_init() { } #line 0 -#line 1 "v4k_netsync.c" +#line 1 "engine/split/v4k_netsync.c" typedef void* (*rpc_function)(); typedef struct rpc_call { @@ -11304,7 +11304,7 @@ void network_rpc_send(unsigned id, const char *cmdline) { } #line 0 -#line 1 "v4k_pack.c" +#line 1 "engine/split/v4k_pack.c" // endianness ----------------------------------------------------------------- // - rlyeh, public domain @@ -12764,7 +12764,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_reflect.c" +#line 1 "engine/split/v4k_reflect.c" // C reflection: enums, functions, structs, members and anotations. // - rlyeh, public domain // @@ -12876,7 +12876,7 @@ AUTOTEST { } #line 0 -#line 1 "v4k_render.c" +#line 1 "engine/split/v4k_render.c" // ----------------------------------------------------------------------------- // opengl @@ -17644,7 +17644,7 @@ anims_t animations(const char *pathfile, int flags) { } #line 0 -#line 1 "v4k_renderdd.c" +#line 1 "engine/split/v4k_renderdd.c" static const char *dd_vs = "//" FILELINE "\n" "in vec3 att_position;\n" "uniform mat4 u_MVP;\n" @@ -18492,7 +18492,7 @@ void ddraw_demo() { } #line 0 -#line 1 "v4k_scene.c" +#line 1 "engine/split/v4k_scene.c" // // @todo: remove explicit GL code from here @@ -19064,7 +19064,7 @@ void scene_render(int flags) { } #line 0 -#line 1 "v4k_script.c" +#line 1 "engine/split/v4k_script.c" typedef lua_State lua; // the Lua interpreter @@ -19245,7 +19245,7 @@ bool script_tests() { #undef XMACRO #line 0 -#line 1 "v4k_time.c" +#line 1 "engine/split/v4k_time.c" // ---------------------------------------------------------------------------- // time @@ -19496,7 +19496,7 @@ guid guid_create() { } #line 0 -#line 1 "v4k_system.c" +#line 1 "engine/split/v4k_system.c" #if (is(tcc) && is(linux)) || (is(gcc) && !is(mingw)) // || is(clang) int __argc; char **__argv; #if !is(ems) @@ -20381,7 +20381,7 @@ int (test)(const char *file, int line, const char *expr, bool result) { } #line 0 -#line 1 "v4k_id.c" +#line 1 "engine/split/v4k_id.c" // ----------------------------------------------------------------------------- // factory of handle ids, based on code by randy gaul (PD/Zlib licensed) // - rlyeh, public domain @@ -20551,7 +20551,7 @@ bool id_valid(uintptr_t id) { } #line 0 -#line 1 "v4k_ui.c" +#line 1 "engine/split/v4k_ui.c" #ifndef UI_ICONS_SMALL //#define UI_ICONS_SMALL 1 @@ -23016,7 +23016,7 @@ int ui_demo(int do_windows) { } #line 0 -#line 1 "v4k_profile.c" +#line 1 "engine/split/v4k_profile.c" #if ENABLE_PROFILER profiler_t profiler; int profiler_enabled = 1; @@ -23072,7 +23072,7 @@ void (ui_profiler)() { #endif #line 0 -#line 1 "v4k_video.c" +#line 1 "engine/split/v4k_video.c" // tip: convert video to x265/mp4. note: higher crf to increase compression (default crf is 28) // ffmpeg -i {{infile}} -c:v libx265 -crf 24 -c:a copy {{outfile}} @@ -23304,7 +23304,7 @@ void record_frame() { } #line 0 -#line 1 "v4k_window.c" +#line 1 "engine/split/v4k_window.c" //----------------------------------------------------------------------------- // fps locking @@ -24290,9 +24290,9 @@ void window_color(unsigned color) { winbgcolor = vec4(r / 255.0, g / 255.0, b / 255.0, a / 255.0); } void window_icon(const char *file_icon) { - unsigned len = file_size(file_icon); // len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + unsigned len = file_size(file_icon); len = len ? len : vfs_size(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( len ) { - void *data = file_read(file_icon); // data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles + void *data = file_read(file_icon); data = data ? data : vfs_read(file_icon); // @fixme: reenable this to allow icons to be put in cooked .zipfiles if( data ) { image_t img = image_from_mem(data, len, IMAGE_RGBA); if( img.w && img.h && img.pixels ) { @@ -24577,7 +24577,7 @@ int window_has_maximize() { #line 0 -#line 1 "v4k_obj.c" +#line 1 "engine/split/v4k_obj.c" // ----------------------------------------------------------------------------- // semantic versioning in a single byte (octal) // - rlyeh, public domain. @@ -24624,7 +24624,7 @@ AUTORUN { #endif #line 0 -#line 1 "v4k_ai.c" +#line 1 "engine/split/v4k_ai.c" // AI framework // - rlyeh, public domain. // @@ -25200,7 +25200,7 @@ int pathfind_astar(int width, int height, const unsigned* map, vec2i src, vec2i } #line 0 -#line 1 "v4k_bt.c" +#line 1 "engine/split/v4k_bt.c" // Behavior trees: decision planning and decision making. // Supersedes finite state-machines (FSM) and hierarchical finite state-machines (HFSM). // - rlyeh, public domain. @@ -25464,7 +25464,7 @@ int ui_bt(bt_t *b) { } #line 0 -#line 1 "v4k_editor.c" +#line 1 "engine/split/v4k_editor.c" // editing: // nope > functions: add/rem property @@ -25918,13 +25918,14 @@ int main() { // editor is last in place, so it can use all internals from above headers -#line 1 "v4k_main.c" +#line 1 "engine/split/v4k_main.c" // ---------------------------------------------------------------------------- static void v4k_pre_init() { const char *appname = app_name(); - window_icon(va("%s.png", appname)); - ifdef(win32,window_icon(va("%s.ico", appname))); + const char *appdir = app_path(); + window_icon(va("%s/%s.png", appdir, appname)); + ifdef(win32,window_icon(va("%s/%s.ico", appdir, appname))); glfwPollEvents(); @@ -25960,8 +25961,9 @@ static void v4k_post_init(float refresh_rate) { } // @todo - // window_icon(vfs_file(va("%s.png", app))); - // window_icon(vfs_file(va("%s.ico", app))); + const char *appname = app_name(); + window_icon(va("%s.png", appname)); + window_icon(va("%s.ico", appname)); // display window glfwShowWindow(window); @@ -26010,7 +26012,7 @@ void v4k_init() { __argc = 0; } - #ifdef COOK_DISABLED + #if defined(COOK_DISABLED) || ENABLE_RETAIL cook_disable(); #endif diff --git a/engine/v4k.h b/engine/v4k.h index c7080c6..96ebad8 100644 --- a/engine/v4k.h +++ b/engine/v4k.h @@ -95,7 +95,7 @@ extern "C" { //----------------------------------------------------------------------------- // Headers -#line 1 "v4k_config.h" +#line 1 "engine/split/v4k_config.h" // ----------------------------------------------------------------------------- // config directives @@ -127,6 +127,10 @@ extern "C" { #define ENABLE_TESTS 0 // ifdef(debug, 1, 0) ///+ #endif +#ifndef ENABLE_RETAIL +#define ENABLE_RETAIL 0 +#endif + // ----------------------------------------------------------------------------- // if/n/def hell @@ -429,7 +433,7 @@ typedef char bool; #endif #line 0 -#line 1 "v4k_ds.h" +#line 1 "engine/split/v4k_ds.h" // data structures and utils: array, set, map, hash, sort. // - rlyeh, public domain @@ -893,7 +897,7 @@ enum { #line 0 -#line 1 "v4k_math.h" +#line 1 "engine/split/v4k_math.h" // ----------------------------------------------------------------------------- // math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4 // - rlyeh, public domain @@ -1253,7 +1257,7 @@ API void swapf4(vec4 *a, vec4 *b); #line 0 -#line 1 "v4k_ai.h" +#line 1 "engine/split/v4k_ai.h" typedef enum SWARM_DISTANCE { SWARM_DISTANCE_LINEAR, SWARM_DISTANCE_INVERSE_LINEAR, @@ -1306,7 +1310,7 @@ API int ui_swarm(swarm_t *self); API int pathfind_astar(int width, int height, const unsigned* map, vec2i src, vec2i dst, vec2i* path, size_t maxpath); #line 0 -#line 1 "v4k_bt.h" +#line 1 "engine/split/v4k_bt.h" // Behavior trees: decision planning and decision making. // Supersedes finite state-machines (FSM) and hierarchical finite state-machines (HFSM). // - rlyeh, public domain. @@ -1332,7 +1336,7 @@ API char *bt_funcname(bt_func fn); API int ui_bt(bt_t *b); #line 0 -#line 1 "v4k_audio.h" +#line 1 "engine/split/v4k_audio.h" // ----------------------------------------------------------------------------- // audio framework // - rlyeh, public domain @@ -1393,7 +1397,7 @@ enum AUDIO_FLAGS { API int audio_queue( const void *samples, int num_samples, int flags ); #line 0 -#line 1 "v4k_buffer.h" +#line 1 "engine/split/v4k_buffer.h" // ---------------------------------------------------------------------------- // compression api @@ -1491,7 +1495,7 @@ API uint64_t crc64(uint64_t h, const void *ptr, uint64_t len); API void entropy( void *buf, unsigned n ); #line 0 -#line 1 "v4k_collide.h" +#line 1 "engine/split/v4k_collide.h" // ----------------------------------------------------------------------------- // original code by @vurtun (PD) and @barerose (CC0). // [src] https://gist.github.com/vurtun/95f088e4889da2474ad1ce82d7911fee @@ -1652,7 +1656,7 @@ API poly diamond(vec3 from, vec3 to, float size); // poly_free() required API void collide_demo(); // debug draw collisions #line 0 -#line 1 "v4k_cooker.h" +#line 1 "engine/split/v4k_cooker.h" // ----------------------------------------------------------------------------- // asset pipeline framework // - rlyeh, public domain. @@ -1687,7 +1691,7 @@ API int cook_progress(); // [0..100] #line 0 -#line 1 "v4k_data.h" +#line 1 "engine/split/v4k_data.h" // ----------------------------------------------------------------------------- // data framework (json5, xml, compression) @todo:kvdb // - rlyeh, public domain @@ -1726,7 +1730,7 @@ API void xml_pop(); API bool data_tests(); #line 0 -#line 1 "v4k_dll.h" +#line 1 "engine/split/v4k_dll.h" // dll utils // - rlyeh, public domain @@ -1741,7 +1745,7 @@ API bool data_tests(); API void* dll(const char *filename, const char *symbol); #line 0 -#line 1 "v4k_editor.h" +#line 1 "engine/split/v4k_editor.h" // ----------------------------------------------------------------------------- // in-game editor // - rlyeh, public domain. @@ -1786,7 +1790,7 @@ API char* kit_translate2( const char *id, const char *langcode_iso639_1 ); // pe API void kit_dump_state( FILE *fp ); #line 0 -#line 1 "v4k_file.h" +#line 1 "engine/split/v4k_file.h" // ----------------------------------------------------------------------------- // files, cache and virtual filesystem (registered directories and/or compressed zip archives). // - rlyeh, public domain. @@ -1886,7 +1890,7 @@ API void ini_destroy(ini_t); API bool ini_write(const char *filename, const char *section, const char *key, const char *value); #line 0 -#line 1 "v4k_font.h" +#line 1 "engine/split/v4k_font.h" // ----------------------------------------------------------------------------- // font framework // - rlyeh, public domain @@ -1978,7 +1982,7 @@ API void* font_colorize(const char *text, const char *comma_types, const char *c API vec2 font_highlight(const char *text, const void *colors); #line 0 -#line 1 "v4k_id.h" +#line 1 "engine/split/v4k_id.h" // ----------------------------------------------------------------------------- // factory of handle ids, based on code by randy gaul (PD/Zlib licensed) // - rlyeh, public domain @@ -2007,7 +2011,7 @@ bool id_valid(uintptr_t id); #define ID_DATA_BITS (64-ID_COUNT_BITS) #line 0 -#line 1 "v4k_pack.h" +#line 1 "engine/split/v4k_pack.h" // ---------------------------------------------------------------------------- // endianness @@ -2198,7 +2202,7 @@ API int loadf(FILE *file, const char *format, ...); API int loadb(const unsigned char *buf, const char *format, ...); #line 0 -#line 1 "v4k_input.h" +#line 1 "engine/split/v4k_input.h" // ----------------------------------------------------------------------------- // input framework // - rlyeh, public domain @@ -2318,7 +2322,7 @@ enum INPUT_ENUMS { }; #line 0 -#line 1 "v4k_memory.h" +#line 1 "engine/split/v4k_memory.h" // ----------------------------------------------------------------------------- // memory framework // - rlyeh, public domain @@ -2358,7 +2362,7 @@ static FORCE_INLINE void *(CALLOC_)(size_t m, size_t n) { return n *= m, memset( static FORCE_INLINE char *(STRDUP_)(const char *s) { size_t n = strlen(s)+1; return ((char*)memcpy(REALLOC(0,n), s, n)); } ///- #line 0 -#line 1 "v4k_network.h" +#line 1 "engine/split/v4k_network.h" // ----------------------------------------------------------------------------- // network framework // - rlyeh, public domain @@ -2410,7 +2414,7 @@ API int tcp_debug(int); // toggle traffic monitoring on/off for given socket //API int tcp_crypt(int,uint64_t); // set shared secret #line 0 -#line 1 "v4k_netsync.h" +#line 1 "engine/split/v4k_netsync.h" // high-level, socket-less networking api. inspired by Quake, MPI and RenderBuckets theories. // - rlyeh, public domain // @@ -2496,7 +2500,7 @@ API int64_t client_join(const char *ip, int port); #define LOCALHOST_IPV6 "::1" #line 0 -#line 1 "v4k_obj.h" +#line 1 "engine/split/v4k_obj.h" // ----------------------------------------------------------------------------- // semantic versioning in a single byte (octal) // - rlyeh, public domain. @@ -2556,7 +2560,7 @@ typedef struct double4 { double x,y,z,w; } double4; #define double4(x,y,z,w) M_CAST(double4, (double)(x), (double)(y), (double)(z), (double)(w) ) #line 0 -#line 1 "v4k_profile.h" +#line 1 "engine/split/v4k_profile.h" // ----------------------------------------------------------------------------- // profiler & stats (@fixme: threadsafe) @@ -2588,7 +2592,7 @@ extern API int profiler_enabled; ///- #endif #line 0 -#line 1 "v4k_reflect.h" +#line 1 "engine/split/v4k_reflect.h" // C reflection: enums, functions, structs, members and anotations. // - rlyeh, public domain // @@ -2650,7 +2654,7 @@ API void reflected_printf(reflected_t *r); API void reflected_printf_all(); #line 0 -#line 1 "v4k_render.h" +#line 1 "engine/split/v4k_render.h" // ----------------------------------------------------------------------------- // naive rendering framework // - rlyeh, public domain @@ -3352,7 +3356,7 @@ API void* screenshot(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA API void* screenshot_async(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA #line 0 -#line 1 "v4k_renderdd.h" +#line 1 "engine/split/v4k_renderdd.h" // ----------------------------------------------------------------------------- // debugdraw framework // - rlyeh, public domain. @@ -3419,7 +3423,7 @@ API void ddraw_flush(); API void ddraw_flush_projview(mat44 proj, mat44 view); #line 0 -#line 1 "v4k_scene.h" +#line 1 "engine/split/v4k_scene.h" // ----------------------------------------------------------------------------- // scene framework // - rlyeh, public domain @@ -3556,7 +3560,7 @@ API unsigned scene_count_light(); API light_t* scene_index_light(unsigned index); #line 0 -#line 1 "v4k_script.h" +#line 1 "engine/split/v4k_script.h" // ----------------------------------------------------------------------------- // script framework // - rlyeh, public domain @@ -3572,7 +3576,7 @@ API void script_call(const char *lua_function); API bool script_tests(); #line 0 -#line 1 "v4k_string.h" +#line 1 "engine/split/v4k_string.h" // string framework // - rlyeh, public domain @@ -3666,7 +3670,7 @@ unsigned quark_intern( quarks_db*, const char *string ); const char *quark_string( quarks_db*, unsigned key ); #line 0 -#line 1 "v4k_time.h" +#line 1 "engine/split/v4k_time.h" // ----------------------------------------------------------------------------- // time framework utils // - rlyeh, public domain. @@ -3713,7 +3717,7 @@ AUTORUN { */ #line 0 -#line 1 "v4k_system.h" +#line 1 "engine/split/v4k_system.h" // ----------------------------------------------------------------------------- // system framework utils // - rlyeh, public domain. @@ -3794,7 +3798,7 @@ API int (test)(const char *file, int line, const char *expr, bool result); #line 0 -#line 1 "v4k_ui.h" +#line 1 "engine/split/v4k_ui.h" // ----------------------------------------------------------------------------- // immediate ui framework // - rlyeh, public domain @@ -3884,7 +3888,7 @@ API int ui_active(); // ui_is_active()? API int ui_demo(int do_windows); #line 0 -#line 1 "v4k_video.h" +#line 1 "engine/split/v4k_video.h" // ----------------------------------------------------------------------------- // video decoder (mpeg) // - rlyeh, public domain @@ -3927,7 +3931,7 @@ API bool record_active(); API void record_stop(void); #line 0 -#line 1 "v4k_window.h" +#line 1 "engine/split/v4k_window.h" // ----------------------------------------------------------------------------- // window framework // - rlyeh, public domain diff --git a/tools/join.py b/tools/join.py index d97c740..1bb6413 100644 --- a/tools/join.py +++ b/tools/join.py @@ -35,7 +35,7 @@ def process_command(name, value): file_path = os.path.join(input_path, value) print("Appending file: " + value) with open(file_path, "r") as file: - res = "#line 1 \"" + value + "\"\n" + res = "#line 1 \"engine/split/" + value + "\"\n" res += file.read() res += "#line 0" return res