expose wasm collisions
This commit is contained in:
parent
3a8f7f785f
commit
1505f71328
31
app.c
31
app.c
|
@ -138,6 +138,7 @@ typedef struct Collision {
|
||||||
|
|
||||||
#define NB_COLLISIONS 10
|
#define NB_COLLISIONS 10
|
||||||
Collision collisions[NB_COLLISIONS] = {};
|
Collision collisions[NB_COLLISIONS] = {};
|
||||||
|
int nb_collisions = 0;
|
||||||
|
|
||||||
Collision collision_union(Collision rec1, Collision rec2)
|
Collision collision_union(Collision rec1, Collision rec2)
|
||||||
{
|
{
|
||||||
|
@ -190,6 +191,21 @@ Collision collision_rec(Collision fix, int i, int scale)
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset_collisions()
|
||||||
|
{
|
||||||
|
nb_collisions = 0;
|
||||||
|
}
|
||||||
|
void add_collisions(int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
if (nb_collisions >= NB_COLLISIONS) return;
|
||||||
|
collisions[nb_collisions++] = (Collision) {
|
||||||
|
.x = x,
|
||||||
|
.y = y,
|
||||||
|
.width = width,
|
||||||
|
.height = height,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
void set_velocity(float x, float y)
|
void set_velocity(float x, float y)
|
||||||
{
|
{
|
||||||
velocity = (v2){x, y};
|
velocity = (v2){x, y};
|
||||||
|
@ -235,32 +251,31 @@ int collision(v2 point, int x, int y, int w, int h)
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
pengers_init();
|
pengers_init();
|
||||||
int col_id = 0;
|
collisions[nb_collisions++] = (Collision) {
|
||||||
collisions[col_id++] = (Collision) {
|
|
||||||
.x = 100,
|
.x = 100,
|
||||||
.y = 400,
|
.y = 400,
|
||||||
.width = 50,
|
.width = 50,
|
||||||
.height = 100,
|
.height = 100,
|
||||||
};
|
};
|
||||||
collisions[col_id++] = (Collision) {
|
collisions[nb_collisions++] = (Collision) {
|
||||||
.x = 150,
|
.x = 150,
|
||||||
.y = 450,
|
.y = 450,
|
||||||
.width = 500,
|
.width = 500,
|
||||||
.height = 50,
|
.height = 50,
|
||||||
};
|
};
|
||||||
collisions[col_id++] = (Collision) {
|
collisions[nb_collisions++] = (Collision) {
|
||||||
.x = 650,
|
.x = 650,
|
||||||
.y = 400,
|
.y = 400,
|
||||||
.width = 50,
|
.width = 50,
|
||||||
.height = 100,
|
.height = 100,
|
||||||
};
|
};
|
||||||
collisions[col_id++] = (Collision) {
|
collisions[nb_collisions++] = (Collision) {
|
||||||
.x = 280,
|
.x = 280,
|
||||||
.y = 200,
|
.y = 200,
|
||||||
.width = 75,
|
.width = 75,
|
||||||
.height = 75,
|
.height = 75,
|
||||||
};
|
};
|
||||||
collisions[col_id++] = (Collision) {
|
collisions[nb_collisions++] = (Collision) {
|
||||||
.x = 445,
|
.x = 445,
|
||||||
.y = 200,
|
.y = 200,
|
||||||
.width = 75,
|
.width = 75,
|
||||||
|
@ -340,7 +355,7 @@ void draw(float dt)
|
||||||
|
|
||||||
rebondi(&penger_pos, scale);
|
rebondi(&penger_pos, scale);
|
||||||
|
|
||||||
for (int i = 0; i < NB_COLLISIONS; i++) {
|
for (int i = 0; i < nb_collisions; i++) {
|
||||||
Collision col = collision_rec(collisions[i], i, scale);
|
Collision col = collision_rec(collisions[i], i, scale);
|
||||||
x_collide = x_collide || (col.height > 1);
|
x_collide = x_collide || (col.height > 1);
|
||||||
}
|
}
|
||||||
|
@ -403,7 +418,7 @@ void draw(float dt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw collisions box
|
// draw collisions box
|
||||||
for (int i = 0; i < NB_COLLISIONS; i++) {
|
for (int i = 0; i < nb_collisions; i++) {
|
||||||
for (int y = collisions[i].y; y < collisions[i].y + collisions[i].height; y++) {
|
for (int y = collisions[i].y; y < collisions[i].y + collisions[i].height; y++) {
|
||||||
for (int x = collisions[i].x; x < collisions[i].x + collisions[i].width; x++) {
|
for (int x = collisions[i].x; x < collisions[i].x + collisions[i].width; x++) {
|
||||||
if ((y/2 + x/3)%8 < 4)
|
if ((y/2 + x/3)%8 < 4)
|
||||||
|
|
2
build.sh
2
build.sh
|
@ -5,7 +5,7 @@ if [[ "$1" == "clear" ]]; then
|
||||||
exit
|
exit
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player BUFFER width height id nb_players dir"
|
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player reset_collisions add_collisions BUFFER width height id nb_players dir"
|
||||||
export_cmd=""
|
export_cmd=""
|
||||||
for e in $export_sym; do
|
for e in $export_sym; do
|
||||||
export_cmd="$export_cmd -Wl,--export=$e";
|
export_cmd="$export_cmd -Wl,--export=$e";
|
||||||
|
|
1
load.js
1
load.js
|
@ -50,7 +50,6 @@ const connection = new WebSocket(document.URL.replace('http', 'ws').replace('696
|
||||||
connection.onopen = (e) => { console.log("connection to server opened"); };
|
connection.onopen = (e) => { console.log("connection to server opened"); };
|
||||||
connection.onmessage = (e) => {
|
connection.onmessage = (e) => {
|
||||||
var req = JSON.parse(e.data);
|
var req = JSON.parse(e.data);
|
||||||
console.log(req);
|
|
||||||
if (req.name == 'pseudo') {
|
if (req.name == 'pseudo') {
|
||||||
if (req.value != "") is_connected = true;
|
if (req.value != "") is_connected = true;
|
||||||
document.getElementById('players').innerHTML = req.value;
|
document.getElementById('players').innerHTML = req.value;
|
||||||
|
|
Loading…
Reference in New Issue