/// <summary> /// Restock the shelves /// </summary> /// <param name="train">Train that brings the shelves</param> private void ShelfRestock(Train train) { ShelfTransporters forklift = forklifts.Find(x => x.Status() == false); Shelf shelf = shelfs.First(x => x.Status() == false && Math.Round(x.x, 1) == 16 && Math.Round(x.z, 1) == -2.4 && Math.Round(x.y, 1) == 1000); Node node = g.GetNodes().First(x => x.name.Contains("Res") && x.shelf == null); if (forklift != null && shelf != null && node != null) { forklift.Move(18, 0, 31); shelf.Move(18, 0, 31); forklift.AddShelf(shelf); forklift.AddTask(new ForkliftPickUp(shelf)); forklift.AddTask(new ForkliftMove(g.Shortest_Path("Forklift", node.name))); forklift.AddTask(new ForkliftDeliver(node, shelf)); forklift.AddTask(new ForkliftMove(g.Shortest_Path(node.name, "Forklift"))); forklift.AddTask(new ForkliftReset()); forklift.UpdateStatus(); train.itemRemove(); node.shelf = shelf; ShelfReplace.Add(node); } }
/// <summary> /// Forklift pick up the shelf /// </summary> /// <param name="forklift">Forklift</param> public void StartTask(ShelfTransporters forklift) { shelf.Move(shelf.x, shelf.y + 0.3, shelf.z); forklift.AddShelf(shelf); }
/// <summary> /// Bool check if robot has reset /// </summary> /// <param name="forklift">Forklift</param> /// <returns>Forklift reset</returns> public bool TaskCompleted(ShelfTransporters forklift) { return(Math.Round(forklift.x, 1) == 32 && Math.Round(forklift.y, 1) == 1000 && Math.Round(forklift.z, 1) == 32); }
/// <summary> /// Resets the forklift /// </summary> /// <param name="forklift">Forklift</param> public void StartTask(ShelfTransporters forklift) { forklift.Move(32, 1000, 32); }
/// <summary> /// Add forklift to list /// </summary> /// <param name="train">Train</param> public void AddForkliftToList(ShelfTransporters forklift) { forklifts.Add(forklift); }