Ejemplo n.º 1
0
 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();
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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;
 }