mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 15:58:36 -07:00
Add NFC Maker and Jetpack Joyride apps
This commit is contained in:
57
applications/external/jetpack_joyride/includes/particle.c
vendored
Normal file
57
applications/external/jetpack_joyride/includes/particle.c
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "particle.h"
|
||||
#include "scientist.h"
|
||||
#include "barry.h"
|
||||
|
||||
void particle_tick(PARTICLE* const particles, SCIENTIST* const scientists) {
|
||||
// Move particles
|
||||
for(int i = 0; i < PARTICLES_MAX; i++) {
|
||||
if(particles[i].point.y > 0) {
|
||||
particles[i].point.y += PARTICLE_VELOCITY;
|
||||
|
||||
// Check collision with scientists
|
||||
for(int j = 0; j < SCIENTISTS_MAX; j++) {
|
||||
if(scientists[j].state == ScientistStateAlive && scientists[j].point.x > 0) {
|
||||
// Check whether the particle lies within the scientist's bounding box
|
||||
if(!(particles[i].point.x > scientists[j].point.x + SCIENTIST_WIDTH ||
|
||||
particles[i].point.x < scientists[j].point.x ||
|
||||
particles[i].point.y > scientists[j].point.y + SCIENTIST_HEIGHT ||
|
||||
particles[i].point.y < scientists[j].point.y)) {
|
||||
scientists[j].state = ScientistStateDead;
|
||||
// (*points) += 2; // Increase the score by 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(particles[i].point.x < 0 || particles[i].point.x > SCREEN_WIDTH ||
|
||||
particles[i].point.y < 0 || particles[i].point.y > SCREEN_HEIGHT) {
|
||||
particles[i].point.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void spawn_random_particles(PARTICLE* const particles, BARRY* const barry) {
|
||||
for(int i = 0; i < PARTICLES_MAX; i++) {
|
||||
if(particles[i].point.y <= 0) {
|
||||
particles[i].point.x = barry->point.x + (rand() % 4);
|
||||
particles[i].point.y = barry->point.y + 14;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void draw_particles(const PARTICLE* particles, Canvas* const canvas) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
for(int i = 0; i < PARTICLES_MAX; i++) {
|
||||
if(particles[i].point.y > 0) {
|
||||
canvas_draw_line(
|
||||
canvas,
|
||||
particles[i].point.x,
|
||||
particles[i].point.y,
|
||||
particles[i].point.x,
|
||||
particles[i].point.y + 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user