Johann Woelper 6 سال پیش
والد
کامیت
3b88030ae7
1فایلهای تغییر یافته به همراه35 افزوده شده و 4 حذف شده
  1. 35 4
      src/main.rs

+ 35 - 4
src/main.rs

@@ -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();