001 package components;
002
003 import java.util.Map;
004
005 import physics3d.Angle;
006 import physics3d.GameConstants;
007 import physics3d.Vect3;
008
009
010 /**
011 * <p>
012 * A RightFlipper extends Flipper, and flips in the left direction.
013 * </p>
014 *
015 * <p>
016 * A RightFlipper has no unique properties that its parent does not have. The only stipulation is that
017 * it has a positive Z_HAT Orientation Vector, as opposed to the negative Z_HAT Orientation Vector found
018 * in a LeftFlipper.
019 *</p>
020 */
021
022 public class RightFlipper extends Flipper {
023
024 public RightFlipper(Map<String, String> props, GameSpace gs) {
025 super(props, gs);
026 //sore dake desu.
027 }
028
029 @Override
030 public Vect3 getDiff() {
031 double r = GameConstants.FLIPPER_RADIUS_FRACTION;
032 int oa = (int)orientAngle.degrees();
033 if (oa == 0) {
034 return new Vect3(2-r, r, 0.5);
035 } else if (oa == 90) {
036 return new Vect3(2-r, 2-r, 0.5);
037 } else if (oa == 180) {
038 return new Vect3(r, 2-r, 0.5);
039 } else if (oa == -90) {
040 return new Vect3(r, r, 0.5);
041 } else {
042 throw new IllegalArgumentException("orientAngle must be 0, 90, 180, or 270 degrees, it is " + orientAngle.degrees());
043 }
044 }
045
046
047 //See super class
048 public void getBasicPropertyMap(Map<String,String> m) {
049 if (this.orientAngle.degrees() == -90) {
050 m.put("orientation", "270");
051 } else {
052 m.put("orientation", Integer.toString((int)Math.round(this.orientAngle.degrees())));
053 }
054 super.getBasicPropertyMap(m);
055 }
056
057 public GameObjectClassification getGOClassification() {
058 return GameObjectClassification.RIGHTFLIPPER;
059 }
060 }