Blame demo/src/phisics.c

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