summaryrefslogtreecommitdiff
path: root/src/project.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/project.cpp')
-rw-r--r--src/project.cpp47
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);