public IActionResult Update(int IdSuitcase, Suitcase updatedSuitcase)
        {
            if (_context.Suitcase.Count(s => s.IdSuitcase == IdSuitcase) == 0)
            {
                return(NotFound());
            }
            _context.Suitcase.Attach(updatedSuitcase);
            _context.Entry(updatedSuitcase).State = EntityState.Modified;
            _context.SaveChanges();

            return(Ok(updatedSuitcase));
        }
        /// <summary>
        /// Places the suitcases
        /// </summary>
        /// <param name="robots"></param>
        /// <param name="returnHome"></param>
        /// <param name="startAt"></param>
        private void PlaceAllSuitcases(List <Robot> robots, bool returnHome, int startAt = 0)
        {
            List <Coordinate> suitcasesCoordinates = w.GetOccupationList();

            for (int i = 0; i < robots.Count; i++)
            {
                int        j           = i + startAt;
                char       vertex      = suitcasesCoordinates[j].GetVertex().Value;
                Robot      r           = robots[i];
                Suitcase   s           = suitcasesCoordinates[j].GetSuitcase();
                Coordinate destination = suitcasesCoordinates[j];
                r.AddTask(new RobotGrab(vertex, s, coordinates, g, false));
                r.AddTask(new RobotMove(g.shortest_path('A', vertex), coordinates, g));
                r.AddTask(new RobotRelease(s, new Coordinate(destination.GetX(), destination.GetY(), destination.GetZ())));
                s.Move(15, 0, 5); // Move to A

                if (returnHome)
                {
                    r.AddTask(new RobotMove(g.shortest_path(vertex, 'A'), coordinates, g));
                }
            }
        }
Exemple #3
0
        public static bool CreateAndCarryshoppingBag(Sim sim)
        {
            bool     flag     = false;
            Suitcase suitcase = (GlobalFunctions.CreateObjectOutOfWorld("suitcaseVintage", ProductVersion.EP9) as Suitcase);

            //if (suitcase != null)
            //{
            //    if (sim.ParentToRightHand(suitcase))
            //    {
            //        CarrySystem.EnterWhileHolding(sim, suitcase);
            //    }
            //}

            if (suitcase != null)
            {
                flag = sim.TryAddObjectToInventory(suitcase);
                if (flag)
                {
                    flag = CarrySystem.PickUpFromSimInventory(sim, suitcase, true);
                }
            }
            return(flag);
        }
        /// <summary>
        /// The main simulate method
        /// </summary>
        public void Simulate()
        {
            Thread.Sleep(5000); // Wait for world to be loaded, improving performance
            running = true;

            // Fetch airplane
            Airplane a = w.GetAirplanes()[0];

            // Fetch robots
            List <Robot> robots = w.GetRobots();

            // Kickstart program
            FetchAllSuitcases(robots);

            while (running)
            {
                if (transportSuitcasesCount == 4)
                {
                    timesFetchedSuitcases++;
                    int toAdd = 0;
                    if (timesFetchedSuitcases % 2 == 0)
                    {
                        toAdd = 4;
                    }
                    // Load into airplane
                    List <Coordinate> occupationList = w.GetOccupationList();
                    for (int i = 0; i < 4; i++)
                    {
                        Coordinate c = occupationList[i + toAdd];
                        Suitcase   s = c.GetSuitcase();
                        s.Move(100, 100, 100);
                    }
                    // Airplane liftoff
                    a.AddTask(new AirplaneMove(new Coordinate(70, 4.3, -15), true));         // point 3
                    a.AddTask(new AirplaneMove(new Coordinate(125, 59, -15), true, true));   // point 4
                    a.AddTask(new AirplaneMove(new Coordinate(-50, 4.3, -15), false, true)); // point 1
                    a.AddTask(new AirplaneMove(new Coordinate(15, 4.3, -15)));               // point 2
                    transportSuitcasesCount = 0;
                }
                if (a.GetLanded())
                {
                    timesLanded++;
                    // Move suitcases to A
                    List <Coordinate> occupationList = w.GetOccupationList();
                    int toAdd = 0;
                    if (timesFetchedSuitcases % 2 == 0)
                    {
                        toAdd = 4;
                    }
                    else
                    {
                        this.startAt = 4;
                    }
                    for (int i = 0; i < 4; i++)
                    {
                        Coordinate c = occupationList[i + toAdd];
                        Suitcase   s = c.GetSuitcase();
                        s.Move(15, 0, 5); // Move to A
                    }
                    PlaceAllSuitcases(robots, true, toAdd);
                    a.SetLanded(false);
                    if (timesLanded == 2)
                    {
                        // Redo simulation
                        FetchAllSuitcases(robots);
                        timesLanded = 0;
                    }
                }
                if (this.startAt == 4)
                {
                    FetchAllSuitcases(robots, startAt);
                    startAt = 0;
                }

                UpdateFrame();
            }
        }
 public IActionResult CreateCuitcase(Suitcase suitcase)
 {
     _context.Suitcase.Add(suitcase);
     _context.SaveChanges();
     return(StatusCode(201, suitcase));
 }