extract skins
This commit is contained in:
		
							parent
							
								
									7cbfcd91af
								
							
						
					
					
						commit
						18fd825c99
					
				
							
								
								
									
										144
									
								
								src/main.rs
								
								
								
								
							
							
						
						
									
										144
									
								
								src/main.rs
								
								
								
								
							| 
						 | 
					@ -4,6 +4,7 @@ mod asteroids;
 | 
				
			||||||
mod nn;
 | 
					mod nn;
 | 
				
			||||||
mod player;
 | 
					mod player;
 | 
				
			||||||
mod population;
 | 
					mod population;
 | 
				
			||||||
 | 
					mod skins;
 | 
				
			||||||
mod world;
 | 
					mod world;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use nn::{ActivationFunc, NN};
 | 
					use nn::{ActivationFunc, NN};
 | 
				
			||||||
| 
						 | 
					@ -11,7 +12,7 @@ use tinyfiledialogs::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use macroquad::{
 | 
					use macroquad::{
 | 
				
			||||||
    prelude::*,
 | 
					    prelude::*,
 | 
				
			||||||
    ui::{hash, root_ui, widgets, Skin},
 | 
					    ui::{hash, root_ui, widgets},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use population::{AutoSwitch, Population};
 | 
					use population::{AutoSwitch, Population};
 | 
				
			||||||
use world::World;
 | 
					use world::World;
 | 
				
			||||||
| 
						 | 
					@ -95,144 +96,9 @@ async fn main() {
 | 
				
			||||||
    let nums = &[
 | 
					    let nums = &[
 | 
				
			||||||
        "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
 | 
					        "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					    let skin = skins::get_ui_skin();
 | 
				
			||||||
    let skin = {
 | 
					    let skin2 = skins::get_white_buttons_skin();
 | 
				
			||||||
        let window_style = root_ui()
 | 
					    let skin3 = skins::get_green_buttons_skin();
 | 
				
			||||||
            .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();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    root_ui().push_skin(&skin);
 | 
					    root_ui().push_skin(&skin);
 | 
				
			||||||
    loop {
 | 
					    loop {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue