Subversion Repositories AndroidProjects

Rev

Rev 894 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
894 chris 1
package com.gebauz.burutaru.game.entities;
2
 
3
import com.gebauz.bauzoid.graphics.sprite.Sprite;
4
import com.gebauz.burutaru.GameConsts;
5
import com.gebauz.burutaru.game.GameLogic;
6
 
7
public class StarField extends Entity
8
{
9
 
10
        // Constants========================================================================================
11
 
12
        public static final int MAX_STARS = 28;
13
 
14
        public static final float MIN_SPEED = 10;
15
        public static final float MAX_SPEED = 400;
16
 
17
        public static final float MIN_SIZE = 2;
18
        public static final float MAX_SIZE = 8;
19
 
20
        // Embedded Types===================================================================================
21
 
22
        public class Particle
23
        {
24
                public float x = 0;
25
                public float y = 0;
26
                public float w = 0;
27
                public float h = 0;
28
                public float speed = 0;
29
                public boolean isAlive = false;
30
 
31
                public Particle()
32
                {
33
                        x = getGame().getRandomFloat(0, GameConsts.VIRTUAL_SCREEN_WIDTH+150);
34
                        y = getGame().getRandomFloat(0, GameConsts.VIRTUAL_SCREEN_HEIGHT);
35
                        w = getGame().getRandomFloat(MIN_SIZE, MAX_SIZE);
36
                        h = w/2;
37
                        speed = getGame().getRandomFloat(MIN_SPEED, MAX_SPEED);
38
                        isAlive = true;
39
                }
40
 
41
                public void spawn()
42
                {
43
                        x = GameConsts.VIRTUAL_SCREEN_WIDTH + getGame().getRandomFloat(10, 150);
44
                        y = getGame().getRandomFloat(0, GameConsts.VIRTUAL_SCREEN_HEIGHT);
45
                        w = getGame().getRandomFloat(MIN_SIZE, MAX_SIZE);
46
                        h = w/2;
47
                        speed = getGame().getRandomFloat(MIN_SPEED, MAX_SPEED);
48
                        isAlive = true;
49
                }
50
 
51
                public void update(float deltaTime)
52
                {
53
                        x -= speed * deltaTime;
54
                        if (x < -w)
55
                                isAlive = false;
56
                }
57
 
58
                public void render()
59
                {
900 chris 60
                        mStarSprite.param.x = x;
61
                        mStarSprite.param.y = y;
62
                        mStarSprite.param.w = w;
63
                        mStarSprite.param.h = h;
894 chris 64
                        mStarSprite.centerPivot();
65
                        mStarSprite.render();
66
                }
67
        }
68
 
69
        // Fields===========================================================================================
70
 
71
        private Particle mParticles[] = new Particle[MAX_STARS];
72
        private Sprite mStarSprite = null;
73
 
74
        // Methods==========================================================================================
75
 
76
        public StarField(GameLogic gameLogic)
77
        {
78
                super(gameLogic);
79
                mStarSprite = new Sprite(getGraphics(), "data/textures/star.png");
80
        }
81
 
82
        @Override
83
        public void initAsync()
84
        {
85
                mStarSprite.initAsync();
86
 
87
        }
88
 
89
        @Override
90
        public void init()
91
        {
92
                mStarSprite.init();
93
 
94
                for (int i = 0; i < mParticles.length; i++)
95
                {
96
                        mParticles[i] = new Particle();
97
                }
98
        }
99
 
100
        @Override
101
        public void exit()
102
        {
103
                if (mStarSprite != null)
104
                {
105
                        mStarSprite.dispose();
106
                        mStarSprite = null;
107
                }
108
        }
109
 
110
        @Override
111
        public void update(float deltaTime)
112
        {
113
                for (int i = 0; i < mParticles.length; i++)
114
                {
115
                        if (mParticles[i].isAlive)
116
                                mParticles[i].update(deltaTime);
117
 
118
                        if (!mParticles[i].isAlive)
119
                                spawn(i);
120
                }
121
        }
122
 
123
        @Override
124
        public void render()
125
        {
126
                for (int i = 0; i < mParticles.length; i++)
127
                {
128
                        if (mParticles[i].isAlive)
129
                                mParticles[i].render();
130
                }
131
        }
132
 
133
        public void spawn(int index)
134
        {
135
                if (!mParticles[index].isAlive)
136
                {
137
                        mParticles[index].spawn();
138
                }
139
        }
140
 
141
        // Getters/Setters==================================================================================
142
 
143
}