public void InitAdjacent(Grid grid) { adjThread = new OffloadThread(); adjThread.Th_Offload = new ThreadStart(() => { this.adjacentTiles = GetAdjacent(grid); }); adjThread.Th_Child = new Thread(adjThread.Th_Offload); Console.WriteLine("Adjacent calculation Thread starting " + DateTime.Now.ToString("h:mm:ss")); adjThread.Th_Child.Start(); }
public bool GetPath(Grid grid, Vector2 position, Point destination, Random rng) { if (pathfinderID == -1) { for (int x = 0; x < pathfinder.Length; x++) { if (pathfinder[x] == null) { elasped = 0; pathfinder[x] = new OffloadThread(); pathfinder[x].Th_Offload = new ThreadStart(() => { this.pf_result = grid.Pathfinder(Grid.ToWorldPosition(destination, Grid.GetTileSize), Position, rng, isZombie); }); pathfinder[x].Th_Child = new Thread(pathfinder[x].Th_Offload); Console.WriteLine("Pathfinder Starting " + x.ToString() + ": " + DateTime.Now.ToString("h:mm:ss")); pathfinder[x].Th_Child.Start(); pathfinderID = x; return(true); } } } else if (pathfinderID > -1) { if (pathfinder[pathfinderID] == null) { elasped = 0; pathfinder[pathfinderID] = new OffloadThread(); pathfinder[pathfinderID].Th_Offload = new ThreadStart(() => { this.pf_result = grid.Pathfinder(Grid.ToWorldPosition(destination, Grid.GetTileSize), Position, rng, isZombie); }); Console.WriteLine("Pathfinder Starting " + pathfinderID.ToString() + ": " + DateTime.Now.ToString("h:mm:ss")); pathfinder[pathfinderID].Th_Child = new Thread(pathfinder[pathfinderID].Th_Offload); //Console.WriteLine("Pathfinder Starting " + DateTime.Now.ToString("h:mm:ss")); pathfinder[pathfinderID].Th_Child.Start(); return(true); } else { return(false); } } pathfinderID = -1; return(false); }
public AiUnit(Vector2 position, Point rectExtends, float speed, Dictionary <string, Vector3> states, Stats stats, Type_Data <Ai_Type> unit_types, Grid grid) : base(position, rectExtends, unit_types.Texture, unit_types.H_texture, unit_types.C_texture, speed, states) { this.stats = stats; real_health = this.stats.Health; waypoints = new List <Vector2>(); ai_State = Ai_States.Target; corners = new Dictionary <Corner, Vector2>(); pf_result = null; statusBar = new StatusBar(new Point(rectExtends.X, rectExtends.Y / 5), (int)stats.Health, statusBarTexture); pathfinder = new OffloadThread[1]; data = unit_types; checkWaypoints = false; }