|
- package de.hems.trafficsim;
-
- import android.graphics.Canvas;
-
- /**
- * Calculation thread, which runs the simulation itself and also updates the view with a set rate.
- */
- public class Worker extends Thread {
- /**
- * the track to simulate
- */
- protected Track track;
-
- /**
- * Stop flag, indicating that the worker shall stop
- */
- protected boolean stop;
-
- /**
- * the MainActivity of the gui
- */
- protected MainActivity gui;
-
- /**
- * the Renderer drawing the Track
- */
- protected Renderer renderer;
-
- /**
- * Amount of simulation steps between two frames in the view. Zero means
- * that every simulation step is drawn.
- */
- protected int frameskip;
-
- /**
- * Construct a new worker.
- *
- * @param track the track to simulate
- * @param gui the MainActivity of the gui
- * @param renderer the Renderer drawing the Track
- * @param frameskip Amount of simulation steps between two frames in the view. Zero means
- * that every simulation step is drawn
- */
- public Worker(Track track, MainActivity gui, Renderer renderer, int frameskip) {
- super();
- this.track = track;
- this.stop = false;
- this.gui = gui;
- this.renderer = renderer;
- this.frameskip = frameskip;
- }
-
- /**
- * Sets a flag that causes the worker to stop.
- *
- * @param stop flag whether the thread shall stop
- */
- public void setStop(boolean stop) {
- this.stop = stop;
- }
-
- /**
- * Updates the amount of simulation steps between to view frames.
- *
- * @param frames amount of steps
- */
- public void setFrameskip(int frames) {
- this.frameskip = frames;
- }
-
- /**
- * Method which is automatically executed when the thread is started. It alternates between
- * updating the simulation and drawing a new frame in the view.
- */
- @Override
- public void run() {
- Canvas canvas = null;
- int i = 0;
- while (!stop) {
- this.track.timeElapse();
- this.gui.updateStats();
- if (i >= this.frameskip) {
- this.renderer.draw();
- i = 0;
- }
- i++;
- }
- }
-
- }
-
|