@@ -0,0 +1,1677 @@
+/*%0A * Copyright 2016 Will Knez %3Cwbknez.dev@gmail.com%3E%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A%0Apackage com.solsticesquared.schelling.task;%0A%0Aimport com.solsticesquared.schelling.Ruleset;%0Aimport com.solsticesquared.schelling.SchellingExplorer;%0Aimport com.solsticesquared.schelling.move.MovementMethod;%0Aimport com.solsticesquared.schelling.update.AgentUpdater;%0Aimport sim.engine.SimState;%0Aimport sim.engine.Steppable;%0A%0A/**%0A * Represents a task, implemented as a %7B@link Steppable%7D, that moves lists of%0A * agents around a simulation space by utilizing the movement logic selected%0A * by the user.%0A */%0Apublic class MovementTask implements Steppable %7B%0A%0A    @Override%0A    public void step(SimState simState) %7B%0A        final SchellingExplorer model = (SchellingExplorer)simState;%0A        final Ruleset ruleset = model.getRuleset();%0A%0A        // Collect the pieces necessary to move and update the locations of%0A        // all necessary agents.%0A        final AgentUpdater agentUpdater = ruleset.getAgentUpdater();%0A        final MovementMethod movementMethod = ruleset.getMovementMethod();%0A%0A        // Do so.%0A        agentUpdater.update(movementMethod, model);%0A    %7D%0A%7D%0A

Add task that moves and updates the locations of all necessary agents.