|
|
@@ -0,0 +1,51 @@ |
|
|
|
package de.hems.trafficsim; |
|
|
|
|
|
|
|
import android.content.Context; |
|
|
|
import android.graphics.Canvas; |
|
|
|
import android.graphics.Color; |
|
|
|
import android.graphics.Paint; |
|
|
|
import android.view.View; |
|
|
|
import android.view.ViewGroup; |
|
|
|
|
|
|
|
public class TrackView extends View { |
|
|
|
protected Paint paint; |
|
|
|
protected Track track; |
|
|
|
protected int pixelPerVehicle; |
|
|
|
|
|
|
|
public TrackView(Context context, Track track) { |
|
|
|
super(context); |
|
|
|
this.track = track; |
|
|
|
this.paint = new Paint(); |
|
|
|
paint.setColor(Color.BLACK); |
|
|
|
paint.setStyle(Paint.Style.FILL_AND_STROKE); |
|
|
|
} |
|
|
|
|
|
|
|
protected int getColor(float curVelocity, float maxVelocity) { |
|
|
|
float perc = curVelocity / maxVelocity; |
|
|
|
if (perc <= 0.5) { |
|
|
|
int red = ((int) (2*perc*0xFF)) << 16; |
|
|
|
int green = ((int)0xFF) << 8; |
|
|
|
int blue = 0; |
|
|
|
return 0xff000000 | red | green | blue; |
|
|
|
} else { |
|
|
|
int red = ((int)(0xFF)) << 16; |
|
|
|
int green = ((int)(0xFF-0xFF*(perc-0.5)*2)) << 8; |
|
|
|
int blue = 0; |
|
|
|
return 0xff000000 | red | green | blue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onDraw(Canvas canvas) { |
|
|
|
this.pixelPerVehicle = (int) (this.getWidth() / this.track.getTrackLength()); |
|
|
|
//super.onDraw(canvas); |
|
|
|
int i = 0; |
|
|
|
for (Vehicle v : this.track.getVehicles()) { |
|
|
|
int left = (int) (this.pixelPerVehicle * v.getPosition()); |
|
|
|
this.paint.setColor(getColor(v.getCurVelocity(), v.getMaxVelocity())); |
|
|
|
canvas.drawRect(left, 0, left + this.pixelPerVehicle - 1, |
|
|
|
20, this.paint); |
|
|
|
i++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |