43 lines
1.7 KiB
Rust
43 lines
1.7 KiB
Rust
use crate::genetics::{gene::{Gene, GenePlace, GeneSource, GeneType}, genome::Genome};
|
|
use godot::builtin::Vector2;
|
|
|
|
pub fn peashooter_template() -> Genome {
|
|
Genome::from_edges(vec![
|
|
Gene::new(GeneSource::Peashooter, GenePlace::Root, GeneType::pure_producer(|_|{todo!()}), "peashooter/peashooter_base.tres".to_string(), get_place_base),
|
|
Gene::new(GeneSource::Peashooter, GenePlace::Stem, GeneType::fill_all(),"peashooter/peashooter_stem.tres".to_string(),get_place_stem),
|
|
Gene::new(GeneSource::Peashooter, GenePlace::Head, GeneType::fill_all(),"peashooter/peashooter_head.tres".to_string(),get_place_head),
|
|
Gene::visible(GeneSource::Peashooter, GenePlace::Eyes, GeneType::Structural,"peashooter/peashooter_eyes.tres".to_string()),
|
|
Gene::visible(GeneSource::Peashooter, GenePlace::Mouth, GeneType::consumer(|_|{}), "peashooter/peashooter_mouth.tres".to_string()),
|
|
Gene::visible(GeneSource::Peashooter, GenePlace::Leaf, GeneType::modifier(|_|{todo!()}), "peashooter/peashooter_leaf.tres".to_string()),
|
|
], vec![
|
|
(0,1),
|
|
(1,2),
|
|
(2,3),
|
|
(2,4),
|
|
(2,5)
|
|
]).unwrap()
|
|
}
|
|
|
|
fn get_place_base(place: GenePlace) -> Vector2 {
|
|
match place {
|
|
GenePlace::Stem => Vector2::new(-1.5,-10.5),
|
|
_ => Vector2::ZERO,
|
|
}
|
|
}
|
|
|
|
fn get_place_stem(place: GenePlace) -> Vector2 {
|
|
match place {
|
|
GenePlace::Head => Vector2::new(4.,-15.),
|
|
_ => Vector2::ZERO,
|
|
}
|
|
}
|
|
|
|
fn get_place_head(place: GenePlace) -> Vector2 {
|
|
match place {
|
|
GenePlace::Eyes => Vector2::new(1.5,-3.5),
|
|
GenePlace::Leaf => Vector2::new(-12.,-13.),
|
|
GenePlace::Mouth => Vector2::new(6.5,5.),
|
|
_ => Vector2::ZERO,
|
|
}
|
|
}
|
|
|