Subversion Repositories AndroidProjects

Rev

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