use antf::lib::screen::{Screen, init_screen}; use antf::lib::point::Point; use antf::lib::ai::AIGoal; use antf::lib::world::{World, simulate, render}; use antf::lib::entity::{Entities, Ant, Food, FoodGenerator}; use ncurses::*; use std::thread::sleep; use std::time; // make sure to run with --test-threads 1! otherwise output will be bugged #[test] fn test_reach_astar() { let mut board = init_screen();//Screen::new(40,40); let mut world = World::new(); let mut entities = Entities::new(); let a = Ant::new(0,0); let id = entities.add_entity(&a); let a = entities.data.get_mut(&id).unwrap(); let ant: &mut Ant = a.downcast_mut::().unwrap(); ant.plan.push(AIGoal::Reach(Point(10,10))); ant.plan.push(AIGoal::Reach(Point(-10,-10))); ant.plan.push(AIGoal::Reach(Point(10,-10))); ant.plan.push(AIGoal::Reach(Point(-10,10))); // craps out... need to make sure unwrap() is safe for _ in 0..420 { // TODO: add way to break out of the loop by hitting a random key simulate(&mut entities, &mut world, &mut board); render(&entities, &world, &board); sleep(time::Duration::from_millis(100)); refresh(); } clear(); endwin(); } /*#[test] fn test_drag() { let mut board = init_screen(); let mut world = World::new(); let mut entities = Entities::new(); let f = Food::new(10,10); let a = Ant::new(0,0); let fid = entities.add_entity(&f); let id = entities.add_entity(&a); let a = entities.data.get_mut(&id).unwrap(); let ant: &mut Ant = a.downcast_mut::().unwrap(); //ant.goal = for _ in 0..60 { // TODO: add way to break out of the loop by hitting a random key simulate(&mut entities, &mut world, &mut board); render(&entities, &world, &board); sleep(time::Duration::from_millis(100)); refresh(); } clear(); endwin(); }*/