package org.schmivits.airball.display; import android.content.res.AssetManager; import android.content.res.Resources; import org.schmivits.airball.airdata.Aircraft; import org.schmivits.airball.airdata.FlightData; import org.schmivits.airball.display.airball.Airball; import org.schmivits.airball.display.altitude.AltitudeTape; import org.schmivits.airball.display.climbrate.ClimbRateTape; import org.schmivits.airball.display.speed.SpeedTape; import org.schmivits.airball.util.ValueModel; import org.schmivits.airball.widget.Container; import org.schmivits.airball.widget.Widget; public class AirballPFD extends Container { /** * Create an Airball PFD widget. */ public AirballPFD(Resources resources, AssetManager assets, final FlightData model, final float width, final float height) { sizeTo(width, height); SpeedTape.Model speedTapeModel = new SpeedTape.Model() { @Override public ValueModel<Float> getSpeed() { return model.getAirdata().getAirspeed(); } @Override public ValueModel<Aircraft> getAircraft() { return model.getAircraft(); } }; AltitudeTape.Model altitudeTapeModel = new AltitudeTape.Model() { @Override public ValueModel<Float> getAltitude() { return model.getAirdata().getAltitude(); } }; Airball.Model airballModel = new Airball.Model() { @Override public ValueModel<Float> getAlpha() { return model.getAirdata().getAlpha(); } @Override public ValueModel<Float> getBeta() { return model.getAirdata().getBeta(); } @Override public ValueModel<Float> getAirspeed() { return model.getAirdata().getAirspeed(); } @Override public ValueModel<Aircraft> getAircraft() { return model.getAircraft(); } }; ClimbRateTape.Model climbRateTapeModel = new ClimbRateTape.Model() { @Override public ValueModel<Float> getClimbRate() { return model.getAirdata().getClimbRate(); } }; float instrumentGap = (float) Math.floor(width / 75); float altitudeTapeWidth = 0.175f * width; float speedTapeWidth = 0.125f * width; float climbRateTapeWidth = 0.05f * width; float airballWidth = getWidth() - speedTapeWidth - altitudeTapeWidth - climbRateTapeWidth - 3 * instrumentGap; DisplayConfiguration config = new DisplayConfiguration(width, height, resources, assets); Widget airball; float x = 0f; mChildren.add(new SpeedTape( config, resources, assets, x, 0f, speedTapeWidth, getHeight(), speedTapeModel)); x += speedTapeWidth + instrumentGap; mChildren.add(airball = new Airball(config, airballModel)); airball.moveTo(x, 0f); airball.sizeTo(airballWidth, getHeight()); x += airballWidth + instrumentGap; mChildren.add(new AltitudeTape( config, resources, assets, x, 0f, altitudeTapeWidth, getHeight(), altitudeTapeModel)); x += altitudeTapeWidth + instrumentGap; mChildren.add(new ClimbRateTape( config, resources, assets, x, 0f, climbRateTapeWidth, getHeight(), climbRateTapeModel)); } }