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(); } } }
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; } }
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); } } }
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; } }