From 63ef163074b151b66f71d49ec8ae56d6eba1df2b Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Fri, 29 Nov 2024 17:18:07 +0100 Subject: close #22 --- src/scenery.c | 9 ++++++++- src/scenes/world_map.c | 13 ++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/scenery.c b/src/scenery.c index aca9dfe..39c91e6 100644 --- a/src/scenery.c +++ b/src/scenery.c @@ -1,5 +1,6 @@ vec2f px_to_coords(platform_window* window, double x, double y); +bool world_map_location_is_in_sun(vec2f px_pos); static void update_render_path(world* world, boat_route *route) { @@ -22,9 +23,15 @@ static void update_render_path(world* world, boat_route *route) float rad = atan2(end_pos.y-start_pos.y, end_pos.x-start_pos.x); gl_render_set_rotation(-rad); - renderer->render_image(img_boat, map_pos.x-3, map_pos.y-3, 3*zoom, 3*zoom); + float boatsize = 3*zoom; + renderer->render_image(img_boat, map_pos.x-boatsize/2, map_pos.y-boatsize/2, boatsize, boatsize); gl_render_set_rotation(0.0f); + if (!world_map_location_is_in_sun(map_pos)) { + float dotsize = 4*zoom; + renderer->render_image_tint(img_locationdot, map_pos.x-dotsize/2, map_pos.y-dotsize/2, dotsize, dotsize, rgba(255,255,0,10)); + } + route->current_point_duration += (frame_delta*1000.0f)*world->simulation_speed; if (route->current_point_duration > time_between_points) { if (!route->reversed) route->current_point++; diff --git a/src/scenes/world_map.c b/src/scenes/world_map.c index 39aa749..ec42a7b 100644 --- a/src/scenes/world_map.c +++ b/src/scenes/world_map.c @@ -1079,8 +1079,13 @@ static s32 shadow2_offset = 0; bool world_map_location_is_in_sun(vec2f px_pos) { - return !(img_get_px(img_shadow, shadow_offset + px_pos.x, px_pos.y).a == 255); - // return img_get_px(img_shadow, shadow2_offset - px_pos.x, px_pos.y).a == 255; + //px_pos.x *= (float)area.w/img_shadow->width; + return !(img_get_px(img_shadow, + (px_pos.x - shadow_offset)/((float)area.w/img_shadow->width*zoom), + (px_pos.y - camera_y - area.y)/((float)area.h/img_shadow->height*zoom)).a == 255 || + img_get_px(img_shadow, + (px_pos.x - shadow2_offset)/((float)area.w/img_shadow->width*zoom), + (px_pos.y - camera_y - area.y)/((float)area.h/img_shadow->height*zoom)).a == 255); } static void world_map_draw_night(platform_window* window) @@ -1094,9 +1099,7 @@ static void world_map_draw_night(platform_window* window) shadow2_offset = area.x + camera_x + offset - area.w*zoom; renderer->render_image_tint(img_shadow, shadow_offset, area.y + camera_y, area.w*zoom, area.h*zoom, rgba(255,255,255,100)); - //renderer->render_image_tint(img_shadow, shadow2_offset, area.y + camera_y, area.w*zoom, area.h*zoom, rgba(255,255,255,100)); - - img_get_px(img_shadow, offset, img_shadow->height/2); + renderer->render_image_tint(img_shadow, shadow2_offset, area.y + camera_y, area.w*zoom, area.h*zoom, rgba(255,255,255,100)); } void world_map_scene_render(platform_window* window) -- cgit v1.2.3-70-g09d2