]> git.lizzy.rs Git - nothing.git/commitdiff
Remove metadata usage from LevelPicker
authorrexim <reximkut@gmail.com>
Sat, 14 Dec 2019 19:53:22 +0000 (02:53 +0700)
committerrexim <reximkut@gmail.com>
Sat, 14 Dec 2019 19:53:22 +0000 (02:53 +0700)
src/game/level_folder.c
src/game/level_folder.h
src/game/level_picker.c
src/ui/list_selector.c
src/ui/list_selector.h

index 6e9b1204eaaf9b77207a90ad8ee6279c31f7fa37..3ee43e47c4c3eb27ca13b86a75350173d0dcff04 100644 (file)
@@ -23,10 +23,9 @@ void level_folder_read(const char *dirpath, LevelFolder *folder)
         abort();
     }
 
-    dynarray_clear(&folder->metadatas);
+    dynarray_clear(&folder->filepaths);
 
     char filepath[METADATA_FILEPATH_MAX_SIZE];
-    LevelMetadata metadata;
     for (struct dirent *d = readdir(level_dir);
          d != NULL;
          d = readdir(level_dir)) {
@@ -34,20 +33,7 @@ void level_folder_read(const char *dirpath, LevelFolder *folder)
 
         snprintf(filepath, METADATA_FILEPATH_MAX_SIZE,
                  "%s/%s", dirpath, d->d_name);
-
-        if (metadata_load_from_file(&metadata, filepath) < 0) {
-            log_warn("Can't read level: %s\n", filepath);
-            continue;
-        }
-
-        if(strcmp(metadata.version, VERSION) != 0) {
-            log_warn(
-                "Unsupported version for level [%s]: Expected `%s`, got `%s`\n",
-                filepath, VERSION, metadata.version);
-            continue;
-        }
-
-        dynarray_push(&folder->metadatas, &metadata);
+        dynarray_push(&folder->filepaths, filepath);
     }
 
     closedir(level_dir);
index f81ee7fc7f9a0c1b0f327f18a91a7e510bd6a378..44d8923c24c9978ad1a62a87f14fd0a9a89d15ec 100644 (file)
@@ -4,14 +4,14 @@
 #include "level_metadata.h"
 
 typedef struct {
-    Dynarray metadatas;
+    Dynarray filepaths;
 } LevelFolder;
 
 static inline
 LevelFolder create_level_folder(void)
 {
     LevelFolder result = {
-        .metadatas = create_dynarray(sizeof(LevelMetadata)),
+        .filepaths = create_dynarray(METADATA_FILEPATH_MAX_SIZE),
     };
     return result;
 }
@@ -19,7 +19,7 @@ LevelFolder create_level_folder(void)
 static inline
 void destroy_level_folder(LevelFolder level_folder)
 {
-    free(level_folder.metadatas.data);
+    free(level_folder.filepaths.data);
 }
 
 void level_folder_read(const char *dirpath, LevelFolder *folder);
index b53b67ab38e35f53a0066593fd10c3cae3e0903e..9ab72f6e52305870922540e558ea41d9a70817fb 100644 (file)
@@ -61,10 +61,9 @@ LevelPicker *create_level_picker(const char *dirpath)
         .color = COLOR_WHITE,
     };
 
-    level_picker->list_selector.items = level_picker->level_folder.metadatas;
+    level_picker->list_selector.items = level_picker->level_folder.filepaths;
     level_picker->list_selector.font_scale = vec(5.0f, 5.0f);
     level_picker->list_selector.padding_bottom = 50.0f;
-    level_picker->list_selector.list_item_text = list_item_text;
 
     return level_picker;
 }
@@ -183,11 +182,9 @@ const char *level_picker_selected_level(const LevelPicker *level_picker)
         return NULL;
     }
 
-    LevelMetadata *metadata = dynarray_pointer_at(
-        &level_picker->level_folder.metadatas,
+    return dynarray_pointer_at(
+        &level_picker->level_folder.filepaths,
         (size_t)level_picker->list_selector.selected_item);
-
-    return metadata->filepath;
 }
 
 void level_picker_clean_selection(LevelPicker *level_picker)
index 3b211fb60e5fd919ed7c41bf2470f677317d12c7..2ef98d055cfb5f2b880c674789dc66d3b335368d 100644 (file)
@@ -25,11 +25,7 @@ int list_selector_render(const Camera *camera,
             list_selector->position,
             vec(0.0f, (float) i * ((float) FONT_CHAR_HEIGHT * list_selector->font_scale.y + list_selector->padding_bottom)));
 
-        const char *item_text =
-            list_selector->list_item_text(
-                dynarray_pointer_at(
-                    &list_selector->items,
-                    i));
+        const char *item_text = dynarray_pointer_at(&list_selector->items, i);
 
         sprite_font_render_text(
             &camera->font,
@@ -67,11 +63,9 @@ Vec2f list_selector_size(const ListSelector *list_selector,
     Vec2f result = vec(0.0f, 0.0f);
 
     for (size_t i = 0; i < list_selector->items.count; ++i) {
-        const char *item_text =
-            list_selector->list_item_text(
-                    dynarray_pointer_at(
-                        &list_selector->items,
-                        i));
+        const char *item_text = dynarray_pointer_at(
+            &list_selector->items,
+            i);
 
         Rect boundary_box = sprite_font_boundary_box(
             vec(0.0f, 0.0f),
@@ -114,11 +108,9 @@ int list_selector_event(ListSelector *list_selector, const SDL_Event *event)
         Vec2f position = list_selector->position;
 
         for (size_t i = 0; i < list_selector->items.count; ++i) {
-            const char *item_text =
-                list_selector->list_item_text(
-                        dynarray_pointer_at(
-                            &list_selector->items,
-                            i));
+            const char *item_text = dynarray_pointer_at(
+                &list_selector->items,
+                i);
 
             Rect boundary_box = sprite_font_boundary_box(
                 position,
@@ -151,10 +143,9 @@ int list_selector_event(ListSelector *list_selector, const SDL_Event *event)
             vec_add(&position, vec(0.0f, (float) list_selector->cursor * single_item_height));
 
             const char *item_text =
-                list_selector->list_item_text(
-                    dynarray_pointer_at(
-                        &list_selector->items,
-                        list_selector->cursor));
+                dynarray_pointer_at(
+                    &list_selector->items,
+                    list_selector->cursor);
 
             Rect boundary_box = sprite_font_boundary_box(
                 position,
index 877092084b935870799ac168f80daad5314caada..aee76cd23b6c98b8270055336b5e04962e4e7622 100644 (file)
@@ -4,8 +4,6 @@
 #include "game/camera.h"
 #include "dynarray.h"
 
-typedef const char *(*ListItemText)(void *element);
-
 typedef struct {
     Dynarray items;
     size_t cursor;
@@ -13,7 +11,6 @@ typedef struct {
     Vec2f position;
     Vec2f font_scale;
     float padding_bottom;
-    ListItemText list_item_text;
 } ListSelector;
 
 int list_selector_render(const Camera *camera,