From 4cfd9c6b96035ca7ccf6444e911b2a908d8500eb Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Tue, 23 Feb 2021 15:06:18 +0300 Subject: . --- data/anim.bmp | Bin 0 -> 22666 bytes data/boss.bmp | Bin 0 -> 22666 bytes data/map | 10 +++--- data/rooms/0 | 15 ++++++++ data/rooms/01 | 16 --------- data/rooms/02 | 16 --------- data/rooms/03 | 16 --------- data/rooms/04 | 16 --------- data/rooms/05 | 16 --------- data/rooms/06 | 16 --------- data/rooms/07 | 16 --------- data/rooms/08 | 16 --------- data/rooms/09 | 16 --------- data/rooms/1 | 16 +++++++++ data/rooms/10 | 16 --------- data/rooms/2 | 16 +++++++++ data/rooms/3 | 16 +++++++++ data/rooms/4 | 16 +++++++++ data/rooms/5 | 16 +++++++++ data/rooms/6 | 16 +++++++++ data/rooms/7 | 16 +++++++++ data/rooms/8 | 16 +++++++++ data/rooms/9 | 16 +++++++++ data/textures.bmp | Bin 22666 -> 0 bytes data/tiles.bmp | Bin 0 -> 16522 bytes src/main.c | 2 +- src/room.c | 100 ++++++++++++++++-------------------------------------- src/room.h | 10 ++++-- src/texture.c | 2 +- 29 files changed, 202 insertions(+), 241 deletions(-) create mode 100644 data/anim.bmp create mode 100644 data/boss.bmp create mode 100644 data/rooms/0 delete mode 100644 data/rooms/01 delete mode 100644 data/rooms/02 delete mode 100644 data/rooms/03 delete mode 100644 data/rooms/04 delete mode 100644 data/rooms/05 delete mode 100644 data/rooms/06 delete mode 100644 data/rooms/07 delete mode 100644 data/rooms/08 delete mode 100644 data/rooms/09 create mode 100644 data/rooms/1 delete mode 100644 data/rooms/10 create mode 100644 data/rooms/2 create mode 100644 data/rooms/3 create mode 100644 data/rooms/4 create mode 100644 data/rooms/5 create mode 100644 data/rooms/6 create mode 100644 data/rooms/7 create mode 100644 data/rooms/8 create mode 100644 data/rooms/9 delete mode 100644 data/textures.bmp create mode 100644 data/tiles.bmp diff --git a/data/anim.bmp b/data/anim.bmp new file mode 100644 index 0000000..a59ced7 Binary files /dev/null and b/data/anim.bmp differ diff --git a/data/boss.bmp b/data/boss.bmp new file mode 100644 index 0000000..a59ced7 Binary files /dev/null and b/data/boss.bmp differ diff --git a/data/map b/data/map index 8d4473a..048494e 100644 --- a/data/map +++ b/data/map @@ -1,5 +1,5 @@ -01 = 02 = 03 . 07 = 08 -. . | . . . | . . -. . 04 = 05 = 06 = 09 -. . . . . . . . | -. . . . . . . . 10 +0 = 1 = 2 . 6 = 7 +. . | . . . | . . +. . 3 = 4 = 5 = 8 +. . . . . . . . | +. . . . . . . . 9 diff --git a/data/rooms/0 b/data/rooms/0 new file mode 100644 index 0000000..a4bdbb3 --- /dev/null +++ b/data/rooms/0 @@ -0,0 +1,15 @@ +#0#4#4#4#4#4#4#4#4#4#4#4#4#4#4#4#4#4#1 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#7. . . . . . . . . . . . . . . . . #5 +#3#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#2 diff --git a/data/rooms/01 b/data/rooms/01 deleted file mode 100644 index 1ea08e7..0000000 --- a/data/rooms/01 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/02 b/data/rooms/02 deleted file mode 100644 index 18739f6..0000000 --- a/data/rooms/02 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . X -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/03 b/data/rooms/03 deleted file mode 100644 index d6185ff..0000000 --- a/data/rooms/03 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/04 b/data/rooms/04 deleted file mode 100644 index e0d902a..0000000 --- a/data/rooms/04 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # X # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . X -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/05 b/data/rooms/05 deleted file mode 100644 index a3f2532..0000000 --- a/data/rooms/05 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . X -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/06 b/data/rooms/06 deleted file mode 100644 index d72c22e..0000000 --- a/data/rooms/06 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # X # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . X -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/07 b/data/rooms/07 deleted file mode 100644 index 0407287..0000000 --- a/data/rooms/07 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . X -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/08 b/data/rooms/08 deleted file mode 100644 index d6185ff..0000000 --- a/data/rooms/08 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/09 b/data/rooms/09 deleted file mode 100644 index e689452..0000000 --- a/data/rooms/09 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # # # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -X . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/1 b/data/rooms/1 new file mode 100644 index 0000000..18739f6 --- /dev/null +++ b/data/rooms/1 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . X +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/10 b/data/rooms/10 deleted file mode 100644 index 1d0cfe4..0000000 --- a/data/rooms/10 +++ /dev/null @@ -1,16 +0,0 @@ -zelda -# # # # # # # # # X # # # # # # # # # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . Q -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# . . . . . . . . . . . . . . . . . # -# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/2 b/data/rooms/2 new file mode 100644 index 0000000..d6185ff --- /dev/null +++ b/data/rooms/2 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/3 b/data/rooms/3 new file mode 100644 index 0000000..e0d902a --- /dev/null +++ b/data/rooms/3 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # X # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . X +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/4 b/data/rooms/4 new file mode 100644 index 0000000..a3f2532 --- /dev/null +++ b/data/rooms/4 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . X +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/5 b/data/rooms/5 new file mode 100644 index 0000000..d72c22e --- /dev/null +++ b/data/rooms/5 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # X # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . X +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/6 b/data/rooms/6 new file mode 100644 index 0000000..0407287 --- /dev/null +++ b/data/rooms/6 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . X +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/7 b/data/rooms/7 new file mode 100644 index 0000000..d6185ff --- /dev/null +++ b/data/rooms/7 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/rooms/8 b/data/rooms/8 new file mode 100644 index 0000000..e689452 --- /dev/null +++ b/data/rooms/8 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # # # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +X . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # X # # # # # # # # # diff --git a/data/rooms/9 b/data/rooms/9 new file mode 100644 index 0000000..1d0cfe4 --- /dev/null +++ b/data/rooms/9 @@ -0,0 +1,16 @@ +zelda +# # # # # # # # # X # # # # # # # # # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . Q +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# . . . . . . . . . . . . . . . . . # +# # # # # # # # # # # # # # # # # # # diff --git a/data/textures.bmp b/data/textures.bmp deleted file mode 100644 index a59ced7..0000000 Binary files a/data/textures.bmp and /dev/null differ diff --git a/data/tiles.bmp b/data/tiles.bmp new file mode 100644 index 0000000..1b40620 Binary files /dev/null and b/data/tiles.bmp differ diff --git a/src/main.c b/src/main.c index 2bdf6e3..44f4a43 100644 --- a/src/main.c +++ b/src/main.c @@ -12,7 +12,7 @@ int main(int argc, char **argv) SDL_Renderer *rdr = SDL_CreateRenderer(wdw, -1, SDL_RENDERER_ACCELERATED); SDL_Texture *txr = tt_texture_load(rdr); - tt_room *room = tt_room_load(1); + tt_room *room = tt_room_load('0'); SDL_SetRenderDrawColor(rdr, 215, 174, 0, 255); diff --git a/src/room.c b/src/room.c index 389793c..3d8d6c0 100644 --- a/src/room.c +++ b/src/room.c @@ -4,94 +4,52 @@ #include "texture.h" -#define ROOM_W 19 -#define ROOM_H 15 - - -static char *readline(FILE *f) +static SDL_Rect *rect(int x, int y, int w, int h) { - int len = 0; - char *res = malloc(1); - int c = fgetc(f); - while (c != EOF && c != '\n') { - res = realloc(res, len + 2); - res[len++] = c; - c = fgetc(f); - } - res[len] = 0; + SDL_Rect *res = malloc(sizeof(*res)); + res->x = x; + res->y = y; + res->w = w; + res->h = h; return res; } -static char skipspaces(FILE *f) -{ - int c = fgetc(f); - while (c == ' ' || c == '\n' || c == '\t') c = fgetc(f); - return c == EOF ? 0 : c; -} - -tt_room *tt_room_load(int num) +tt_room *tt_room_load(char c) { tt_room *res = malloc(sizeof(*res)); - char path[] = "data/rooms/00"; - path[11] = '0' + num / 10; - path[12] = '0' + num % 10; + char path[] = "data/rooms/0"; + path[11] = c; FILE *f = fopen(path, "r"); - char *type = readline(f); - free(type); int i, j; - for (i = 0; i != ROOM_H; ++i) { - for (j = 0; j != ROOM_W; ++j) { - char c = skipspaces(f); - if (c == '.') { - res->tiles[i][j] = &tt_texture_floor; - res->bodies[i][j] = 0; - } else if (c == '#') { - if (i == 0 && j == 0) { - res->tiles[i][j] = &tt_texture_corner_lu; - } else if (i == 0 && j == ROOM_W - 1) { - res->tiles[i][j] = &tt_texture_corner_ru; - } else if (i == ROOM_H - 1 && j == 0) { - res->tiles[i][j] = &tt_texture_corner_ld; - } else if (i == ROOM_H - 1 && j == ROOM_W - 1) { - res->tiles[i][j] = &tt_texture_corner_rd; - } else if (i == 0) { - res->tiles[i][j] = &tt_texture_wall_u; - } else if (i == ROOM_H - 1) { - res->tiles[i][j] = &tt_texture_wall_d; - } else if (j == 0) { - res->tiles[i][j] = &tt_texture_wall_l; - } else if (j == ROOM_W - 1) { - res->tiles[i][j] = &tt_texture_wall_r; - } else { - fclose(f); - free(res); - return 0; - } - res->bodies[i][j] = 0; -/* } else if (c == '@') { - res->tiles[i][j] = tt_tile_floor; - res->bodies[i][j] = tt_player_spawn(); - if (!res->bodies[i][j]) { - flcose(f); - free(res); - return 0; - } */ - } else { - fclose(f); - free(res); - return 0; - } + for (i = 0; i != TT_ROOM_H; ++i) { + for (j = 0; j != TT_ROOM_W; ++j) { + int type = fgetc(f); + res->tiletypes[i][j] = type; + res->bodies[i][j] = 0; + int id = fgetc(f); + if (id == ' ') id = '0'; + if (id < '0' || '9' < id) goto error; + id = (id - '0') * 16; + if (type == '.') res->tiles[i][j] = rect(id, 16, 16, 16); + else if (type == '#') res->tiles[i][j] = rect(id, 0, 16, 16); + else goto error; } + fgetc(f); } + fclose(f); return res; +error: + fclose(f); + free(res); + return 0; } void tt_room_draw(SDL_Renderer *rdr, SDL_Texture *txr, tt_room *room) { int i, j; - for (i = 0; i != ROOM_H; ++i) { - for (j = 0; j != ROOM_W; ++j) { + for (i = 0; i != TT_ROOM_H; ++i) { + for (j = 0; j != TT_ROOM_W; ++j) { const SDL_Rect *src = room->tiles[i][j]; if (src) { SDL_Rect dst = { 30 + 32 * j, 30 + 32 * i, 32, 32 }; diff --git a/src/room.h b/src/room.h index 40a6974..9d6661a 100644 --- a/src/room.h +++ b/src/room.h @@ -5,13 +5,17 @@ #include +#define TT_ROOM_W 19 +#define TT_ROOM_H 15 + typedef struct tt_room { - const SDL_Rect *tiles[15][19]; - void *bodies[15][19]; + char tiletypes[TT_ROOM_H][TT_ROOM_W]; + const SDL_Rect *tiles[TT_ROOM_H][TT_ROOM_W]; + void *bodies[TT_ROOM_H][TT_ROOM_W]; } tt_room; -tt_room *tt_room_load(int num); +tt_room *tt_room_load(char c); void tt_room_draw(SDL_Renderer *rdr, SDL_Texture *txr, tt_room *room); diff --git a/src/texture.c b/src/texture.c index 3606274..e046f6f 100644 --- a/src/texture.c +++ b/src/texture.c @@ -15,7 +15,7 @@ const SDL_Rect tt_texture_player = { 0, 0, 0, 0 }; SDL_Texture *tt_texture_load(SDL_Renderer *rdr) { - SDL_Surface *surf = SDL_LoadBMP("data/textures.bmp"); + SDL_Surface *surf = SDL_LoadBMP("data/tiles.bmp"); SDL_Texture *res = SDL_CreateTextureFromSurface(rdr, surf); SDL_FreeSurface(surf); return res; -- cgit v1.2.3