/* * Copyright (C) 2016 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.apps.santatracker.games.gumball; import org.jbox2d.collision.shapes.EdgeShape; import org.jbox2d.common.Vec2; /** * Static methods to get the edge paths of the scene * */ public class Edges { public static EdgeShape[] getCaneEnd() { EdgeShape[] edgeShapes = new EdgeShape[3]; //rounded part edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.22f, .858f), new Vec2(0.22f, 1.02f)); //bottom edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.04f, .84f), new Vec2(.2f, .84f)); //top edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.03f, 1.04f), new Vec2(.2f, 1.04f)); return edgeShapes; } public static EdgeShape[] getCaneEndFlip() { EdgeShape[] edgeShapes = new EdgeShape[3]; //rounded part edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.04f, .858f), new Vec2(0.04f, 1.02f)); //bottom edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.06f, .845f), new Vec2(.263f, .845f)); //top edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.06f, 1.04f), new Vec2(.263f, 1.04f)); return edgeShapes; } public static EdgeShape[] getCaneEndReverse() { EdgeShape[] edgeShapes = new EdgeShape[3]; //rounded part edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.22f, .128f), new Vec2(0.22f, .29f)); //bottom edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.04f, .11f), new Vec2(.2f, .11f)); //top edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.03f, .31f), new Vec2(.2f, .31f)); return edgeShapes; } public static EdgeShape[] getCaneEndReverseFlip() { EdgeShape[] edgeShapes = new EdgeShape[3]; //rounded part edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.04f, .128f), new Vec2(0.04f, .29f)); //connector edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.06f, .31f), new Vec2(0.04f, .29f)); //top edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.06f, .31f), new Vec2(.263f, .31f)); return edgeShapes; } public static EdgeShape[] getCaneMainLongShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .845f), new Vec2(5.53f, .845f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .005f), new Vec2(5.53f, .205f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, 1.045f), new Vec2(5.53f, 1.045f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .005f), new Vec2(0f, .205f)); return edgeShapes; } public static EdgeShape[] getCaneMainReverseLongShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .115f), new Vec2(5.53f, .115f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .735f), new Vec2(5.53f, .935f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, .315f), new Vec2(5.53f, .315f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .735f), new Vec2(0f, .935f)); return edgeShapes; } public static EdgeShape[] getCaneMainMedShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .845f), new Vec2(4.13f, .845f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .005f), new Vec2(5.53f, .205f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, 1.045f), new Vec2(4.13f, 1.045f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .005f), new Vec2(0f, .205f)); return edgeShapes; } public static EdgeShape[] getCaneMainReverseMedShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .115f), new Vec2(4.13f, .115f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .735f), new Vec2(5.53f, .935f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, .315f), new Vec2(4.13f, .315f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .735f), new Vec2(0f, .935f)); return edgeShapes; } public static EdgeShape[] getCaneMainSmallShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .845f), new Vec2(2.73f, .845f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .005f), new Vec2(5.53f, .205f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, 1.045f), new Vec2(2.73f, 1.045f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .005f), new Vec2(0f, .205f)); return edgeShapes; } public static EdgeShape[] getCaneMainReverseSmallShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .115f), new Vec2(2.73f, .115f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .735f), new Vec2(5.53f, .935f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, .315f), new Vec2(2.73f, .315f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .735f), new Vec2(0f, .935f)); return edgeShapes; } public static EdgeShape[] getCaneMainTinyShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .845f), new Vec2(1.38f, .845f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .005f), new Vec2(5.53f, .205f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, 1.045f), new Vec2(1.38f, 1.045f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .005f), new Vec2(0f, .205f)); return edgeShapes; } public static EdgeShape[] getCaneMainReverseTinyShapes() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .115f), new Vec2(1.38f, .115f)); // edgeShapes[1] = new EdgeShape(); // edgeShapes[1].set(new Vec2(5.53f, .735f), new Vec2(5.53f, .935f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, .315f), new Vec2(1.38f, .315f)); // edgeShapes[3] = new EdgeShape(); // edgeShapes[3].set(new Vec2(0f, .735f), new Vec2(0f, .935f)); return edgeShapes; } public static EdgeShape[] getCaneHookShapes() { EdgeShape[] edgeShapes = new EdgeShape[8]; // inner top edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(.1f, .82f), new Vec2(.24f, .97f)); // inner bottom edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(.53f, 1.04f), new Vec2(.77f, 1.04f)); // inner edge edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(.24f, .185f), new Vec2(.24f, .97f)); // end part edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(.6f, .138f), new Vec2(.6f, .285f)); // back edge edgeShapes[4] = new EdgeShape(); edgeShapes[4].set(new Vec2(.1f, .33f), new Vec2(.1f, .82f)); edgeShapes[5] = new EdgeShape(); edgeShapes[5].set(new Vec2(.40f, .83f), new Vec2(.40f, 1.03f)); edgeShapes[6] = new EdgeShape(); edgeShapes[6].set(new Vec2(.53f, 1.04f), new Vec2(.40f, 1.03f)); edgeShapes[7] = new EdgeShape(); edgeShapes[7].set(new Vec2(.24f, .97f), new Vec2(.40f, 1.03f)); return edgeShapes; } public static EdgeShape[] getCaneHookFlipShapes() { EdgeShape[] edgeShapes = new EdgeShape[8]; // inner top edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(.30f, 1.04f), new Vec2(.40f, 1.03f)); // inner bottom edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0f, 1.04f), new Vec2(.30f, 1.04f)); // inner edge edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(.53f, .185f), new Vec2(.527f, .97f)); // end part edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(.155f, .138f), new Vec2(.155f, .285f)); // back edge edgeShapes[4] = new EdgeShape(); edgeShapes[4].set(new Vec2(.68f, .33f), new Vec2(.68f, .82f)); edgeShapes[5] = new EdgeShape(); edgeShapes[5].set(new Vec2(.40f, .83f), new Vec2(.40f, 1.03f)); edgeShapes[6] = new EdgeShape(); edgeShapes[6].set(new Vec2(.40f, 1.03f), new Vec2(.527f, .97f)); edgeShapes[7] = new EdgeShape(); edgeShapes[7].set(new Vec2(.527f, .97f), new Vec2(.68f, .82f)); return edgeShapes; } public static EdgeShape[] getCaneHookReverseShapes() { EdgeShape[] edgeShapes = new EdgeShape[7]; // inner top edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(.24f, .315f), new Vec2(.77f, .315f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(.24f, .97f), new Vec2(.40f, 1.03f)); // inner edge edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(.24f, .185f), new Vec2(.24f, .97f)); // end part edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(.6f, .858f), new Vec2(.6f, 1.005f)); // top part edgeShapes[4] = new EdgeShape(); edgeShapes[4].set(new Vec2(.6f, 1.005f), new Vec2(.40f, 1.03f)); // back edge edgeShapes[5] = new EdgeShape(); edgeShapes[5].set(new Vec2(.1f, .33f), new Vec2(.1f, .82f)); edgeShapes[6] = new EdgeShape(); edgeShapes[6].set(new Vec2(.1f, .82f), new Vec2(.24f, .97f)); return edgeShapes; } public static EdgeShape[] getCaneHookReverseFlipShapes() { EdgeShape[] edgeShapes = new EdgeShape[6]; // inner top edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0f, .315f), new Vec2(.53f, .315f)); // inner edge edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(.53f, .185f), new Vec2(.53f, .97f)); // end part edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(.155f, .858f), new Vec2(.155f, .99f)); // top part edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(.155f, .99f), new Vec2(.3155f, 1.045f)); // back edge edgeShapes[4] = new EdgeShape(); edgeShapes[4].set(new Vec2(.68f, .33f), new Vec2(.68f, .82f)); edgeShapes[5] = new EdgeShape(); edgeShapes[5].set(new Vec2(.53f, .97f), new Vec2(.3155f, 1.045f)); return edgeShapes; } public static EdgeShape[] getPipeSideEdges() { EdgeShape[] edgeShapes = new EdgeShape[2]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(.83f, -1f), new Vec2(.01f, .45f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(2.4f, -1f), new Vec2(3.2f, .45f)); return edgeShapes; } public static EdgeShape[] getCaneMainSmallAngleNineShapes() { EdgeShape[] edgeShapes = new EdgeShape[4]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.01f, 0.935f), new Vec2(3.66f, 0.325f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.25f, 0.675f), new Vec2(3.6f, 0.105f)); //backstop edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.15f, 0.755f), new Vec2(0.28f, 1.55f)); //end edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(3.66f, 0.128f), new Vec2(3.70f, 0.295f)); return edgeShapes; } public static EdgeShape[] getCaneMainSmallAngleTwelveShapes() { EdgeShape[] edgeShapes = new EdgeShape[4]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.01f, 0.73f), new Vec2(2.04f, 0.305f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.25f, 0.475f), new Vec2(2.0f, 0.1f)); //backstop edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.18f, 0.725f), new Vec2(0.29f, 1.30f)); //end edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(2.01f, 0.128f), new Vec2(2.05f, 0.293f)); return edgeShapes; } public static EdgeShape[] getCaneMainTinyAngleSixShapes() { EdgeShape[] edgeShapes = new EdgeShape[7]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.10f, 0.33f), new Vec2(1.9f, 0.425f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.15f, 0.105f), new Vec2(1.8f, 0.20f)); //backstop edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(1.94f, 0.425f), new Vec2(1.91f, 1.07f)); //end edgeShapes[3] = new EdgeShape(); edgeShapes[3].set(new Vec2(0.07f, 0.128f), new Vec2(0.06f, 0.313f)); edgeShapes[4] = new EdgeShape(); edgeShapes[4].set(new Vec2(1.55f, .96f), new Vec2(1.55f, 1.09f)); edgeShapes[5] = new EdgeShape(); edgeShapes[5].set(new Vec2(1.55f, 1.09f), new Vec2(1.66f, 1.13f)); edgeShapes[6] = new EdgeShape(); edgeShapes[6].set(new Vec2(1.91f, 1.07f), new Vec2(1.66f, 1.13f)); return edgeShapes; } public static EdgeShape[] getCaneMainSmallAngleSixShapes() { EdgeShape[] edgeShapes = new EdgeShape[3]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.05f, 0.515f), new Vec2(2.69f, 0.329f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.30f, 0.285f), new Vec2(2.66f, 0.119f)); //backstop edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(0.15f, 0.455f), new Vec2(0.27f, 1.15f)); return edgeShapes; } public static EdgeShape[] getCaneMainMedAngleSixShapes() { EdgeShape[] edgeShapes = new EdgeShape[3]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.06f, 0.53f), new Vec2(2.97f, 1.05f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.1f, 0.329f), new Vec2(3.26f, 0.90f)); edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(2.97f, 1.05f), new Vec2(3.26f, 0.90f)); return edgeShapes; } public static EdgeShape[] getCaneMainLargeAngleSixShapes() { EdgeShape[] edgeShapes = new EdgeShape[3]; edgeShapes[0] = new EdgeShape(); edgeShapes[0].set(new Vec2(0.06f, 0.24f), new Vec2(4.88f, 1.08f)); edgeShapes[1] = new EdgeShape(); edgeShapes[1].set(new Vec2(0.12f, 0.009f), new Vec2(5.19f, 0.95f)); edgeShapes[2] = new EdgeShape(); edgeShapes[2].set(new Vec2(4.88f, 1.08f), new Vec2(5.22f, 0.95f)); return edgeShapes; } public static EdgeShape[] getEdges(int edgeType) { switch (edgeType) { case TiltGameView.CANE_MAIN_TINY: return getCaneMainTinyShapes(); case TiltGameView.CANE_MAIN_MEDIUM: return getCaneMainMedShapes(); case TiltGameView.CANE_MAIN_LONG: return getCaneMainLongShapes(); case TiltGameView.CANE_MAIN_SMALL: return getCaneMainSmallShapes(); case TiltGameView.CANE_MAIN_TINY_REVERSE: return getCaneMainReverseTinyShapes(); case TiltGameView.CANE_MAIN_MEDIUM_REVERSE: return getCaneMainReverseMedShapes(); case TiltGameView.CANE_MAIN_LONG_REVERSE: return getCaneMainReverseLongShapes(); case TiltGameView.CANE_MAIN_SMALL_REVERSE: return getCaneMainReverseSmallShapes(); case TiltGameView.CANE_HOOK: return getCaneHookShapes(); case TiltGameView.CANE_HOOK_REVERSE: return getCaneHookReverseShapes(); case TiltGameView.CANE_HOOK_FLIP: return getCaneHookFlipShapes(); case TiltGameView.CANE_HOOK_REVERSE_FLIP: return getCaneHookReverseFlipShapes(); case TiltGameView.CANE_END: return getCaneEnd(); case TiltGameView.CANE_END_REVERSE: return getCaneEndReverse(); case TiltGameView.CANE_END_FLIP: return getCaneEndFlip(); case TiltGameView.CANE_END_REVERSE_FLIP: return getCaneEndReverseFlip(); case TiltGameView.CANE_MAIN_SMALL_ANGLE_NINE: return getCaneMainSmallAngleNineShapes(); case TiltGameView.CANE_MAIN_SMALL_ANGLE_SIX: return getCaneMainSmallAngleSixShapes(); case TiltGameView.CANE_MAIN_SMALL_ANGLE_TWELVE: return getCaneMainSmallAngleTwelveShapes(); case TiltGameView.CANE_MAIN_REVERSE_TINY_ANGLE_SIX: return getCaneMainTinyAngleSixShapes(); case TiltGameView.CANE_MAIN_LARGE_ANGLE_SIX: return getCaneMainLargeAngleSixShapes(); case TiltGameView.CANE_MAIN_MED_ANGLE_SIX: return getCaneMainMedAngleSixShapes(); } return null; } }