Rev 84 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 66 | chris | 1 | package com.gebauz.pingK.game; |
| 2 | |||
| 84 | chris | 3 | import com.gebauz.framework.util.MathUtil; |
| 66 | chris | 4 | import com.gebauz.framework.util.Sprite2D; |
| 5 | import com.gebauz.pingK.R; |
||
| 6 | |||
| 7 | public class ScoreDisplay |
||
| 8 | { |
||
| 9 | public static final int MODE_SCORE = 0; |
||
| 10 | public static final int MODE_OWNGOAL = 1; |
||
| 67 | chris | 11 | public static final float SCORE_DISPLAY_TIME = 2.0f; |
| 66 | chris | 12 | |
| 67 | chris | 13 | private GameLogic mGameLogic; |
| 66 | chris | 14 | private int mMode = -1; |
| 67 | chris | 15 | private int mLastPlayerScored = 0; |
| 16 | private boolean mIsDone = false; |
||
| 68 | chris | 17 | private float mTargetAngle = 0.0f; |
| 18 | private float mCurrentAngle = 0.0f; |
||
| 19 | private float mTargetSize = 1.0f; |
||
| 20 | private float mCurrentSize = 1.0f; |
||
| 66 | chris | 21 | |
| 22 | private Sprite2D mScoreSprite = new Sprite2D(); |
||
| 23 | private Sprite2D mOwnGoalSprite = new Sprite2D(); |
||
| 24 | |||
| 67 | chris | 25 | private float mScoreCountdown = 0.0f; |
| 26 | |||
| 66 | chris | 27 | public ScoreDisplay(GameLogic gameLogic) |
| 28 | { |
||
| 29 | mGameLogic = gameLogic; |
||
| 30 | |||
| 31 | mScoreSprite.init(R.drawable.score); |
||
| 32 | mOwnGoalSprite.init(R.drawable.owngoal); |
||
| 33 | |||
| 67 | chris | 34 | mScoreSprite.setColor(GameConsts.PINGK_COLOR); |
| 66 | chris | 35 | mScoreSprite.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f; |
| 36 | mScoreSprite.y = mGameLogic.getVirtualPlayFieldHeight() / 2.0f; |
||
| 37 | |||
| 67 | chris | 38 | mOwnGoalSprite.setColor(GameConsts.PINGK_COLOR); |
| 66 | chris | 39 | mOwnGoalSprite.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f; |
| 40 | mOwnGoalSprite.y = mGameLogic.getVirtualPlayFieldHeight() / 2.0f; |
||
| 67 | chris | 41 | |
| 42 | mIsDone = false; |
||
| 66 | chris | 43 | } |
| 44 | |||
| 67 | chris | 45 | public void startDisplay(int playerIndex, int mode) |
| 66 | chris | 46 | { |
| 47 | mMode = mode; |
||
| 67 | chris | 48 | mScoreCountdown = SCORE_DISPLAY_TIME; |
| 49 | mLastPlayerScored = playerIndex; |
||
| 50 | |||
| 51 | mIsDone = false; |
||
| 68 | chris | 52 | |
| 53 | mTargetSize = GameConsts.SCORE_DISPLAY_SIZE_END; |
||
| 54 | mCurrentSize = GameConsts.SCORE_DISPLAY_SIZE_BEGIN; |
||
| 55 | |||
| 84 | chris | 56 | mScoreSprite.setColor(GameConsts.PINGK_COLOR); |
| 57 | mOwnGoalSprite.setColor(GameConsts.PINGK_COLOR); |
||
| 58 | |||
| 68 | chris | 59 | if (((mLastPlayerScored == 0) && (mMode != MODE_OWNGOAL)) || |
| 60 | ((mLastPlayerScored == 1) && (mMode == MODE_OWNGOAL))) |
||
| 61 | { |
||
| 62 | mTargetAngle = 90; |
||
| 63 | mCurrentAngle = 0.0f; |
||
| 64 | } |
||
| 65 | else |
||
| 66 | { |
||
| 67 | mTargetAngle = 270; |
||
| 68 | mCurrentAngle = 360.0f; |
||
| 69 | } |
||
| 87 | chris | 70 | |
| 71 | mGameLogic.playSound(R.raw.score); |
||
| 66 | chris | 72 | } |
| 73 | |||
| 67 | chris | 74 | public boolean isDone() |
| 75 | { |
||
| 76 | return mIsDone; |
||
| 77 | } |
||
| 78 | |||
| 79 | public int getLastPlayerScored() |
||
| 80 | { |
||
| 81 | return mLastPlayerScored; |
||
| 82 | } |
||
| 83 | |||
| 66 | chris | 84 | public void update(float deltaTime) |
| 85 | { |
||
| 67 | chris | 86 | mScoreCountdown -= deltaTime; |
| 87 | if (mScoreCountdown < 0.0f) |
||
| 88 | { |
||
| 89 | mIsDone = true; |
||
| 68 | chris | 90 | return; |
| 67 | chris | 91 | } |
| 68 | chris | 92 | |
| 84 | chris | 93 | float alpha = MathUtil.clamp(mScoreCountdown, 0.0f, 1.0f); |
| 94 | mScoreSprite.setColor(GameConsts.PINGK_COLOR.x, GameConsts.PINGK_COLOR.y, GameConsts.PINGK_COLOR.z, alpha); |
||
| 95 | mOwnGoalSprite.setColor(GameConsts.PINGK_COLOR.x, GameConsts.PINGK_COLOR.y, GameConsts.PINGK_COLOR.z, alpha); |
||
| 96 | |||
| 68 | chris | 97 | float diff = mTargetAngle - mCurrentAngle; |
| 98 | mCurrentAngle += (diff * deltaTime * GameConsts.SCORE_DISPLAY_ACCEL); |
||
| 99 | |||
| 100 | diff = mTargetSize - mCurrentSize; |
||
| 101 | mCurrentSize += (diff * deltaTime * GameConsts.SCORE_DISPLAY_ACCEL); |
||
| 66 | chris | 102 | } |
| 103 | |||
| 104 | public void render() |
||
| 105 | { |
||
| 67 | chris | 106 | if (!mIsDone) |
| 107 | { |
||
| 68 | chris | 108 | if (mMode == MODE_SCORE) |
| 67 | chris | 109 | { |
| 68 | chris | 110 | mScoreSprite.w = mCurrentSize; |
| 111 | mScoreSprite.h = mCurrentSize; |
||
| 112 | mScoreSprite.pivotX = mScoreSprite.w/2.0f; |
||
| 113 | mScoreSprite.pivotY = mScoreSprite.h/2.0f; |
||
| 114 | mScoreSprite.angle = mCurrentAngle; |
||
| 115 | mScoreSprite.render(); |
||
| 67 | chris | 116 | } |
| 117 | else |
||
| 118 | { |
||
| 68 | chris | 119 | mOwnGoalSprite.w = mCurrentSize; |
| 120 | mOwnGoalSprite.h = mCurrentSize; |
||
| 121 | mOwnGoalSprite.pivotX = mOwnGoalSprite.w/2.0f; |
||
| 122 | mOwnGoalSprite.pivotY = mOwnGoalSprite.h/2.0f; |
||
| 123 | mOwnGoalSprite.angle = mCurrentAngle; |
||
| 124 | mOwnGoalSprite.render(); |
||
| 125 | } |
||
| 67 | chris | 126 | } |
| 66 | chris | 127 | } |
| 68 | chris | 128 | } |
| 66 | chris | 129 | |
| 68 | chris | 130 |