brr brr conveyors go nyooom
This commit is contained in:
parent
ae7d4717b4
commit
b00262807c
|
@ -30,6 +30,10 @@ set(ASSETS_cg
|
|||
assets-cg/img/end.png
|
||||
assets-cg/img/door.png
|
||||
assets-cg/img/key.png
|
||||
assets-cg/img/conveyor_u.png
|
||||
assets-cg/img/conveyor_r.png
|
||||
assets-cg/img/conveyor_d.png
|
||||
assets-cg/img/conveyor_l.png
|
||||
# ...
|
||||
)
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 224 B |
Binary file not shown.
After Width: | Height: | Size: 199 B |
Binary file not shown.
After Width: | Height: | Size: 181 B |
Binary file not shown.
After Width: | Height: | Size: 228 B |
|
@ -20,4 +20,20 @@ door.png:
|
|||
|
||||
key.png:
|
||||
type: bopti-image
|
||||
name: img_key
|
||||
name: img_key
|
||||
|
||||
conveyor_u.png:
|
||||
type: bopti-image
|
||||
name: img_conveyor_u
|
||||
|
||||
conveyor_r.png:
|
||||
type: bopti-image
|
||||
name: img_conveyor_r
|
||||
|
||||
conveyor_d.png:
|
||||
type: bopti-image
|
||||
name: img_conveyor_d
|
||||
|
||||
conveyor_l.png:
|
||||
type: bopti-image
|
||||
name: img_conveyor_l
|
|
@ -1,19 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#define LEVEL_NB 2
|
||||
#define LEVEL_NB 3
|
||||
#define LEVEL_SIZE 16
|
||||
#define TILE_SIZE 12
|
||||
#define PLAYER_SIZE 10
|
||||
|
||||
/* struct for a pair of values */
|
||||
/* struct for a pair of int values */
|
||||
typedef struct Vec2 {
|
||||
int x, y;
|
||||
} Vec2;
|
||||
|
||||
/* struct for a pair of float values */
|
||||
typedef struct FVec2 {
|
||||
float x, y;
|
||||
} FVec2;
|
||||
|
||||
/* struct for player's data */
|
||||
typedef struct Player {
|
||||
Vec2 pos;
|
||||
Vec2 spawn;
|
||||
FVec2 frac;
|
||||
} Player;
|
||||
|
||||
/* used for tiles */
|
||||
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 432 B |
21
src/levels.c
21
src/levels.c
|
@ -37,5 +37,24 @@ const tile_t level[LEVEL_NB][LEVEL_SIZE][LEVEL_SIZE] = {
|
|||
2, 0, 6, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 6, 0, 2,
|
||||
2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 8, 8, 8, 8, 4, 6, 8, 8, 8, 8, 8, 8, 2, 2,
|
||||
2, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 2,
|
||||
2, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 2,
|
||||
2, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 8, 9, 9, 9, 2,
|
||||
2, 4, 7, 4, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 2,
|
||||
2, 6, 7, 6, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 2,
|
||||
2, 7, 7, 7, 0, 0, 1, 2, 2, 2, 2, 2, 9, 9, 9, 2,
|
||||
2, 7, 7, 7, 2, 2, 2, 2, 2, 3, 0, 5, 9, 9, 9, 2,
|
||||
2, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 6, 9, 6, 2,
|
||||
2, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 4, 9, 4, 2,
|
||||
2, 7, 7, 7, 10, 2, 2, 2, 2, 2, 2, 9, 9, 9, 9, 2,
|
||||
2, 7, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 2,
|
||||
2, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 2,
|
||||
2, 2, 10, 10, 10, 10, 10, 10, 6, 4, 10, 10, 10, 10, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||
}
|
||||
};
|
50
src/main.c
50
src/main.c
|
@ -85,6 +85,10 @@ int main(void) {
|
|||
extern bopti_image_t img_end;
|
||||
extern bopti_image_t img_door;
|
||||
extern bopti_image_t img_key;
|
||||
extern bopti_image_t img_conveyor_u;
|
||||
extern bopti_image_t img_conveyor_r;
|
||||
extern bopti_image_t img_conveyor_d;
|
||||
extern bopti_image_t img_conveyor_l;
|
||||
|
||||
extern tile_t level[LEVEL_NB][LEVEL_SIZE][LEVEL_SIZE];
|
||||
|
||||
|
@ -96,7 +100,8 @@ int main(void) {
|
|||
/* player */
|
||||
Player player = {
|
||||
.pos = {0, 0},
|
||||
.spawn = {0, 0}
|
||||
.spawn = {0, 0},
|
||||
.frac = {0, 0}
|
||||
};
|
||||
|
||||
memcpy(curr_level, level[lvl], sizeof(level[lvl]));
|
||||
|
@ -133,12 +138,32 @@ int main(void) {
|
|||
dsubimage(m * TILE_SIZE, n * TILE_SIZE, &img_key,
|
||||
((timer / 30) % 4) * 12, 0, 12, 12, 0);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
/* key ring */
|
||||
dsubimage(m * TILE_SIZE, n * TILE_SIZE, &img_conveyor_u,
|
||||
((timer / 15) % 6) * 12, 0, 12, 12, 0);
|
||||
break;
|
||||
case 8:
|
||||
/* key ring */
|
||||
dsubimage(m * TILE_SIZE, n * TILE_SIZE, &img_conveyor_r,
|
||||
((timer / 15) % 6) * 12, 0, 12, 12, 0);
|
||||
break;
|
||||
case 9:
|
||||
/* key ring */
|
||||
dsubimage(m * TILE_SIZE, n * TILE_SIZE, &img_conveyor_d,
|
||||
((timer / 15) % 6) * 12, 0, 12, 12, 0);
|
||||
break;
|
||||
case 10:
|
||||
/* key ring */
|
||||
dsubimage(m * TILE_SIZE, n * TILE_SIZE, &img_conveyor_l,
|
||||
((timer / 15) % 6) * 12, 0, 12, 12, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dprint(0, 0, C_BLACK, "%d", lvl);
|
||||
|
||||
/* drawing the player */
|
||||
dimage(player.pos.x, player.pos.y, &img_player);
|
||||
|
||||
|
@ -150,16 +175,37 @@ int main(void) {
|
|||
};
|
||||
clearevents();
|
||||
|
||||
/* conveyors */
|
||||
if(collide(player.pos, 0, 7, curr_level)) { player.frac.y -= 0.5; }
|
||||
if(collide(player.pos, 0, 8, curr_level)) { player.frac.x += 0.5; }
|
||||
if(collide(player.pos, 0, 9, curr_level)) { player.frac.y += 0.5; }
|
||||
if(collide(player.pos, 0, 10, curr_level)) { player.frac.x -= 0.5; }
|
||||
|
||||
/* little accelerations (like conveyors) */
|
||||
const int ifrac_x = player.frac.x;
|
||||
player.frac.x -= ifrac_x;
|
||||
mov.x += ifrac_x;
|
||||
|
||||
const int ifrac_y = player.frac.y;
|
||||
player.frac.y -= ifrac_y;
|
||||
mov.y += ifrac_y;
|
||||
|
||||
/* trying to move the player >w< */
|
||||
if(!collide((Vec2){player.pos.x + mov.x, player.pos.y}, 0, 2, curr_level) &&
|
||||
!collide((Vec2){player.pos.x + mov.x, player.pos.y}, 1, 5, curr_level)) {
|
||||
player.pos.x += mov.x;
|
||||
}
|
||||
else {
|
||||
player.frac = (FVec2){ 0, 0 };
|
||||
}
|
||||
|
||||
if(!collide((Vec2){player.pos.x, player.pos.y + mov.y}, 0, 2, curr_level) &&
|
||||
!collide((Vec2){player.pos.x, player.pos.y + mov.y}, 1, 5, curr_level)) {
|
||||
player.pos.y += mov.y;
|
||||
}
|
||||
else {
|
||||
player.frac = (FVec2){ 0, 0 };
|
||||
}
|
||||
|
||||
/* d i e */
|
||||
if(collide(player.pos, 2, 4, curr_level)) {
|
||||
|
|
Loading…
Reference in New Issue