use antf::lib::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}; 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(); 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.goal = AIGoal::Reach(Point(10,10)); 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(); }