diff --git a/src/main.rs b/src/main.rs index c1bd974..347e6d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ mod asteroids; mod nn; mod player; mod population; +mod skins; mod world; use nn::{ActivationFunc, NN}; @@ -11,7 +12,7 @@ use tinyfiledialogs::*; use macroquad::{ prelude::*, - ui::{hash, root_ui, widgets, Skin}, + ui::{hash, root_ui, widgets}, }; use population::{AutoSwitch, Population}; use world::World; @@ -95,144 +96,9 @@ async fn main() { let nums = &[ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", ]; - - let skin = { - let window_style = root_ui() - .style_builder() - .background(Image { - width: 1, - height: 1, - bytes: vec![0; 4], - }) - .background_margin(RectOffset::new(0., 0., 0., 0.)) - .color_inactive(WHITE) - .build(); - let button_style = root_ui() - .style_builder() - .background(Image { - width: 3, - height: 3, - bytes: vec![ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, - ], - }) - .background_margin(RectOffset::new(1., 1., 1., 1.)) - .color_hovered(RED) - .color_clicked(BLUE) - .text_color(WHITE) - .text_color_hovered(WHITE) - .text_color_clicked(WHITE) - .margin(RectOffset::new(10., 10., 8., 8.)) - .color_inactive(WHITE) - .build(); - let label_style = root_ui() - .style_builder() - .text_color(WHITE) - .font_size(24) - .margin(RectOffset::new(5., 5., 4., 4.)) - // .text_color_hovered(LIGHTGRAY) - // .text_color_clicked(WHITE) - .build(); - let group_style = root_ui() - .style_builder() - .color(Color::new(1., 0., 0., 0.)) - .build(); - let editbox_style = root_ui() - .style_builder() - .background(Image { - width: 3, - height: 3, - bytes: vec![ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, - ], - }) - .background_margin(RectOffset::new(1., 1., 1., 1.)) - .text_color(WHITE) - .build(); - let combobox_style = root_ui() - .style_builder() - .background(Image { - width: 3, - height: 3, - bytes: vec![ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, - ], - }) - .background_margin(RectOffset::new(1., 1., 1., 1.)) - .color_hovered(WHITE) - .color_selected_hovered(WHITE) - .color_inactive(WHITE) - .color_clicked(WHITE) - .color(WHITE) - .build(); - - Skin { - window_style, - button_style, - label_style, - group_style, - editbox_style, - combobox_style, - margin: 0., - ..root_ui().default_skin() - } - }; - - let mut skin2 = skin.clone(); - skin2.label_style = root_ui() - .style_builder() - .text_color(WHITE) - .font_size(16) - .text_color_hovered(LIGHTGRAY) - .text_color_clicked(WHITE) - .build(); - skin2.button_style = root_ui() - .style_builder() - .background(Image { - width: 3, - height: 3, - bytes: vec![ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, - 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, - ], - }) - .background_margin(RectOffset::new(1., 1., 1., 1.)) - .color_hovered(GREEN) - .color_clicked(GREEN) - .text_color(WHITE) - .text_color_hovered(WHITE) - .text_color_clicked(GREEN) - .margin(RectOffset::new(4., 4., 2., 2.)) - .color_inactive(WHITE) - .build(); - - let mut skin3 = skin2.clone(); - skin3.button_style = root_ui() - .style_builder() - .background(Image { - width: 3, - height: 3, - bytes: vec![ - 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, - ], - }) - .background_margin(RectOffset::new(1., 1., 1., 1.)) - .color_hovered(GREEN) - .color_clicked(GREEN) - .text_color(GREEN) - .text_color_hovered(GREEN) - .text_color_clicked(GREEN) - .margin(RectOffset::new(4., 4., 2., 2.)) - .color_inactive(GREEN) - .build(); + let skin = skins::get_ui_skin(); + let skin2 = skins::get_white_buttons_skin(); + let skin3 = skins::get_green_buttons_skin(); root_ui().push_skin(&skin); loop { diff --git a/src/skins.rs b/src/skins.rs new file mode 100644 index 0000000..b4a2f29 --- /dev/null +++ b/src/skins.rs @@ -0,0 +1,143 @@ +use macroquad::{prelude::*, ui::*}; + +pub fn get_ui_skin() -> Skin { + let window_style = root_ui() + .style_builder() + .background(Image { + width: 1, + height: 1, + bytes: vec![0; 4], + }) + .background_margin(RectOffset::new(0., 0., 0., 0.)) + .color_inactive(WHITE) + .build(); + let button_style = root_ui() + .style_builder() + .background(Image { + width: 3, + height: 3, + bytes: vec![ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, + ], + }) + .background_margin(RectOffset::new(1., 1., 1., 1.)) + .color_hovered(RED) + .color_clicked(BLUE) + .text_color(WHITE) + .text_color_hovered(WHITE) + .text_color_clicked(WHITE) + .margin(RectOffset::new(10., 10., 8., 8.)) + .color_inactive(WHITE) + .build(); + let label_style = root_ui() + .style_builder() + .text_color(WHITE) + .font_size(24) + .margin(RectOffset::new(5., 5., 4., 4.)) + .build(); + let group_style = root_ui() + .style_builder() + .color(Color::new(1., 0., 0., 0.)) + .build(); + let editbox_style = root_ui() + .style_builder() + .background(Image { + width: 3, + height: 3, + bytes: vec![ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, + ], + }) + .background_margin(RectOffset::new(1., 1., 1., 1.)) + .text_color(WHITE) + .build(); + let combobox_style = root_ui() + .style_builder() + .background(Image { + width: 3, + height: 3, + bytes: vec![ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, + ], + }) + .background_margin(RectOffset::new(1., 1., 1., 1.)) + .color_hovered(WHITE) + .color_selected_hovered(WHITE) + .color_inactive(WHITE) + .color_clicked(WHITE) + .color(WHITE) + .build(); + + Skin { + window_style, + button_style, + label_style, + group_style, + editbox_style, + combobox_style, + margin: 0., + ..root_ui().default_skin() + } +} + +pub fn get_white_buttons_skin() -> Skin { + let mut skin2 = get_ui_skin(); + skin2.label_style = root_ui() + .style_builder() + .text_color(WHITE) + .font_size(16) + .text_color_hovered(LIGHTGRAY) + .text_color_clicked(WHITE) + .build(); + skin2.button_style = root_ui() + .style_builder() + .background(Image { + width: 3, + height: 3, + bytes: vec![ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, + ], + }) + .background_margin(RectOffset::new(1., 1., 1., 1.)) + .color_hovered(GREEN) + .color_clicked(GREEN) + .text_color(WHITE) + .text_color_hovered(WHITE) + .text_color_clicked(GREEN) + .margin(RectOffset::new(4., 4., 2., 2.)) + .color_inactive(WHITE) + .build(); + skin2 +} + +pub fn get_green_buttons_skin() -> Skin { + let mut skin3 = get_white_buttons_skin(); + skin3.button_style = root_ui() + .style_builder() + .background(Image { + width: 3, + height: 3, + bytes: vec![ + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 255, 0, + 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + ], + }) + .background_margin(RectOffset::new(1., 1., 1., 1.)) + .color_hovered(GREEN) + .color_clicked(GREEN) + .text_color(GREEN) + .text_color_hovered(GREEN) + .text_color_clicked(GREEN) + .margin(RectOffset::new(4., 4., 2., 2.)) + .color_inactive(GREEN) + .build(); + skin3 +}