Blame demo/src/phisics.c

59dae5
59dae5
#include <helianthus.h></helianthus.h>
59dae5
59dae5
#include "phisics.h"
59dae5
59dae5
59dae5
59dae5
static Sprite ball, brick1, brick2, brick3;
59dae5
static Group edges;
59dae5
static Group movement;
28a314
static Sound beep;
59dae5
59dae5
59dae5
59dae5
void phisicsInit() {
59dae5
	ball = createSpriteEx(200, 200, 64, 64);
dba3fc
	spriteSetAnimation(ball, createAnimation("data/sprite/breadball.png"));
59dae5
	spriteSetColliderCircle(ball, 0, 0, -1);
59dae5
	spriteSetRotateToDirection(ball, TRUE);
59dae5
	
59dae5
	brick1 = createSpriteEx(200-32, 200+64, 64, 64);
dba3fc
	spriteSetAnimation(brick1, createAnimation("data/sprite/bricks.png"));
d4e89f
	spriteSetTintColor(brick1, colorByRGB(0, 0, 1));
59dae5
	spriteSetColliderRectangle(brick1, 0, 0, 0, -1, -1, 20);
59dae5
	spriteSetBounciness(brick1, 0.5);
59dae5
	
59dae5
	brick2 = createSpriteEx(200+32, 200+64, 64, 64);
dba3fc
	spriteSetAnimation(brick2, createAnimation("data/sprite/bricks.png"));
59dae5
	spriteSetColliderRectangle(brick2, 0, 0, 0, -1, -1, 20);
59dae5
	
59dae5
	brick3 = createSpriteEx(200+32+64, 200+64, 64, 64);
dba3fc
	spriteSetAnimation(brick3, createAnimation("data/sprite/bricks.png"));
d4e89f
	spriteSetTintColor(brick3, colorByRGBA(1, 0, 1, 0.5));
59dae5
	spriteSetColliderRectangle(brick3, 0, 0, 0, -1, -1, 20);
59dae5
	spriteSetBounciness(brick3, 2);
59dae5
	
59dae5
	movement = createGroup();
59dae5
	groupAdd(movement, ball);
59dae5
	groupAdd(movement, brick2);
59dae5
	
59dae5
	edges = createEdgesGroup();
59dae5
	groupAdd(edges, brick1);
59dae5
	groupAdd(edges, brick3);
59dae5
	
59dae5
	beep = createSound("data/sound/beep.ogg");
59dae5
}
59dae5
59dae5
59dae5
void phisicsDraw() {
8bc1f1
	double dt = worldGetFrameTime();
59dae5
	double accel = 100;
59dae5
59dae5
	double vx = spriteGetVelocityX(ball);
59dae5
	double vy = spriteGetVelocityY(ball);
59dae5
	if (keyDown("left"))  spriteSetVelocityX(ball, vx - accel*dt);
59dae5
	if (keyDown("right")) spriteSetVelocityX(ball, vx + accel*dt);
59dae5
	if (keyDown("up"))    spriteSetVelocityY(ball, vy - accel*dt);
59dae5
	if (keyDown("down"))  spriteSetVelocityY(ball, vy + accel*dt);
59dae5
59dae5
	int collision = FALSE;
59dae5
	if (groupCollideBetween(movement, 1)) collision = TRUE;
59dae5
	if (groupPushGroup(edges, movement, 0.9)) collision = TRUE;
59dae5
	
59dae5
	if (collision) soundPlay(beep, FALSE);
59dae5
}
59dae5