From 20a5d6f09cbd2675e73d51a7fa00cda9e156bdf4 Mon Sep 17 00:00:00 2001 From: Kenneth Soh Date: Thu, 13 Jun 2024 22:53:11 +0800 Subject: [PATCH] refactor: Sonar handling till NDP --- .../droideggs/eggs/lollipop/LLand.java | 2 +- .../droideggs/eggs/marshmallow/Color.java | 6 +- .../droideggs/eggs/marshmallow/MLand.java | 387 +++++++++--------- .../eggs/marshmallow/MLandActivity.java | 5 +- .../droideggs/eggs/marshmallow/MathUtils.java | 32 +- .../PlatLogoActivityMARSHMALLOW.java | 20 +- .../eggs/mnc/PlatLogoActivityMNC.java | 20 +- .../eggs/ndp/PlatLogoActivityNDP.java | 21 +- 8 files changed, 248 insertions(+), 245 deletions(-) diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/lollipop/LLand.java b/app/src/main/java/com/itachi1706/droideggs/eggs/lollipop/LLand.java index 4be7ba9f..2fd4e92e 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/lollipop/LLand.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/lollipop/LLand.java @@ -229,7 +229,7 @@ protected void onSizeChanged(int w, int h, int oldw, int oldh) { final float[] hsv = {0, 0, 0}; - private Random random = new Random(); + private final Random random = new Random(); @SuppressWarnings("ResourceType") private void reset() { diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/Color.java b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/Color.java index ee875722..684ddaf3 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/Color.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/Color.java @@ -37,8 +37,8 @@ public class Color { * @hide Pending API council */ @ColorInt - public static int HSBtoColor(@Size(3) float[] hsb) { - return HSBtoColor(hsb[0], hsb[1], hsb[2]); + public static int hsbToColor(@Size(3) float[] hsb) { + return hsbToColor(hsb[0], hsb[1], hsb[2]); } /** @@ -55,7 +55,7 @@ public static int HSBtoColor(@Size(3) float[] hsb) { * @hide Pending API council */ @ColorInt - public static int HSBtoColor(float h, float s, float b) { + public static int hsbToColor(float h, float s, float b) { h = MathUtils.constrain(h, 0.0f, 1.0f); s = MathUtils.constrain(s, 0.0f, 1.0f); b = MathUtils.constrain(b, 0.0f, 1.0f); diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/MLand.java b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/MLand.java index aaeefdbc..92d7db26 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/MLand.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/MLand.java @@ -50,6 +50,7 @@ import com.itachi1706.droideggs.R; import java.util.ArrayList; +import java.util.Random; /** * Created by Kenneth on 7/10/2015. @@ -63,7 +64,7 @@ public class MLand extends FrameLayout { public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); public static final boolean DEBUG_DRAW = false; // DEBUG public static final boolean SHOW_TOUCHES = true; - public static void L(String s, Object ... objects) { + public static void l(String s, Object ... objects) { if (DEBUG) { Log.d(TAG, objects.length == 0 ? s : String.format(s, objects)); } @@ -78,50 +79,55 @@ public static void L(String s, Object ... objects) { public static final int MAX_PLAYERS = 6; static final float CONTROLLER_VIBRATION_MULTIPLIER = 2f; private static class Params { - public float TRANSLATION_PER_SEC; - public int OBSTACLE_SPACING, OBSTACLE_PERIOD; - public int BOOST_DV; - public int PLAYER_HIT_SIZE; - public int PLAYER_SIZE; - public int OBSTACLE_WIDTH, OBSTACLE_STEM_WIDTH; - public int OBSTACLE_GAP; - public int OBSTACLE_MIN; - public int BUILDING_WIDTH_MIN, BUILDING_WIDTH_MAX; - public int BUILDING_HEIGHT_MIN; - public int CLOUD_SIZE_MIN, CLOUD_SIZE_MAX; - public int STAR_SIZE_MIN, STAR_SIZE_MAX; - public int G; - public int MAX_V; - public float SCENERY_Z, OBSTACLE_Z, PLAYER_Z, PLAYER_Z_BOOST, HUD_Z; + private final float translationPerSec; + private final int obstaclePeriod; + private final int boostDv; + private final int playerHitSize; + private final int playerSize; + private final int obstacleWidth; + private final int obstacleStemWidth; + private final int obstacleGap; + private int obstacleMin; + private final int buildingWidthMin; + private final int buildingWidthMax; + private final int buildingHeightMin; + private final int cloudSizeMin; + private final int cloudSizeMax; + private final int starSizeMin; + private final int starSizeMax; + private final int g; + private final int maxV; + private final float obstacleZ; + private final float playerZ; + private final float playerZBoost; + public Params(Resources res) { - TRANSLATION_PER_SEC = res.getDimension(R.dimen.translation_per_sec); - OBSTACLE_SPACING = res.getDimensionPixelSize(R.dimen.obstacle_spacing); - OBSTACLE_PERIOD = (int) (OBSTACLE_SPACING / TRANSLATION_PER_SEC); - BOOST_DV = res.getDimensionPixelSize(R.dimen.boost_dv); - PLAYER_HIT_SIZE = res.getDimensionPixelSize(R.dimen.player_hit_size); - PLAYER_SIZE = res.getDimensionPixelSize(R.dimen.player_size); - OBSTACLE_WIDTH = res.getDimensionPixelSize(R.dimen.obstacle_width); - OBSTACLE_STEM_WIDTH = res.getDimensionPixelSize(R.dimen.obstacle_stem_width); - OBSTACLE_GAP = res.getDimensionPixelSize(R.dimen.obstacle_gap); - OBSTACLE_MIN = res.getDimensionPixelSize(R.dimen.obstacle_height_min); - BUILDING_HEIGHT_MIN = res.getDimensionPixelSize(R.dimen.building_height_min); - BUILDING_WIDTH_MIN = res.getDimensionPixelSize(R.dimen.building_width_min); - BUILDING_WIDTH_MAX = res.getDimensionPixelSize(R.dimen.building_width_max); - CLOUD_SIZE_MIN = res.getDimensionPixelSize(R.dimen.cloud_size_min); - CLOUD_SIZE_MAX = res.getDimensionPixelSize(R.dimen.cloud_size_max); - STAR_SIZE_MIN = res.getDimensionPixelSize(R.dimen.star_size_min); - STAR_SIZE_MAX = res.getDimensionPixelSize(R.dimen.star_size_max); - G = res.getDimensionPixelSize(R.dimen.G); - MAX_V = res.getDimensionPixelSize(R.dimen.max_v); - SCENERY_Z = res.getDimensionPixelSize(R.dimen.scenery_z); - OBSTACLE_Z = res.getDimensionPixelSize(R.dimen.obstacle_z); - PLAYER_Z = res.getDimensionPixelSize(R.dimen.player_z); - PLAYER_Z_BOOST = res.getDimensionPixelSize(R.dimen.player_z_boost); - HUD_Z = res.getDimensionPixelSize(R.dimen.hud_z); + translationPerSec = res.getDimension(R.dimen.translation_per_sec); + int obstacleSpacing = res.getDimensionPixelSize(R.dimen.obstacle_spacing); + obstaclePeriod = (int) (obstacleSpacing / translationPerSec); + boostDv = res.getDimensionPixelSize(R.dimen.boost_dv); + playerHitSize = res.getDimensionPixelSize(R.dimen.player_hit_size); + playerSize = res.getDimensionPixelSize(R.dimen.player_size); + obstacleWidth = res.getDimensionPixelSize(R.dimen.obstacle_width); + obstacleStemWidth = res.getDimensionPixelSize(R.dimen.obstacle_stem_width); + obstacleGap = res.getDimensionPixelSize(R.dimen.obstacle_gap); + obstacleMin = res.getDimensionPixelSize(R.dimen.obstacle_height_min); + buildingHeightMin = res.getDimensionPixelSize(R.dimen.building_height_min); + buildingWidthMin = res.getDimensionPixelSize(R.dimen.building_width_min); + buildingWidthMax = res.getDimensionPixelSize(R.dimen.building_width_max); + cloudSizeMin = res.getDimensionPixelSize(R.dimen.cloud_size_min); + cloudSizeMax = res.getDimensionPixelSize(R.dimen.cloud_size_max); + starSizeMin = res.getDimensionPixelSize(R.dimen.star_size_min); + starSizeMax = res.getDimensionPixelSize(R.dimen.star_size_max); + g = res.getDimensionPixelSize(R.dimen.G); + maxV = res.getDimensionPixelSize(R.dimen.max_v); + obstacleZ = res.getDimensionPixelSize(R.dimen.obstacle_z); + playerZ = res.getDimensionPixelSize(R.dimen.player_z); + playerZBoost = res.getDimensionPixelSize(R.dimen.player_z_boost); // Sanity checking - if (OBSTACLE_MIN <= OBSTACLE_WIDTH / 2) { - L("error: obstacles might be too short, adjusting"); - OBSTACLE_MIN = OBSTACLE_WIDTH / 2 + 1; + if (obstacleMin <= obstacleWidth / 2) { + l("error: obstacles might be too short, adjusting"); + obstacleMin = obstacleWidth / 2 + 1; } } } @@ -134,17 +140,23 @@ public Params(Resources res) { private ViewGroup mScoreFields; private ArrayList mPlayers = new ArrayList<>(); private ArrayList mObstaclesInPlay = new ArrayList<>(); - private float t, dt; + private float t; + private float dt; private float mLastPipeTime; // in sec private int mCurrentPipeId; // basically, equivalent to the current score - private int mWidth, mHeight; - private boolean mAnimating, mPlaying; + private int mWidth; + private int mHeight; + private boolean mAnimating; + private boolean mPlaying; private boolean mFrozen; // after death, a short backoff private int mCountdown = 0; private boolean mFlipped; private int mTaps; private int mTimeOfDay; - private static final int DAY = 0, NIGHT = 1, TWILIGHT = 2, SUNSET = 3; + private static final int DAY = 0; + private static final int NIGHT = 1; + private static final int TWILIGHT = 2; + private static final int SUNSET = 3; private static final int[][] SKIES = { { 0xFFc0c0FF, 0xFFa0a0FF }, // DAY { 0xFF000010, 0xFF000000 }, // NIGHT @@ -152,12 +164,15 @@ public Params(Resources res) { { 0xFFa08020, 0xFF204080 }, // SUNSET }; private int mScene; - private static final int SCENE_CITY = 0, SCENE_TX = 1, SCENE_ZRH = 2; + private static final int SCENE_CITY = 0; + private static final int SCENE_TX = 1; + private static final int SCENE_ZRH = 2; private static final int SCENE_COUNT = 3; - private static Params PARAMS; - private static float dp = 1f; - private Paint mTouchPaint, mPlayerTracePaint; - private ArrayList mGameControllers = new ArrayList<>(); + private static Params params; + private float dp = 1f; + private final Paint mTouchPaint; + private final Paint mPlayerTracePaint; + private final ArrayList mGameControllers = new ArrayList<>(); public MLand(Context context) { this(context, null); } @@ -169,7 +184,7 @@ public MLand(Context context, AttributeSet attrs, int defStyle) { mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); setFocusable(true); - PARAMS = new Params(getResources()); + params = new Params(getResources()); mTimeOfDay = irand(0, SKIES.length - 1); mScene = irand(0, SCENE_COUNT); mTouchPaint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -210,8 +225,8 @@ public void setScoreFieldHolder(ViewGroup vg) { for (Player p : mPlayers) { mScoreFields.addView(p.mScoreField, new MarginLayoutParams( - MarginLayoutParams.WRAP_CONTENT, - MarginLayoutParams.MATCH_PARENT)); + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.MATCH_PARENT)); } } public void setSplash(View v) { @@ -228,11 +243,10 @@ public ArrayList getGameControllers() { int[] deviceIds = InputDevice.getDeviceIds(); for (int deviceId : deviceIds) { InputDevice dev = InputDevice.getDevice(deviceId); - if (isGamePad(dev)) { - if (!mGameControllers.contains(deviceId)) { + if (isGamePad(dev) && !mGameControllers.contains(deviceId)) { mGameControllers.add(deviceId); } - } + } return mGameControllers; } @@ -250,11 +264,12 @@ protected void onSizeChanged(int w, int h, int oldw, int oldh) { start(false); } } - final static float hsv[] = {0, 0, 0}; + + static final float[] hsv = {0, 0, 0}; private static float luma(int bgcolor) { - return 0.2126f * (float) (bgcolor & 0xFF0000) / 0xFF0000 - + 0.7152f * (float) (bgcolor & 0xFF00) / 0xFF00 - + 0.0722f * (float) (bgcolor & 0xFF) / 0xFF; + return 0.2126f * (bgcolor & 0xFF0000) / 0xFF0000 + + 0.7152f * (bgcolor & 0xFF00) / 0xFF00 + + 0.0722f * (bgcolor & 0xFF) / 0xFF; } public Player getPlayer(int i) { return i < mPlayers.size() ? mPlayers.get(i) : null; @@ -267,8 +282,8 @@ private int addPlayerInternal(Player p) { if (mScoreFields != null) { mScoreFields.addView(scoreField, new MarginLayoutParams( - MarginLayoutParams.WRAP_CONTENT, - MarginLayoutParams.MATCH_PARENT)); + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.MATCH_PARENT)); } p.setScoreField(scoreField); return mPlayers.size()-1; @@ -282,15 +297,15 @@ private void removePlayerInternal(Player p) { } private void realignPlayers() { final int N = mPlayers.size(); - float x = (mWidth - (N-1) * PARAMS.PLAYER_SIZE) / 2; + float x = (float) (mWidth - (N - 1) * params.playerSize) / 2; for (int i=0; i 0) { + while (!mPlayers.isEmpty()) { removePlayerInternal(mPlayers.get(0)); } } @@ -329,7 +344,7 @@ private void thump(int playerIndex, long ms) { mVibrator.vibrate(ms, mAudioAttrs); } public void reset() { - L("reset"); + l("reset"); final Drawable sky = new GradientDrawable( GradientDrawable.Orientation.BOTTOM_TOP, SKIES[mTimeOfDay] @@ -354,12 +369,12 @@ public void reset() { final Star bgSun = new Star(getContext()); bgSun.setBackgroundResource(R.drawable.marshmallow_sun); final int w = getResources().getDimensionPixelSize(R.dimen.sun_size); - bgSun.setTranslationX(frand(w, mWidth-w)); + bgSun.setTranslationX(frand(w, (float) mWidth-w)); if (mTimeOfDay == DAY) { bgSun.setTranslationY(frand(w, (mHeight * 0.66f))); bgSun.getBackground().setTint(0); } else { - bgSun.setTranslationY(frand(mHeight * 0.66f, mHeight - w)); + bgSun.setTranslationY(frand(mHeight * 0.66f, (float) mHeight - w)); bgSun.getBackground().setTintMode(PorterDuff.Mode.SRC_ATOP); bgSun.getBackground().setTint(0xC0FF8000); } @@ -375,8 +390,8 @@ public void reset() { moon.setScaleX(frand() > 0.5 ? -1 : 1); moon.setRotation(moon.getScaleX() * frand(5, 30)); final int w = getResources().getDimensionPixelSize(R.dimen.sun_size); - moon.setTranslationX(frand(w, mWidth - w)); - moon.setTranslationY(frand(w, mHeight - w)); + moon.setTranslationX(frand(w, (float) mWidth - w)); + moon.setTranslationY(frand(w, (float) mHeight - w)); addView(moon, new LayoutParams(w, w)); } } @@ -405,11 +420,10 @@ public void reset() { } s.z = (float) i / N; // no more shadows for these things - //s.setTranslationZ(PARAMS.SCENERY_Z * (1+s.z)); s.v = 0.85f * s.z; // buildings move proportional to their distance if (mScene == SCENE_CITY) { s.setBackgroundColor(Color.GRAY); - s.h = irand(PARAMS.BUILDING_HEIGHT_MIN, mh); + s.h = irand(params.buildingHeightMin, mh); } final int c = (int)(255f*s.z); final Drawable bg = s.getBackground(); @@ -428,7 +442,7 @@ public void reset() { } } addView(s, lp); - s.setTranslationX(frand(-lp.width, mWidth + lp.width)); + s.setTranslationX(frand(-lp.width, (float) mWidth + lp.width)); } for (Player p : mPlayers) { addView(p); // put it back! @@ -442,7 +456,7 @@ public void reset() { mAnim.setTimeListener((timeAnimator, t, dt) -> step(t, dt)); } public void start(boolean startPlaying) { - L("start(startPlaying=%s)", startPlaying ? "true" : "false"); + l("start(startPlaying=%s)", startPlaying ? "true" : "false"); if (startPlaying && mCountdown <= 0) { showSplash(); mSplash.findViewById(R.id.play_button).setEnabled(false); @@ -496,7 +510,7 @@ public void startPlaying() { mPlaying = true; t = 0; // there's a sucker born every OBSTACLE_PERIOD - mLastPipeTime = getGameTime() - PARAMS.OBSTACLE_PERIOD; + mLastPipeTime = getGameTime() - params.obstaclePeriod; hideSplash(); realignPlayers(); mTaps = 0; @@ -525,30 +539,30 @@ public void stop() { postDelayed(() -> mFrozen = false, 250); } } - public static final float lerp(float x, float a, float b) { + public static float lerp(float x, float a, float b) { return (b - a) * x + a; } - public static final float rlerp(float v, float a, float b) { + public static float rlerp(float v, float a, float b) { return (v - a) / (b - a); } - public static final float clamp(float f) { - return f < 0f ? 0f : f > 1f ? 1f : f; + public static float clamp(float f) { + return f < 0f ? 0f : Math.min(f, 1f); } - public static final float frand() { + public static float frand() { return (float) Math.random(); } - public static final float frand(float a, float b) { + public static float frand(float a, float b) { return lerp(frand(), a, b); } - public static final int irand(int a, int b) { - return Math.round(frand((float) a, (float) b)); + public static int irand(int a, int b) { + return Math.round(frand(a, b)); } public static int pick(int[] l) { return l[irand(0, l.length-1)]; } - private void step(long t_ms, long dt_ms) { - t = t_ms / 1000f; // seconds - dt = dt_ms / 1000f; + private void step(long tMs, long dtMs) { + t = tMs / 1000f; // seconds + dt = dtMs / 1000f; if (DEBUG) { t *= DEBUG_SPEED_MULTIPLIER; dt *= DEBUG_SPEED_MULTIPLIER; @@ -559,7 +573,7 @@ private void step(long t_ms, long dt_ms) { for (; i 0; ) { final Obstacle ob = mObstaclesInPlay.get(j); if (ob.intersects(p) && !DEBUG_IDDQD) { - L("player hit an obstacle"); + l("player hit an obstacle"); thump(i, 80); p.die(); - } else if (ob.cleared(p)) { - if (ob instanceof Stem) { + } else if (ob.cleared(p) && ob instanceof Stem) { maxPassedStem = Math.max(maxPassedStem, ((Stem)ob).id); } - } + } if (maxPassedStem > p.mScore) { p.addScore(1); @@ -601,10 +614,6 @@ private void step(long t_ms, long dt_ms) { if (livingPlayers == 0) { stop(); mTaps = 0; - final int playerCount = mPlayers.size(); - for (int pi=0; pi PARAMS.OBSTACLE_PERIOD) { + if (mPlaying && (t - mLastPipeTime) > params.obstaclePeriod) { mLastPipeTime = t; mCurrentPipeId ++; final int obstacley = - (int)(frand() * (mHeight - 2*PARAMS.OBSTACLE_MIN - PARAMS.OBSTACLE_GAP)) + - PARAMS.OBSTACLE_MIN; - final int inset = (PARAMS.OBSTACLE_WIDTH - PARAMS.OBSTACLE_STEM_WIDTH) / 2; - final int yinset = PARAMS.OBSTACLE_WIDTH/2; + (int)(frand() * (mHeight - 2* params.obstacleMin - params.obstacleGap)) + + params.obstacleMin; + final int inset = (params.obstacleWidth - params.obstacleStemWidth) / 2; + final int yinset = params.obstacleWidth /2; final int d1 = irand(0,250); - final Obstacle s1 = new Stem(getContext(), obstacley - yinset, false); + final Obstacle s1 = new Stem(getContext(), (float) obstacley - yinset, false); addView(s1, new LayoutParams( - PARAMS.OBSTACLE_STEM_WIDTH, + params.obstacleStemWidth, (int) s1.h, Gravity.TOP|Gravity.LEFT)); - s1.setTranslationX(mWidth+inset); + s1.setTranslationX((float) mWidth+inset); s1.setTranslationY(-s1.h-yinset); - s1.setTranslationZ(PARAMS.OBSTACLE_Z*0.75f); + s1.setTranslationZ(params.obstacleZ *0.75f); s1.animate() .translationY(0) .setStartDelay(d1) .setDuration(250); mObstaclesInPlay.add(s1); - final Obstacle p1 = new Pop(getContext(), PARAMS.OBSTACLE_WIDTH); + final Obstacle p1 = new Pop(getContext(), params.obstacleWidth); addView(p1, new LayoutParams( - PARAMS.OBSTACLE_WIDTH, - PARAMS.OBSTACLE_WIDTH, + params.obstacleWidth, + params.obstacleWidth, Gravity.TOP|Gravity.LEFT)); p1.setTranslationX(mWidth); - p1.setTranslationY(-PARAMS.OBSTACLE_WIDTH); - p1.setTranslationZ(PARAMS.OBSTACLE_Z); + p1.setTranslationY(-params.obstacleWidth); + p1.setTranslationZ(params.obstacleZ); p1.setScaleX(0.25f); p1.setScaleY(-0.25f); p1.animate() @@ -665,28 +674,28 @@ private void step(long t_ms, long dt_ms) { mObstaclesInPlay.add(p1); final int d2 = irand(0,250); final Obstacle s2 = new Stem(getContext(), - mHeight - obstacley - PARAMS.OBSTACLE_GAP - yinset, + (float) mHeight - obstacley - params.obstacleGap - yinset, true); addView(s2, new LayoutParams( - PARAMS.OBSTACLE_STEM_WIDTH, + params.obstacleStemWidth, (int) s2.h, Gravity.TOP|Gravity.LEFT)); - s2.setTranslationX(mWidth+inset); - s2.setTranslationY(mHeight+yinset); - s2.setTranslationZ(PARAMS.OBSTACLE_Z*0.75f); + s2.setTranslationX((float) mWidth+inset); + s2.setTranslationY((float) mHeight+yinset); + s2.setTranslationZ(params.obstacleZ *0.75f); s2.animate() .translationY(mHeight-s2.h) .setStartDelay(d2) .setDuration(400); mObstaclesInPlay.add(s2); - final Obstacle p2 = new Pop(getContext(), PARAMS.OBSTACLE_WIDTH); + final Obstacle p2 = new Pop(getContext(), params.obstacleWidth); addView(p2, new LayoutParams( - PARAMS.OBSTACLE_WIDTH, - PARAMS.OBSTACLE_WIDTH, + params.obstacleWidth, + params.obstacleWidth, Gravity.TOP| Gravity.LEFT)); p2.setTranslationX(mWidth); p2.setTranslationY(mHeight); - p2.setTranslationZ(PARAMS.OBSTACLE_Z); + p2.setTranslationZ(params.obstacleZ); p2.setScaleX(0.25f); p2.setScaleY(0.25f); p2.animate() @@ -701,7 +710,7 @@ private void step(long t_ms, long dt_ms) { } @Override public boolean onTouchEvent(MotionEvent ev) { - L("touch: %s", ev); + l("touch: %s", ev); final int actionIndex = ev.getActionIndex(); final float x = ev.getX(actionIndex); final float y = ev.getY(actionIndex); @@ -721,20 +730,20 @@ public boolean onTouchEvent(MotionEvent ev) { } @Override public boolean onTrackballEvent(MotionEvent ev) { - L("trackball: %s", ev); - switch (ev.getAction()) { - case MotionEvent.ACTION_DOWN: - poke(0); - return true; - case MotionEvent.ACTION_UP: - unpoke(0); - return true; + l("trackball: %s", ev); + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + poke(0); + } else if (ev.getAction() == MotionEvent.ACTION_UP) { + unpoke(0); + } else { + return false; } - return false; + + return true; } @Override public boolean onKeyDown(int keyCode, KeyEvent ev) { - L("keyDown: %d", keyCode); + l("keyDown: %d", keyCode); switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_DPAD_UP: @@ -749,7 +758,7 @@ public boolean onKeyDown(int keyCode, KeyEvent ev) { } @Override public boolean onKeyUp(int keyCode, KeyEvent ev) { - L("keyDown: %d", keyCode); + l("keyDown: %d", keyCode); switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_DPAD_UP: @@ -764,14 +773,14 @@ public boolean onKeyUp(int keyCode, KeyEvent ev) { } @Override public boolean onGenericMotionEvent (MotionEvent ev) { - L("generic: %s", ev); + l("generic: %s", ev); return false; } private void poke(int playerIndex) { poke(playerIndex, -1, -1); } private void poke(int playerIndex, float x, float y) { - L("poke(%d)", playerIndex); + l("poke(%d)", playerIndex); if (mFrozen) return; if (!mAnimating) { reset(); @@ -790,7 +799,7 @@ private void poke(int playerIndex, float x, float y) { } } private void unpoke(int playerIndex) { - L("unboost(%d)", playerIndex); + l("unboost(%d)", playerIndex); if (mFrozen || !mAnimating || !mPlaying) return; final Player p = getPlayer(playerIndex); if (p == null) return; // no player for this controller @@ -838,8 +847,7 @@ public void onDraw(Canvas c) { pt.setColor(0x8000FF00); for (int i=0; i 0.7f ? 0xFF000000 : 0xFFFFFFFF); } } public void reset() { - //setX(mLand.mWidth / 2); - setY(mLand.mHeight / 2 - + (int)(Math.random() * PARAMS.PLAYER_SIZE) - - PARAMS.PLAYER_SIZE / 2); + setY((float) mLand.mHeight / 2 + + (random.nextInt() * params.playerSize) + - (float) params.playerSize / 2); setScore(0); setScoreField(mScoreField); // refresh color mBoosting = false; @@ -950,8 +958,8 @@ public void getOutline(View view, Outline outline) { }); } public void prepareCheckIntersections() { - final int inset = (PARAMS.PLAYER_SIZE - PARAMS.PLAYER_HIT_SIZE)/2; - final int scale = PARAMS.PLAYER_HIT_SIZE; + final int inset = (params.playerSize - params.playerHitSize)/2; + final int scale = params.playerHitSize; final int N = sHull.length/2; for (int i=0; i PARAMS.MAX_V) dv = PARAMS.MAX_V; + if (dv < -params.maxV) dv = -params.maxV; + else if (dv > params.maxV) dv = params.maxV; final float y = getTranslationY() + dv * dt; setTranslationY(y < 0 ? 0 : y); setRotation( - 90 + lerp(clamp(rlerp(dv, PARAMS.MAX_V, -1 * PARAMS.MAX_V)), 90, -90)); + 90 + lerp(clamp(rlerp(dv, params.maxV, (float) -1 * params.maxV)), 90, -90)); prepareCheckIntersections(); } public void boost(float x, float y) { @@ -994,12 +1002,12 @@ public void boost(float x, float y) { } public void boost() { mBoosting = true; - dv = -PARAMS.BOOST_DV; + dv = -params.boostDv; animate().cancel(); animate() .scaleX(1.25f) .scaleY(1.25f) - .translationZ(PARAMS.PLAYER_Z_BOOST) + .translationZ(params.playerZBoost) .setDuration(100); setScaleX(1.25f); setScaleY(1.25f); @@ -1011,23 +1019,18 @@ public void unboost() { animate() .scaleX(1f) .scaleY(1f) - .translationZ(PARAMS.PLAYER_Z) + .translationZ(params.playerZ) .setDuration(200); } public void die() { mAlive = false; - if (mScoreField != null) { - //mScoreField.setTextColor(0xFFFFFFFF); - //mScoreField.getBackground().setColorFilter(0xFF666666, PorterDuff.Mode.SRC_ATOP); - //mScoreField.setBackgroundResource(R.drawable.marshmallow_scorecard_gameover); - } } public void start() { mAlive = true; } } private class Obstacle extends View implements GameView { - public float h; + protected float h; public final Rect hitRect = new Rect(); public Obstacle(Context context, float h) { super(context); @@ -1052,8 +1055,8 @@ public boolean cleared(Player p) { return true; } @Override - public void step(long t_ms, long dt_ms, float t, float dt) { - setTranslationX(getTranslationX()-PARAMS.TRANSLATION_PER_SEC*dt); + public void step(long tMs, long dtMs, float t, float dt) { + setTranslationX(getTranslationX()- params.translationPerSec *dt); getHitRect(hitRect); } } @@ -1063,9 +1066,13 @@ public void step(long t_ms, long dt_ms, float t, float dt) { R.drawable.marshmallow_mm_mouth3, R.drawable.marshmallow_mm_mouth4}; private class Pop extends Obstacle { int mRotate; - int cx, cy, r; + int cx; + int cy; + int r; // The marshmallow illustration and hitbox is 2/3 the size of its container. - Drawable antenna, eyes, mouth; + Drawable antenna; + Drawable eyes; + Drawable mouth; public Pop(Context context, float h) { super(context, h); setBackgroundResource(R.drawable.marshmallow_mm_head); @@ -1084,18 +1091,20 @@ public void getOutline(View view, Outline outline) { } }); } + + @Override public boolean intersects(Player p) { final int N = p.corners.length/2; for (int i=0; i 0 ? v : -v; } public static int constrain(int amount, int low, int high) { - return amount < low ? low : (amount > high ? high : amount); + return amount < low ? low : (Math.min(amount, high)); } public static long constrain(long amount, long low, long high) { - return amount < low ? low : (amount > high ? high : amount); + return amount < low ? low : (Math.min(amount, high)); } public static float constrain(float amount, float low, float high) { - return amount < low ? low : (amount > high ? high : amount); + return amount < low ? low : (Math.min(amount, high)); } public static float log(float a) { return (float) Math.log(a); @@ -57,28 +51,28 @@ public static float pow(float a, float b) { return (float) Math.pow(a, b); } public static float max(float a, float b) { - return a > b ? a : b; + return Math.max(a, b); } public static float max(int a, int b) { - return a > b ? a : b; + return Math.max(a, b); } public static float max(float a, float b, float c) { - return a > b ? (a > c ? a : c) : (b > c ? b : c); + return a > b ? (Math.max(a, c)) : (Math.max(b, c)); } public static float max(int a, int b, int c) { - return a > b ? (a > c ? a : c) : (b > c ? b : c); + return a > b ? (Math.max(a, c)) : (Math.max(b, c)); } public static float min(float a, float b) { - return a < b ? a : b; + return Math.min(a, b); } public static float min(int a, int b) { - return a < b ? a : b; + return Math.min(a, b); } public static float min(float a, float b, float c) { - return a < b ? (a < c ? a : c) : (b < c ? b : c); + return a < b ? (Math.min(a, c)) : (Math.min(b, c)); } public static float min(int a, int b, int c) { - return a < b ? (a < c ? a : c) : (b < c ? b : c); + return a < b ? (Math.min(a, c)) : (Math.min(b, c)); } public static float dist(float x1, float y1, float x2, float y2) { final float x = (x2 - x1); @@ -137,11 +131,11 @@ public static float map(float minStart, float minStop, float maxStart, float max return maxStart + (maxStart - maxStop) * ((value - minStart) / (minStop - minStart)); } public static int random(int howbig) { - return (int) (sRandom.nextFloat() * howbig); + return sRandom.nextInt() * howbig; } public static int random(int howsmall, int howbig) { if (howsmall >= howbig) return howsmall; - return (int) (sRandom.nextFloat() * (howbig - howsmall) + howsmall); + return sRandom.nextInt() * (howbig - howsmall) + howsmall; } public static float random(float howbig) { return sRandom.nextFloat() * howbig; diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/PlatLogoActivityMARSHMALLOW.java b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/PlatLogoActivityMARSHMALLOW.java index ae4e4f68..d35c9d8c 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/PlatLogoActivityMARSHMALLOW.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/marshmallow/PlatLogoActivityMARSHMALLOW.java @@ -30,7 +30,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; import android.os.Bundle; -import android.preference.PreferenceManager; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; @@ -42,6 +41,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import androidx.preference.PreferenceManager; import com.itachi1706.droideggs.R; @@ -80,15 +80,19 @@ public void getOutline(View view, Outline outline) { }); final float hue = (float) Math.random(); final Paint bgPaint = new Paint(); - bgPaint.setColor(Color.HSBtoColor(hue, 0.4f, 1f)); + bgPaint.setColor(Color.hsbToColor(hue, 0.4f, 1f)); final Paint fgPaint = new Paint(); - fgPaint.setColor(Color.HSBtoColor(hue, 0.5f, 1f)); - final Drawable M = getDrawable(R.drawable.marshmallow_platlogo_m); + fgPaint.setColor(Color.hsbToColor(hue, 0.5f, 1f)); + final Drawable m = getDrawable(R.drawable.marshmallow_platlogo_m); final Drawable platlogo = new Drawable() { @Override - public void setAlpha(int alpha) { } + public void setAlpha(int alpha) { + // Unused Function + } @Override - public void setColorFilter(@Nullable ColorFilter colorFilter) { } + public void setColorFilter(@Nullable ColorFilter colorFilter) { + // Unused Function + } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; @@ -98,8 +102,8 @@ public void draw(Canvas c) { final float r = c.getWidth() / 2f; c.drawCircle(r, r, r, bgPaint); c.drawArc(0, 0, 2 * r, 2 * r, 135, 180, false, fgPaint); - M.setBounds(0, 0, c.getWidth(), c.getHeight()); - M.draw(c); + m.setBounds(0, 0, c.getWidth(), c.getHeight()); + m.draw(c); } }; im.setBackground(new RippleDrawable( diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/mnc/PlatLogoActivityMNC.java b/app/src/main/java/com/itachi1706/droideggs/eggs/mnc/PlatLogoActivityMNC.java index 017ca076..71d5ab40 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/mnc/PlatLogoActivityMNC.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/mnc/PlatLogoActivityMNC.java @@ -26,7 +26,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; import android.os.Bundle; -import android.preference.PreferenceManager; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.KeyEvent; @@ -38,6 +37,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import androidx.preference.PreferenceManager; import com.itachi1706.droideggs.R; import com.itachi1706.droideggs.eggs.marshmallow.Color; @@ -77,15 +77,19 @@ public void getOutline(View view, Outline outline) { }); final float hue = (float) Math.random(); final Paint bgPaint = new Paint(); - bgPaint.setColor(Color.HSBtoColor(hue, 0.4f, 1f)); + bgPaint.setColor(Color.hsbToColor(hue, 0.4f, 1f)); final Paint fgPaint = new Paint(); - fgPaint.setColor(Color.HSBtoColor(hue, 0.5f, 1f)); - final Drawable M = getDrawable(R.drawable.marshmallow_platlogo_m); + fgPaint.setColor(Color.hsbToColor(hue, 0.5f, 1f)); + final Drawable m = getDrawable(R.drawable.marshmallow_platlogo_m); final Drawable platlogo = new Drawable() { @Override - public void setAlpha(int alpha) { } + public void setAlpha(int alpha) { + // Unused Function + } @Override - public void setColorFilter(@Nullable ColorFilter colorFilter) { } + public void setColorFilter(@Nullable ColorFilter colorFilter) { + // Unused Function + } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; @@ -95,8 +99,8 @@ public void draw(Canvas c) { final float r = c.getWidth() / 2f; c.drawCircle(r, r, r, bgPaint); c.drawArc(0, 0, 2 * r, 2 * r, 135, 180, false, fgPaint); - M.setBounds(0, 0, c.getWidth(), c.getHeight()); - M.draw(c); + m.setBounds(0, 0, c.getWidth(), c.getHeight()); + m.draw(c); } }; im.setBackground(new RippleDrawable( diff --git a/app/src/main/java/com/itachi1706/droideggs/eggs/ndp/PlatLogoActivityNDP.java b/app/src/main/java/com/itachi1706/droideggs/eggs/ndp/PlatLogoActivityNDP.java index 8adefbd6..1f138218 100644 --- a/app/src/main/java/com/itachi1706/droideggs/eggs/ndp/PlatLogoActivityNDP.java +++ b/app/src/main/java/com/itachi1706/droideggs/eggs/ndp/PlatLogoActivityNDP.java @@ -22,7 +22,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; import android.os.Bundle; -import android.preference.PreferenceManager; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.KeyEvent; @@ -31,6 +30,7 @@ import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; +import androidx.preference.PreferenceManager; import com.itachi1706.droideggs.R; @@ -53,37 +53,28 @@ protected void onCreate(Bundle savedInstanceState) { mLayout = new FrameLayout(this); setContentView(mLayout); } + @Override public void onAttachedToWindow() { final DisplayMetrics dm = getResources().getDisplayMetrics(); final float dp = dm.density; final int size = (int) - (Math.min(Math.min(dm.widthPixels, dm.heightPixels), 600*dp) - 100*dp); + (Math.min(Math.min(dm.widthPixels, dm.heightPixels), 600 * dp) - 100 * dp); final ImageView im = new ImageView(this); - final int pad = (int)(40*dp); + final int pad = (int) (40 * dp); im.setPadding(pad, pad, pad, pad); im.setTranslationZ(20); im.setScaleX(0.5f); im.setScaleY(0.5f); im.setAlpha(0f); - im.setBackground(new RippleDrawable( - ColorStateList.valueOf(0xFFFFFFFF), - getDrawable(R.drawable.ndp_platlogo), - null)); -// im.setOutlineProvider(new ViewOutlineProvider() { -// @Override -// public void getOutline(View view, Outline outline) { -// outline.setOval(0, 0, view.getWidth(), view.getHeight()); -// } -// }); + im.setBackground(new RippleDrawable(ColorStateList.valueOf(0xFFFFFFFF), getDrawable(R.drawable.ndp_platlogo), null)); im.setClickable(true); im.setOnClickListener(v -> { im.setOnLongClickListener(v1 -> { if (mTapCount < 5) return false; if (REVEAL_THE_NAME) { - final Drawable overlay = getDrawable( - R.drawable.ndp_platlogo_n); + final Drawable overlay = getDrawable(R.drawable.ndp_platlogo_n); overlay.setBounds(0, 0, v1.getMeasuredWidth(), v1.getMeasuredHeight()); im.getOverlay().clear(); im.getOverlay().add(overlay);