so://phie

freezo

A retro platform game
git clone git://soophie.de/freezo

feat: Converted background to tiles & adjusted levels


commit: e72356172f35fd8c38100cf2e28121943057740a
parent: d4baeee3307563972cd5cfaea0af4f16ddace4e6
author: Sophie <info@soophie.de>
time: 2024-12-16 11:58

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;

12

13 struct Tile {

14

15

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);

2

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);

6

7 typedef enum {

8 TEXT_ALIGNMENT_LEFT,

9

10

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++) {

9

10

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 };

48

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 };

97

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 }

175

176

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 }

31

32

33

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 }

4

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+

9

10 void text_draw(pos_t pos, char *text, text_alignment_e alignment, game_t *game) {

11 pos_t text_pos = pos;

12

13