]> git.lizzy.rs Git - nothing.git/commitdiff
try to fix build
authorDanil Kolumbet <kolumbetko@gmail.com>
Thu, 19 Dec 2019 23:27:51 +0000 (01:27 +0200)
committerDanil Kolumbet <kolumbetko@gmail.com>
Thu, 19 Dec 2019 23:27:51 +0000 (01:27 +0200)
src/game.c
src/game/level_picker.c
src/game/level_picker.h

index 54633ce984219b9a8251496536f68d1b2ce84568..f355297802ca4f7fc0e7deb107681a93f35aba81 100644 (file)
@@ -226,7 +226,7 @@ int game_update(Game *game, float delta_time)
     } break;
 
     case GAME_STATE_LEVEL_PICKER: {
-        if (level_picker_update(&game->level_picker, delta_time) < 0) {
+        if (level_picker_update(&game->level_picker, &game->camera, delta_time) < 0) {
             return -1;
         }
 
index 9d39bb5e47bdac50dbad5b69b026df3b784f77d2..c8b7a92ebb8269a8f02047c468d46d0cf747ff4e 100644 (file)
@@ -60,7 +60,7 @@ void level_picker_populate(LevelPicker *level_picker,
     };
 }
 
-int level_picker_render(LevelPicker *level_picker,
+int level_picker_render(const LevelPicker *level_picker,
                         const Camera *camera)
 {
     trace_assert(level_picker);
@@ -79,16 +79,9 @@ int level_picker_render(LevelPicker *level_picker,
         camera,
         vec(viewport.w * 0.5f - title_size.x * 0.5f, TITLE_MARGIN_TOP));
 
-    if (level_picker->cursor * ITEM_HEIGHT + level_picker->scroll.y > scrolling_area_height) {
-        level_picker->scroll.y -= ITEM_HEIGHT * SCROLLING_SPEED_FRACTION;
-    }
-    if (level_picker->cursor * ITEM_HEIGHT + level_picker->scroll.y < 0) {
-        level_picker->scroll.y += ITEM_HEIGHT * SCROLLING_SPEED_FRACTION;
-    }
-
     const float proportional_scroll = level_picker->scroll.y * scrolling_area_height / level_picker->size.y;
     const float number_of_items_in_scrolling_area = scrolling_area_height / ITEM_HEIGHT;
-    const float percent_of_visible_items = (float) number_of_items_in_scrolling_area / level_picker->items.count;
+    const float percent_of_visible_items = number_of_items_in_scrolling_area / (float) level_picker->items.count;
 
     if(percent_of_visible_items < 1) {
         SDL_Rect scrollbar = rect_for_sdl(
@@ -100,7 +93,7 @@ int level_picker_render(LevelPicker *level_picker,
             rect_from_vecs(
                 vec(level_picker->position.x + level_picker->size.x, level_picker->position.y - proportional_scroll),
                 vec(SCROLLBAR_WIDTH, scrolling_area_height * percent_of_visible_items)));
-        
+
         if (SDL_SetRenderDrawColor(camera->renderer, 255, 255, 255, 255) < 0) {
             return -1;
         }
@@ -170,10 +163,21 @@ int level_picker_render(LevelPicker *level_picker,
 }
 
 int level_picker_update(LevelPicker *level_picker,
+                        Camera *camera,
                         float delta_time)
 {
     trace_assert(level_picker);
 
+    const Rect viewport = camera_view_port_screen(camera);
+    const float scrolling_area_height = viewport.h - ITEM_HEIGHT - level_picker->position.y;
+
+    if ((float) level_picker->cursor * ITEM_HEIGHT + level_picker->scroll.y > scrolling_area_height) {
+        level_picker->scroll.y -= ITEM_HEIGHT * SCROLLING_SPEED_FRACTION;
+    }
+    if ((float) level_picker->cursor * ITEM_HEIGHT + level_picker->scroll.y < 0) {
+        level_picker->scroll.y += ITEM_HEIGHT * SCROLLING_SPEED_FRACTION;
+    }
+
     vec_add(&level_picker->camera_position,
             vec(50.0f * delta_time, 0.0f));
 
index d32c7d040d643e436ca07206d25ab8b3fd7d0885..a9dcbd71e854f6d236d0d3d2b74b347aec129df0 100644 (file)
@@ -30,9 +30,10 @@ void destroy_level_picker(LevelPicker level_picker)
     free(level_picker.items.data);
 }
 
-int level_picker_render(LevelPicker *level_picker,
+int level_picker_render(const LevelPicker *level_picker,
                         const Camera *camera);
 int level_picker_update(LevelPicker *level,
+                        Camera *camera,
                         float delta_time);
 int level_picker_event(LevelPicker *level_picker,
                        const SDL_Event *event);