A retro platform game
git clone git://soophie.de/freezo
diff --git a/include/tile.h b/include/tile.h
index 11b4976..b38da60 100644
--- a/include/tile.h
+++ b/include/tile.h
1
@@ -14,6 +14,12 @@ typedef enum {2
TILE_STONE,3
TILE_SNOW,4
TILE_SAND,5
+ TILE_BG_CHANDELIER,6
+ TILE_BG_WINDOW,7
+ TILE_BG_BANNER,8
+ TILE_BG_BRICK_1,9
+ TILE_BG_BRICK_2,10
+ TILE_BG_BRICK_3,11
} tile_e;13
struct Tile {
diff --git a/include/util.h b/include/util.h
index 4717fec..135e9b9 100644
--- a/include/util.h
+++ b/include/util.h
1
@@ -32,6 +32,7 @@ bool rect_collide(rect_t a, rect_t b);3
Texture texture_load(char *filename, int scale);4
Rectangle texture_rect(int x, int y, int width, int height);5
+Rectangle texture_rect_v(int x, int y, int width, int height, int size_x, int size_y);7
typedef enum {8
TEXT_ALIGNMENT_LEFT,
diff --git a/src/game.c b/src/game.c
index 8d57ae4..39d3ef9 100644
--- a/src/game.c
+++ b/src/game.c
1
@@ -147,7 +147,6 @@ void game_update(game_t *game) {2
void game_draw(game_t *game) {3
BeginDrawing();4
ClearBackground(BLACK);5
- DrawTextureRec(game->assets.background, (Rectangle) { 0, 0, WINDOW_WIDTH * TILE_WIDTH, WINDOW_HEIGHT * TILE_HEIGHT }, (pos_t) { 0, 0 }, WHITE);6
if (game->level != LEVEL_NULL) {7
BeginMode2D(game->camera);8
for (int i = 0; i < game->tiles_len; i++) {
diff --git a/src/level.c b/src/level.c
index e1821ab..1c8f3b1 100644
--- a/src/level.c
+++ b/src/level.c
1
@@ -9,16 +9,16 @@2
const char *LEVEL_MAP_1 = {3
"........................"4
"........................"5
+ "........k.......o......."6
+ "..1....................."7
"........................"8
"........................"9
- "........................"10
- "........................"11
- "......e................."12
+ "......e......3.........."13
"....xxxx................"14
- "........................"15
+ ".....b.................."16
"...........--...xxx....."17
"................e......."18
- "...............--xxxxx.."19
+ "...........2...--xxxxx.."20
"....p..................."21
"..xxxxxxxxx---xxxxxxxx.."22
"........................"23
@@ -28,55 +28,74 @@ const char *LEVEL_MAP_1 = {24
const char *LEVEL_MAP_2 = {25
"........................"26
"........................"27
+ "......3....b............"28
"........................"29
"........................"30
- "........................"31
- "..............xxxx......"32
- "........s.e............."33
- "....xxxxxxxxxtxxx--x...."34
+ "...............xxxx....."35
+ "..o......s.e............"36
+ ".......xxxxxxtxxx--xx..."37
".............w.........."38
- ".............w...--....."39
+ ".........2...w...--.1..."40
".............w.........."41
".........----x...--....."42
"....p...............e..."43
- "..ggggg....xxxxxxxxxxx.."44
+ "..xxxxx....xxxxxxxxxxx.."45
"........................"46
"........................"47
};49
const char *LEVEL_MAP_3 = {50
- "........................................"51
- "........................................"52
- "........................................"53
- "........................................"54
- "........................................"55
- "........................................"56
- "........................................"57
- "........................................"58
- "........................................"59
- "........................................"60
- "......e..................e...s.........."61
- "....ggggg...--...xxxxxxxxxxxxxxxxx......"62
- "........................................"63
- "............--.........................."64
- "....................e..................."65
- "............--...xxxxxxxxt-............."66
- ".........................w.............."67
- "............--...........w-............."68
- "..............e.......s..w..e..........."69
- "..........xxxxxxxxxxxxxxxxxxxxxxxt--x..."70
- ".................................w......"71
- ".................................w--...."72
- ".................................w......"73
- ".................................w--...."74
- "........................e........w......"75
- "....................xxtxxxtxx----x--...."76
- "....p.......e.........w...w............."77
- "..ggggg..-----...xxxxxxxxxxxxxxxxxxxxx.."78
- "........................................"79
- "........................................"80
+ "........................"81
+ "........................"82
+ "...b.....1....e...k....."83
+ "............-txx-......."84
+ ".............w.........."85
+ "............-w..-......."86
+ "........s....w.........."87
+ "..x---xxxxxxxtxxx--xx..."88
+ "....e........w....e....."89
+ "...---....2..w--txxx...."90
+ "....3........w..w......."91
+ "........-----w--x......."92
+ "....p.......ew.....s...."93
+ "..xxxx....xxxxxxxxxxxx.."94
+ "........................"95
+ "........................"96
};98
+// const char *LEVEL_MAP_3 = {99
+// "........................................"100
+// "........................................"101
+// "........................................"102
+// "........................................"103
+// "........................................"104
+// "........................................"105
+// "........................................"106
+// "........................................"107
+// "........................................"108
+// "........................................"109
+// "......e..................e...s.........."110
+// "....xxxxx...--...xxxxxxxxxxxxxxxxx......"111
+// "........................................"112
+// "............--.........................."113
+// "....................e..................."114
+// "............--...xxxxxxxxt-............."115
+// ".........................w.............."116
+// "............--...........w-............."117
+// "..............e.......s..w..e..........."118
+// "..........xxxxxxxxxxxxxxxxxxxxxxxt--x..."119
+// ".................................w......"120
+// ".................................w--...."121
+// ".................................w......"122
+// ".................................w--...."123
+// "........................e........w......"124
+// "....................xxtxxxtxx----x--...."125
+// "....p.......e.........w...w............."126
+// "..xxxxx..-----...xxxxxxxxxxxxxxxxxxxxx.."127
+// "........................................"128
+// "........................................"129
+// };130
+131
void level_generate(game_t *game, const char *map, int width, int height) {132
game->player = NULL;133
game->tiles = malloc(sizeof(tile_t) * width * height);134
@@ -118,6 +137,24 @@ void level_generate(game_t *game, const char *map, int width, int height) {135
case 'n':136
tile->type = TILE_SAND;137
break;138
+ case 'k':139
+ tile->type = TILE_BG_CHANDELIER;140
+ break;141
+ case 'o':142
+ tile->type = TILE_BG_WINDOW;143
+ break;144
+ case 'b':145
+ tile->type = TILE_BG_BANNER;146
+ break;147
+ case '1':148
+ tile->type = TILE_BG_BRICK_1;149
+ break;150
+ case '2':151
+ tile->type = TILE_BG_BRICK_2;152
+ break;153
+ case '3':154
+ tile->type = TILE_BG_BRICK_3;155
+ break;156
default:157
break;158
}159
@@ -182,9 +219,12 @@ void level_load(game_t *game, level_e type) {160
break;161
}162
case LEVEL_3: {163
- level_generate(game, LEVEL_MAP_3, 40, 30);164
- level->width = 40;165
- level->height = 30;166
+ level_generate(game, LEVEL_MAP_3, 24, 16);167
+ level->width = 24;168
+ level->height = 16;169
+ // level_generate(game, LEVEL_MAP_3, 40, 30);170
+ // level->width = 40;171
+ // level->height = 30;172
break;173
}174
}
diff --git a/src/tile.c b/src/tile.c
index b0aa979..b11ea08 100644
--- a/src/tile.c
+++ b/src/tile.c
1
@@ -54,6 +54,30 @@ void tile_draw(tile_t *tile, game_t *game) {2
DrawTextureRec(game->assets.tiles, texture_rect(6, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);3
break;4
}5
+ case TILE_BG_CHANDELIER: {6
+ DrawTextureRec(game->assets.background, texture_rect_v(3, 5, 4, 3, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);7
+ break;8
+ }9
+ case TILE_BG_WINDOW: {10
+ DrawTextureRec(game->assets.background, texture_rect_v(8, 0, 4, 6, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);11
+ break;12
+ }13
+ case TILE_BG_BANNER: {14
+ DrawTextureRec(game->assets.background, texture_rect_v(3, 0, 3, 4, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);15
+ break;16
+ }17
+ case TILE_BG_BRICK_1: {18
+ DrawTextureRec(game->assets.background, texture_rect_v(0, 0, 2, 3, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);19
+ break;20
+ }21
+ case TILE_BG_BRICK_2: {22
+ DrawTextureRec(game->assets.background, texture_rect_v(0, 4, 2, 1, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);23
+ break;24
+ }25
+ case TILE_BG_BRICK_3: {26
+ DrawTextureRec(game->assets.background, texture_rect_v(0, 6, 2, 2, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);27
+ break;28
+ }29
}30
}
diff --git a/src/util.c b/src/util.c
index 81a9aac..b8deb3e 100644
--- a/src/util.c
+++ b/src/util.c
1
@@ -66,6 +66,10 @@ Rectangle texture_rect(int x, int y, int width, int height) {2
return (Rectangle) { x * width, y * height, width, height };3
}5
+Rectangle texture_rect_v(int x, int y, int width, int height, int size_x, int size_y) {6
+ return (Rectangle) { x * size_x, y * size_y, width * size_x, height * size_y };7
+}8
+10
void text_draw(pos_t pos, char *text, text_alignment_e alignment, game_t *game) {11
pos_t text_pos = pos;