|
|
@@ -186,22 +186,51 @@ fn load_export(path: &'static str) -> HashMap<V3, String> {
|
|
|
.collect()
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+fn get_adjacent_tiles(grid: &HashMap<V3, String>, training_data: &HashMap<String, HashMap<V3, Vec<String>>>) -> HashMap<V3, String> {
|
|
|
+ let mut adjacents: HashMap<V3, String> = HashMap::new();
|
|
|
+
|
|
|
+ for (pos, tile) in grid {
|
|
|
+
|
|
|
+ }
|
|
|
+ adjacents
|
|
|
+}
|
|
|
+
|
|
|
+fn get_unsolved_neighbors(cell: &V3, grid: &HashMap<V3, String>) -> Vec<V3> {
|
|
|
+ let mut neighbors = vec![];
|
|
|
+
|
|
|
+ for n in &cell.neighbors() {
|
|
|
+ if !grid.contains_key(n) {
|
|
|
+ neighbors.push(n.clone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ neighbors
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
fn wfc_solver(training_data: HashMap<String, HashMap<V3, Vec<String>>>) -> HashMap<V3, String> {
|
|
|
let mut new_grid: HashMap<V3, String> = HashMap::new();
|
|
|
+
|
|
|
// init start conditions
|
|
|
- new_grid.insert(V3::new(0, 0, 0), String::from("grass"));
|
|
|
+ new_grid.insert(V3::new(10, 0, 0), String::from("grass"));
|
|
|
|
|
|
+ for (pos, name) in &new_grid {
|
|
|
+ for unsolved_neighbor in get_unsolved_neighbors(pos, &new_grid) {
|
|
|
+ println!("Solving {:?} (next to {})", unsolved_neighbor, name);
|
|
|
+ let trained_data_for_this_tile = training_data.get(name).unwrap();
|
|
|
+ }
|
|
|
|
|
|
- loop {
|
|
|
- if new_grid.len() > 50 {break;}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
new_grid
|
|
|
}
|
|
|
|
|
|
fn main() {
|
|
|
|
|
|
- simplelog::SimpleLogger::init(LevelFilter::Info, Config::default());
|
|
|
+ let _ = simplelog::SimpleLogger::init(LevelFilter::Info, Config::default());
|
|
|
|
|
|
|
|
|
let mut import_volume: HashMap<V3, String> = HashMap::new();
|
|
|
@@ -228,6 +257,8 @@ fn main() {
|
|
|
|
|
|
let new_grid: HashMap<V3, String> = HashMap::new();
|
|
|
|
|
|
+ wfc_solver(training_data);
|
|
|
+
|
|
|
// dbg!(&vol);
|
|
|
// let mut adj_map: HashMap<String, Adjacency> = HashMap::new();
|
|
|
|