use crate::{Config, Input, sim::cell_sim::world::World}; pub fn create_compute_combined_overlay_offset( world: &World, config: &Config, input: &Input, ) -> impl Fn(i32, i32) -> (u8, u8, u8, u8) { puffin::profile_function!(); // TODO fix this move? move |pixel_x: i32, pixel_y: i32| { // could allow negative offsets too let mut offset: (u8, u8, u8, u8) = (0x00, 0x00, 0x00, 0x00); // // bounds // // left // let xl = -((board.get_game_width() / 2 + 1) as i32); // // right // let xu = (board.get_game_width() / 2 + 1) as i32; // // bottom // let yl = -((board.get_game_height() / 2 + 1) as i32); // // top // let yu = (board.get_game_height() / 2 + 1) as i32; // if ((pixel_x == xl || pixel_x == xu) && (pixel_y <= yu && pixel_y >= yl)) // || (pixel_y == yl || pixel_y == yu) && (pixel_x <= xu && pixel_x >= xl) // { // offset.0 = offset.0.saturating_add(0xFF); // offset.1 = offset.1.saturating_add(0xFF); // offset.2 = offset.2.saturating_add(0xFF); // } // // grid // if pixel_x % 30 == 0 || pixel_y % 30 == 0 { // offset.0 = offset.0.saturating_add(0x10); // offset.1 = offset.1.saturating_add(0x10); // offset.2 = offset.2.saturating_add(0x10); // } // // brush/selection // if input.last_mouse_pos_on_board.is_some_and(|p| { // ((pixel_x - p.0).pow(2) + (pixel_y - p.1).pow(2)) < (config.brush_radius as i32).pow(2) // }) { // offset.0 = offset.0.saturating_add(0x82); // offset.1 = offset.1.saturating_add(0xA1); // offset.2 = offset.2.saturating_add(0xAD); // } return offset; } }