summaryrefslogtreecommitdiff
path: root/src/scenes
diff options
context:
space:
mode:
Diffstat (limited to 'src/scenes')
-rw-r--r--src/scenes/world_map.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/scenes/world_map.c b/src/scenes/world_map.c
index 1e3f76d..39aa749 100644
--- a/src/scenes/world_map.c
+++ b/src/scenes/world_map.c
@@ -1054,6 +1054,51 @@ static void world_handle_scroll(platform_window* window)
if (camera_x < max_camera_offset_x) camera_x = max_camera_offset_x;
}
+static vec4 world_map_get_daytime_rect()
+{
+ int hour = _active_world->current_time.tm_hour;
+ int minutes = _active_world->current_time.tm_min;
+
+ int offset = area.w*zoom - ((((hour*60.0f) + minutes) / (24*60.0f)) * area.w*zoom);
+
+ vec4 rec = (vec4){0,0,0,0};
+ return rec;
+}
+
+static color img_get_px(image* img, s32 x, s32 y)
+{
+ if (x < 0 || y < 0) return rgba(0,0,0,0);
+ if (x > img->width || y > img->height) return rgba(0,0,0,0);
+ u8* bytes = (((u8*)img->data) + (img->width * img->channels * y) + (img->channels * x));
+ color c = *(color*)(bytes);
+ return c;
+}
+
+static s32 shadow_offset = 0;
+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;
+}
+
+static void world_map_draw_night(platform_window* window)
+{
+ int hour = _active_world->current_time.tm_hour;
+ int minutes = _active_world->current_time.tm_min;
+
+ int offset = area.w*zoom - ((((hour*60.0f) + minutes) / (24*60.0f)) * area.w*zoom);
+
+ shadow_offset = area.x + camera_x + offset;
+ 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);
+}
+
void world_map_scene_render(platform_window* window)
{
renderer->set_render_depth(5);
@@ -1106,6 +1151,8 @@ void world_map_scene_render(platform_window* window)
vec4 area = camera_get_target_rectangle(window);
renderer->render_rectangle(area.x + camera_x, area.y + camera_y, area.w*zoom, area.h*zoom, COLOR_WORLD_MAP_BACKGROUND);
renderer->render_image(img_world_map, area.x + camera_x, area.y + camera_y, area.w*zoom, area.h*zoom);
+
+ world_map_draw_night(window);
}
void world_map_scene_update(platform_window* window)