float rtimers[4];
uint32_t nrocks;
-uint32_t nrocks_timer;
-uint32_t nrocks_inc_ticks = 2*60*1000/(F_ROCKS-I_ROCKS);
+float nrocks_timer;
+float nrocks_inc_ticks = 2*60*20/(F_ROCKS-I_ROCKS);
// constants for rock generation.
-#define KH 32.0 // 32 s for a speed=1 rock to cross the screen horizontally.
-#define KV 24.0 // 24 s for a speed=1 rock to cross the screen vertically.
+#define KH (32.0*20) // 32 s for a speed=1 rock to cross the screen horizontally.
+#define KV (24.0*20) // 24 s for a speed=1 rock to cross the screen vertically.
#define RDX 2.5 // range for rock dx values (+/-)
#define RDY 2.5 // range for rock dy values (+/-)
float rmax[4];
if(nrocks < F_ROCKS) {
- nrocks_timer += ms_frame;
+ nrocks_timer += t_frame;
if(nrocks_timer >= nrocks_inc_ticks) {
nrocks_timer -= nrocks_inc_ticks;
nrocks++;
// loop through the four sides of the screen
for(i=0; i<4; i++) {
// see if we generate a rock for this side this frame
- rtimers[i] += ti[i]*s_frame;
+ rtimers[i] += ti[i]*t_frame;
while(rtimers[i] >= 1) {
rtimers[i] -= 1;
j=0;
return 0;
}
+int
+pixel_hit_rocks(float x, float y)
+{
+ int i;
+ float xoff, yoff;
+
+ for(i=0; i<MAXROCKS; i++) {
+ if(rock[i].active) {
+ xoff = x - rock[i].x; if(xoff < 0) continue;
+ yoff = y - rock[i].y; if(yoff < 0) continue;
+ if(pixel_collide(xoff, yoff, rock[i].shape)) return 1;
+ }
+ }
+ return 0;
+}
+
void
blast_rocks(float x, float y, float radius, int onlyslow)
{