public override void Update(float deltaTime)
 {
     ActionModel.Subject = null;
     foreach (TurtleModel turtle in TurtleModels)
     {
         if (turtle.Selected)
         {
             ActionModel.Subject = turtle;
             break;
         }
     }
     if (ActionModel.Subject != null)
     {
         ActionModel.Target = null;
         foreach (SeatModel seat in SeatModels)
         {
             if (seat.Selected && !seat.Position.Equals(ActionModel.Subject.Position))
             {
                 ActionModel.Target = seat;
                 break;
             }
         }
         if (ActionModel.Target != null)
         {
             // Conditions met for turtle move
             ActionModel.Subject.Selected = false;
             ActionModel.Target.Selected  = false;
             TurtleModel.AssignTurtleToSeat(ActionModel.Subject, ActionModel.Target);
             ActionModel.Reset();
         }
     }
 }
Exemplo n.º 2
0
 public static void AssignTurtleToSeat(TurtleModel turtleModel, SeatModel seatModel)
 {
     if (turtleModel != null && seatModel != null)
     {
         SeatModel oldSeat = turtleModel.TargetSeat;
         if (oldSeat != null)
         {
             oldSeat.Taken = false;
         }
         turtleModel.TargetSeat = seatModel;
         seatModel.Taken        = true;
     }
 }
Exemplo n.º 3
0
 public override void Update(float deltaTime)
 {
     timeSinceLastSpawn += deltaTime;
     if (timeSinceLastSpawn > SPAWN_INTERVAL_SECONDS)
     {
         timeSinceLastSpawn -= SPAWN_INTERVAL_SECONDS;
         SeatModel assignedSeat = GetFreeQueueSeat();
         if (assignedSeat != null)
         {
             // Spawn turtle
             TurtleModel newTurtle = new TurtleModel()
             {
                 StaticData = ObjectDatabaseModel.Instance["turtle_1_no_materials"]
             };
             Turtles.Add(newTurtle);
             TurtleModel.AssignTurtleToSeat(newTurtle, assignedSeat);
         }
     }
 }
Exemplo n.º 4
0
        public override void Update(float deltaTime)
        {
            TurtleModel clickedTurtle = null;

            foreach (TurtleModel turtle in TurtleModels)
            {
                if (turtle.TargetSeat == null)
                {
                    turtle.Position = Vector2.zero;
                }
                else
                {
                    turtle.Position = Vector2.MoveTowards(turtle.Position, turtle.TargetPosition, (turtle.StaticData as TurtleDataModel).Speed);
                    if (turtle.TargetPosition != turtle.TargetSeat.Position && turtle.Position == turtle.TargetPosition)
                    {
                        turtle.TargetPosition = RoomModel.Pathfind(turtle, turtle.TargetSeat);
                        turtle.Direction      = (turtle.TargetPosition - turtle.Position).AxisAlign();
                    }
                    else if (turtle.TargetPosition == turtle.TargetSeat.Position)
                    {
                        turtle.Direction = turtle.TargetSeat.Direction;
                    }
                }
                // Clicked?
                if (MouseInputModel.JustClicked && MouseInputModel.Intersects(turtle))
                {
                    clickedTurtle = turtle;
                }
            }
            if (clickedTurtle != null)
            {
                foreach (TurtleModel model in TurtleModels)
                {
                    if (!clickedTurtle.Equals(model))
                    {
                        model.Selected = false;
                    }
                }
                clickedTurtle.Selected = !clickedTurtle.Selected;
            }
        }