genetics-vs-zombies/rust-pvz-genetics/src/genetics/plants/peashooter.rs
2026-04-05 22:02:45 +05:00

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,
}
}