diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-08-28 14:04:12 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-08-28 14:04:12 -0400 |
| commit | f7bd0793424ed8e024520a941cc4cfcf4eb84de2 (patch) | |
| tree | 37519eced8f4f66973d88b822513c7841d29a9fe /src/project.cpp | |
| parent | 3583af4e1c7979e8d309693d53fbe9184e067a50 (diff) | |
pke: use new pk_iter_t from pk.h
Diffstat (limited to 'src/project.cpp')
| -rw-r--r-- | src/project.cpp | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/src/project.cpp b/src/project.cpp index 00c4c1f..463c2c9 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -393,6 +393,11 @@ void PkeProject_Load(const char *filePath) { void PkeProject_Save(const char *filePath) { bool failed = false; + bool b; + pk_iter_t<Asset> iter_asset{}; + pk_iter_t<EntityType> iter_ent_type{}; + pk_bkt_arr *bkt_arr_assets; + pk_bkt_arr *bkt_arr_ent_types; const char *saveFilePath = filePath == nullptr ? PKE_PROJ_DEFAULT_FILENAME : filePath; std::ostringstream stream{}; @@ -408,38 +413,44 @@ void PkeProject_Save(const char *filePath) { f << PKE_PROJ_FILE_OBJ_END << std::endl; */ - using AssetLoopFn = pk_tmpln_1<void, Asset *, void *>; - using ETLoopFn = pk_tmpln_1<void, EntityType *, void *>; - AssetLoopFn asset_loop_cb{}; - ETLoopFn et_loop_cb{}; - - asset_loop_cb.func = [&stream](Asset *arr_obj_data) { - if (PK_HAS_FLAG(arr_obj_data->flags, PKE_ASSET_FLAGS_MEM_STATIC)) return; + bkt_arr_assets = AM_GetAssets(); + b = pk_bkt_arr_iter_begin(bkt_arr_assets, &iter_asset); + while (b == true) { + if (PK_HAS_FLAG(iter_asset->flags, PKE_ASSET_FLAGS_MEM_STATIC)) { + b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset); + continue; + } // TODO 2025-05-30 JCB // This should be a flag bool isGlobalAsset = false; for (long k = 0; k < embedded_shader_index_count; ++k) { - if (strncmp(embedded_shaders[k].name, arr_obj_data->key, AssetKeyLength) == 0) { + if (strncmp(embedded_shaders[k].name, iter_asset->key, AssetKeyLength) == 0) { isGlobalAsset = true; break; } } - if (isGlobalAsset) return; + if (isGlobalAsset) { + b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset); + continue; + } stream << PKE_PROJ_FILE_OBJ_ASSET << std::endl; - Proj_SerializeAsset(stream, *arr_obj_data); + Proj_SerializeAsset(stream, *iter_asset); stream << PKE_PROJ_FILE_OBJ_END << std::endl; - }; - pk_bkt_arr_iterate(AM_GetAssets(), &AssetLoopFn::invoke, &asset_loop_cb); + b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset); + } - et_loop_cb.func = [&stream](EntityType *arr_obj_data) { - if (arr_obj_data->modelAssetKey[0] == '\0') { - return; + bkt_arr_ent_types = EntityType_GetEntityTypes(); + b = pk_bkt_arr_iter_begin(bkt_arr_ent_types, &iter_ent_type); + while (b == true) { + if (iter_ent_type->modelAssetKey[0] == '\0') { + b = pk_bkt_arr_iter_increment(bkt_arr_ent_types, &iter_ent_type); + continue; } stream << PKE_PROJ_FILE_OBJ_ENTITY_TYPE << std::endl; - Proj_SerializeEntityType(stream, *arr_obj_data); + Proj_SerializeEntityType(stream, *iter_ent_type); stream << PKE_PROJ_FILE_OBJ_END << std::endl; - }; - pk_bkt_arr_iterate(EntityType_GetEntityTypes(), &ETLoopFn::invoke, &et_loop_cb); + b = pk_bkt_arr_iter_increment(bkt_arr_ent_types, &iter_ent_type); + } FontTypeIndex font_count; FontType *fonts = FontType_GetFonts(font_count); |
