mirror of
https://codeberg.org/ACME-Corporation/cub3d.git
synced 2025-12-06 01:48:08 +01:00
Compare commits
27 commits
fcb08f6447
...
8445f240a2
| Author | SHA1 | Date | |
|---|---|---|---|
| 8445f240a2 | |||
|
|
2fc8cf21a1 | ||
| 92770f44f8 | |||
|
|
4568124d3f | ||
|
|
5c7cc77419 | ||
|
|
ef7a6c27a4 | ||
|
|
541bc9ccf8 | ||
|
|
0ac6ee9394 | ||
|
|
3511b6aaf8 | ||
|
|
01f0ac21df | ||
|
|
ee329812fd | ||
|
|
0d6cc4063a | ||
|
|
4a70e44697 | ||
|
|
94075506f6 | ||
|
|
412dc89336 | ||
|
|
db66decbf8 | ||
|
|
dafe94804e | ||
|
|
00e8a73d14 | ||
|
|
09ff569a31 | ||
|
|
04705fe9e5 | ||
|
|
41437ec215 | ||
|
|
2eb1d635d4 | ||
|
|
9988b09e91 | ||
|
|
f1697a6c73 | ||
|
|
3230a60c9f | ||
|
|
aae5e42b13 | ||
|
|
b7d56363ab |
25 changed files with 580 additions and 89 deletions
5
Makefile
5
Makefile
|
|
@ -4,13 +4,14 @@ CC = cc
|
|||
# https://github.com/google/sanitizers/wiki/AddressSanitizer
|
||||
SANITIZERS = -fsanitize=address,undefined -fno-omit-frame-pointer
|
||||
ifeq ($(CFLAGS),)
|
||||
CFLAGS = -Wall -Wextra -Werror -g -O3 -ffast-math
|
||||
CFLAGS = -Wall -Wextra -Werror -g -O2
|
||||
endif
|
||||
IFLAGS = -I./mlx -I./libft
|
||||
|
||||
SOURCEFILES = \
|
||||
src/utils/inits.c \
|
||||
src/utils/time.c \
|
||||
src/utils/destroy_utils.c \
|
||||
src/draw/draw_map.c \
|
||||
src/draw/drawutils.c \
|
||||
src/main.c \
|
||||
|
|
@ -29,6 +30,8 @@ SOURCEFILES = \
|
|||
src/raycast/ray.c \
|
||||
src/raycast/walls.c \
|
||||
src/renderer/render.c \
|
||||
src/sprites/create_sprite.c \
|
||||
src/sprites/move_sprites.c \
|
||||
src/sprites/sort_sprites.c \
|
||||
src/sprites/sprite_caster.c \
|
||||
|
||||
|
|
|
|||
78
ressources/doubletap.xpm
Normal file
78
ressources/doubletap.xpm
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/* XPM */
|
||||
static char * doubletap_xpm[] = {
|
||||
"64 64 11 1",
|
||||
" c #FF00DC",
|
||||
". c #BFC7D5",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #D66B1B",
|
||||
"# c #F28A3C",
|
||||
"$ c #864B1C",
|
||||
"% c #FDE9D6",
|
||||
"& c #F8CBAA",
|
||||
"* c #F3B98B",
|
||||
"= c #F0AA75",
|
||||
"- c #EE9A5C",
|
||||
" ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ++@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@@###@@@@++ ",
|
||||
" ++@@@@@@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@++ ",
|
||||
" ++@@++++@@@@@###@@@@@###@@@@@###@@@@@###@@@@++ ",
|
||||
" ++@@##+##@@@#####@@@#####@@@#####@@@#####@@@++ ",
|
||||
" ++###@+###@##@@###@##@@###@##@@###@##@@@##@#++ ",
|
||||
" ++#+@@+@#####@@@#####@@@#####@@@#####@@@####++ ",
|
||||
" ++#@++@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@@@##++ ",
|
||||
" ++@@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@++ ",
|
||||
" ++##+@+@@###@@@@@###@@@$###$@@@@@###@@@@@###++ ",
|
||||
" ++#+@@++#####@@@#####@$#####$@@@#####@@@####++ ",
|
||||
" ++@+##++#@@###@##@@########$$#@##@@###@###@@++ ",
|
||||
" ++@+##++#@@@#####@@@$#####$$$$###@@@#####@@@++ ",
|
||||
" ++@@++#@@@@@@##@@@@$######$$$$#@@@@@@###@@@@++ ",
|
||||
" ++@@@@@@@@@@@@#@@@@$######$$$@#@@@@@@@#@@@@@++ ",
|
||||
" ++@++++++@@@@##@@@@########$$##@@@@@@###@@@@++ ",
|
||||
" ++@@+#+##@@@#$$$$@$########$#$$$$@@@#####@@@++ ",
|
||||
" ++@#++###@@#$$$$$$$########$$$$$$$@###@###@@++ ",
|
||||
" ++##+@++###$$$$$$$##########$$$$$$$##@@@####++ ",
|
||||
" ++##+@++@##$$$$$$$##########$$$$$$$#@@@@@###++ ",
|
||||
" ++@@@@@@@@$$$$$$$############$$$$$$$@@@@@@#@++ ",
|
||||
" ++#+++++@#$$$$@$$############$$@$$$$@@@@@@##++ ",
|
||||
" ++##+@@@##$$$@@$$####%%%%####$$@#$$$#@@@####++ ",
|
||||
" ++##+++##$#$#@@$###%%%%%%%%###$###$#$@@@##@#++ ",
|
||||
" ++@@+####$########$$%%%%%%$$########$####@@@++ ",
|
||||
" ++@@+#++@@$#$####$$$$%%%%$$$$###@$#$@###@@@@++ ",
|
||||
" ++@@@@@@@@@@@@###&$$$$%%$$$$%##@@@@@@@#@@@@@++ ",
|
||||
" ++@++++@@@@@@####&%$$%%%%$$%%##@@@@@@###@@@@++ ",
|
||||
" ++@@+##+#@@@###$&&%%%#%%#%%%%%$##@@@##++#+@@++ ",
|
||||
" ++@#+#++#@@###@&&#%%%%##%%%%#%%##@@###@+#+@@++ ",
|
||||
" ++##+@+@#####@@&&############%%@#####@++#+##++ ",
|
||||
" ++##+@++@###@@@$&%##########%%$@@###@@+@@+##++ ",
|
||||
" ++@@@@@@@@#@@@@@@&%##%%%%##%%@@@@@#@@@@++++@++ ",
|
||||
" ++#@@@@@@##@@@@@@&&########%%@@@@##@@@@@@@##++ ",
|
||||
" ++##@@@@#####@@$$&&&%####%%%&$$@#####@++#+##++ ",
|
||||
" ++###@@###@##$$***&%%%%%%%%&***$$#@##@@@#+@#++ ",
|
||||
" ++@@#####@@$***=====&&&&&&==&==**=$@###+++@@++ ",
|
||||
" ++@@####@@$***===&&=**=&&*====&==**$@###@+@@++ ",
|
||||
" ++@@@@@@@$**====&=***===&=**====&==*$@+++++@++ ",
|
||||
" ++@@@##@@**====&=***=======**======**###@@@@++ ",
|
||||
" ++@@#####*---====**=-----==**====---=#++#+@@++ ",
|
||||
" ++@######*----&=***-------=***==----=#++#+@@++ ",
|
||||
" ++##@@@@#$---$@***=---$$---=***@$--$#@@@++##++ ",
|
||||
" ++##@@@@@##$$@@***---$@@$--=***@@$$$$@@+@+##++ ",
|
||||
" ++@@@@@@@##$@@@***---@@@@---***@@@$$$++++++@++ ",
|
||||
" ++#@@@@@@$$@@@@***--$@@@@$--***@@##$@@@@@@##++ ",
|
||||
" ++##@@@@@###@@@**--$@@@@@#$--**@@###@@@@++##++ ",
|
||||
" ++###@@######@@$$-$##@@####$$########@++##+#++ ",
|
||||
" ++########@###@$$$@###@###@#$#####@###++##+#++ ",
|
||||
" ++@@#####@@@###$$@@@#####@@@#$$##@@@##++#@+@++ ",
|
||||
" ++@@####@@@@@###@@@@@###@@@@@###@@@@@##+@+@@++ ",
|
||||
" ++@@@@@@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@++ ",
|
||||
" ++@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@@###++@@++ ",
|
||||
" ++@@#####@@@#####@@@#####@@@#####@@@###+#@+@++ ",
|
||||
" ++@######@@###@##@@###@##@@###@##@@###@+##@@++ ",
|
||||
" ++##@@@@#####@@@#####@@@#####@@@#####@@+####++ ",
|
||||
" ++##@@@@@###@@@@@###@@@@@###@@@@@###@@++++##++ ",
|
||||
" ++@@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@++ ",
|
||||
" ++#@@@@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@@@##++ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" "};
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
NO ./path_to_the_north_texture
|
||||
SO ./path_to_the_south_texture
|
||||
WE ./path_to_the_west_texture
|
||||
EA ./path_to_the_east_texture
|
||||
NO ressources/north.xpm
|
||||
SO ressources/south.xpm
|
||||
WE ressources/west.xpm
|
||||
EA ressources/east.xpm
|
||||
|
||||
F 220,100,0
|
||||
C 225,30,0
|
||||
|
||||
1111111111111111111111111
|
||||
1000000000110000000000001
|
||||
1011000001110000001000001
|
||||
1001000000000000010000001
|
||||
111111111011000001110000100000001
|
||||
1011000001110000000000001
|
||||
10D1000000000000000000001
|
||||
111111111011000001110M00000000001
|
||||
100000000011000001110111110111111
|
||||
11110111111111011100000010001
|
||||
11110111111111011101010010001
|
||||
11000000110101011100000010001
|
||||
10000000000000001100000010001
|
||||
100000000000000011J0000010001
|
||||
10000000000000001101010010001
|
||||
11000001110101011111011110N0111
|
||||
11Q00001110101011111011110N0111
|
||||
11110111 1110101 101111010001
|
||||
11111111 1111111 111111111111
|
||||
|
|
|
|||
78
ressources/juggernog.xpm
Normal file
78
ressources/juggernog.xpm
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/* XPM */
|
||||
static char * juggernog_xpm[] = {
|
||||
"64 64 11 1",
|
||||
" c #FF00DC",
|
||||
". c #BFC7D5",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #EC2D33",
|
||||
"# c #FF6368",
|
||||
"$ c #A61A1F",
|
||||
"% c #FDE8E8",
|
||||
"& c #FDD3D5",
|
||||
"* c #FDBDBF",
|
||||
"= c #FDA0A5",
|
||||
"- c #FD8086",
|
||||
" ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ++@@@@####@@@@@###@@@@@###@@@@@###@@@@@###@@++ ",
|
||||
" ++@@@@#####@@@#####@@@#####@@@#####@@@#####@++ ",
|
||||
" ++##++++####@#######@#######@#######@#######++ ",
|
||||
" ++@##@+##@@##@@##@@##@@##@@##@@##@@##@@@##@@++ ",
|
||||
" ++@@@@+@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@++ ",
|
||||
" ++@+@@+@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@++ ",
|
||||
" ++@#++@@@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@@@++ ",
|
||||
" ++####@@@@@###@@@@@###@@@@@###@@@@@###@@@@@#++ ",
|
||||
" ++##+#+@@######@@######$###$###@@#######@@##++ ",
|
||||
" ++#+##++@#######@#####$#####$###@#######@###++ ",
|
||||
" ++@+@@++#@@@#@@@#@@@#######$$@@@#@@@#@@@#@@@++ ",
|
||||
" ++@+@@++#@@@@@@@#@@@$#####$$$$@@#@@@@@@@#@@@++ ",
|
||||
" ++@@++@@#@@@@@@@#@@$######$$$$@@#@@@@@@@#@@@++ ",
|
||||
" ++@@@@@##@@@@@@##@@$######$$$@@##@@@@@@@##@@++ ",
|
||||
" ++@++++++#@@@@@###@########$$@@###@@@@@###@@++ ",
|
||||
" ++#@+#+####@@$$$$#$########$@$$$$##@@#######++ ",
|
||||
" ++##++######$$$$$$$########$$$$$$$##@#######++ ",
|
||||
" ++@@+@++#@@$$$$$$$##########$$$$$$$@#@@@#@@@++ ",
|
||||
" ++@@+@++@@@$$$$$$$##########$$$$$$$@#@@@@@@@++ ",
|
||||
" ++@@@@@@@@$$$$$$$############$$$$$$$#@@@@@@@++ ",
|
||||
" ++@+++++@@$$$$@$$############$$@$$$$#@@@@@@@++ ",
|
||||
" ++##+#@@@@$$$##$$####%%%%####$$@@$$$###@@@##++ ",
|
||||
" ++##+++@@$#$###$###%%%%%%%%###$@@#$#$###@@##++ ",
|
||||
" ++@#+@@##$###@@###$$%%%%%%$$########$@@@##@@++ ",
|
||||
" ++@@+@++#@$#$@@##$$$$%%%%$$$$##@#$#$#@@@#@@@++ ",
|
||||
" ++@@@@@@#@@@@@@##&$$$$%%$$$$%##@#@@@@@@@#@@@++ ",
|
||||
" ++@++++@#@@@@@@##&%$$%%%%$$%%##@#@@@@@@@#@@@++ ",
|
||||
" ++@@+@#+##@@@@@$&&%%%#%%#%%%%%$###@@@@++#+@@++ ",
|
||||
" ++@@+@++###@@@#&&#%%%%##%%%%#%%####@@@#+#+#@++ ",
|
||||
" ++##+#+#####@##&&############%%#####@#++#+##++ ",
|
||||
" ++@#+@++#@@##@@$&%##########%%$##@@##@+@#+@@++ ",
|
||||
" ++@@@@@@@@@@#@@@@&%##%%%%##%%@@@@@@@#@@++++@++ ",
|
||||
" ++@@@@@@@@@@#@@@@&&########%%@@@@@@@#@@@@@@@++ ",
|
||||
" ++@##@@@@@@##@@$$&&&%####%%%&$$@@@@##@++@+@@++ ",
|
||||
" ++####@@@@@##$$***&%%%%%%%%&***$$@@###@@@+@#++ ",
|
||||
" ++#####@@##$***=====&&&&&&==&==**=$####+++##++ ",
|
||||
" ++######@#$***===&&=**=&&*====&==**$####@+##++ ",
|
||||
" ++@@@@@@#$**====&=***===&=**====&==*$@+++++@++ ",
|
||||
" ++@@@@@@#**====&=***=======**======**@@@#@@@++ ",
|
||||
" ++@@@@@@#*---====**=-----==**====---=@++#+@@++ ",
|
||||
" ++@@@@@##*----&=***-------=***==----=@++#+@@++ ",
|
||||
" ++@@@@###$---$#***=---$$---=***#$--$@@##++#@++ ",
|
||||
" ++#@@######$$##***---$##$--=***##$$$$##+#+##++ ",
|
||||
" ++@##@@####$#@@***---@@##---***##@$$$++++++@++ ",
|
||||
" ++@@@@@@#$$@#@@***--$@@@#$--***@#@@$#@@@#@@@++ ",
|
||||
" ++@@@@@@@@@@#@@**--$#@@@@@$--**@@@@@#@@@++@@++ ",
|
||||
" ++@@@@@@@@@@#@@$$-$@#@@@@@@$$##@@@@@#@++@@+@++ ",
|
||||
" ++@##@@@@@@##@@$$$@##@@@@@@#$##@@@@##@++@@+@++ ",
|
||||
" ++####@@@@#####$$@#####@@@###$$@@@####++@@+#++ ",
|
||||
" ++#####@@######@@######@@######@@######+@+##++ ",
|
||||
" ++@##@@##@@##@@##@@##@@##@@##@@##@@##@@@##@@++ ",
|
||||
" ++@@@@@@#@@@#@@@#@@@#@@@#@@@#@@@#@@@#@@@++@@++ ",
|
||||
" ++@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@+#@+@++ ",
|
||||
" ++@@@@@@#@@@@@@@#@@@@@@@#@@@@@@@#@@@@@@+#@@@++ ",
|
||||
" ++@@@@####@@@@@###@@@@@###@@@@@###@@@@@+##@@++ ",
|
||||
" ++@@@@#####@@@#####@@@#####@@@#####@@@++++#@++ ",
|
||||
" ++##########@#######@#######@#######@#######++ ",
|
||||
" ++@##@@##@@##@@##@@##@@##@@##@@##@@##@@@##@@++ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" "};
|
||||
78
ressources/revive.xpm
Normal file
78
ressources/revive.xpm
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/* XPM */
|
||||
static char * revive_xpm[] = {
|
||||
"64 64 11 1",
|
||||
" c #FF00DC",
|
||||
". c #BFC7D5",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #7A73BB",
|
||||
"# c #5E579C",
|
||||
"$ c #403995",
|
||||
"% c #F9F7FF",
|
||||
"& c #DDDAFB",
|
||||
"* c #A9A6C9",
|
||||
"= c #8D88BA",
|
||||
"- c #5B54A0",
|
||||
" ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ++@@###@@@@@###@@@@@###@@@@@###@@@@@####@@@@++ ",
|
||||
" ++@#####@@@#####@@@#####@@@#####@@@@####@@@@++ ",
|
||||
" ++##++++#@#######@#######@#######@##########++ ",
|
||||
" ++####+##@#######@#######@#######@##########++ ",
|
||||
" ++@@##+@@@@@@##@@@@@@##@@@@@@##@@@@@@##@@@@@++ ",
|
||||
" ++@+##+@@#@@###@@#@@###@@#@@###@@#@@####@@@@++ ",
|
||||
" ++#@++@@###@@@@@###@@@@@###@@@@@####@@@@####++ ",
|
||||
" ++##@@@#####@@@#####@@@#####@@@#####@@@@####++ ",
|
||||
" ++##+@+######@#######@#$@@@$#@##############++ ",
|
||||
" ++#+#@++#####@#######@$@@@@@$@##############++ ",
|
||||
" ++@+@@++##@@@@@@@##@@@@@@@@$$@@@@##@@@@@@##@++ ",
|
||||
" ++#+@#++###@@#@@###@$@@@@@$$$$@@####@@@@####++ ",
|
||||
" ++@@++#@@@@@###@@@@$@@@@@@$$$$#@@@@@####@@@@++ ",
|
||||
" ++@#####@@@#####@@@$@@@@@@$$$###@@@@####@@@@++ ",
|
||||
" ++#+++++@@#######@@@@@@@@@@$$####@@######@@#++ ",
|
||||
" ++##+#+##@###$$$$@$@@@@@@@@$#$$$$@##########++ ",
|
||||
" ++##++##@@##$$$$$$$@@@@@@@@$$$$$$$@##@@##@@#++ ",
|
||||
" ++@@+#++@#@$$$$$$$@@@@@@@@@@$$$$$$$@####@@@@++ ",
|
||||
" ++@@+@++##$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@##@++ ",
|
||||
" ++##@@@###$$$$$$$@@@@@@@@@@@@$$$$$$$@@@@####++ ",
|
||||
" ++#+++++##$$$$@$$@@@@@@@@@@@@$$#$$$$#@@#####++ ",
|
||||
" ++##+@####$$$@#$$@@@@%%%%@@@@$$##$$$########++ ",
|
||||
" ++##+++#@$@$@@@$@@@%%%%%%%%@@@$##@$@$@@##@@#++ ",
|
||||
" ++#@+#@@#$@@@#@@@@$$%%%%%%$$@@@@#@@@$@@@####++ ",
|
||||
" ++@@+#++@@@@$##@@$$$$%%%%$$$$@@@@$@@@##@@@@@++ ",
|
||||
" ++@#####@@@####@@&$$$$%%$$$$%@@#@@@@####@@@@++ ",
|
||||
" ++#++++#@@#####@@&%$$%%%%$$%%@@##@@######@@#++ ",
|
||||
" ++##+##+#@#####$&&%%%@%%@%%%%%$##@####++#+##++ ",
|
||||
" ++##+#++@@####@&&@%%%%@@%%%%@%%##@@##@@+#+@#++ ",
|
||||
" ++@@+#+@@#@@###&&@@@@@@@@@@@@%%@@#@@##++@+@@++ ",
|
||||
" ++@@+@++##@@@@@$&%@@@@@@@@@@%%$@@##@@@+@@+#@++ ",
|
||||
" ++##@@@#####@@@##&%@@%%%%@@%%@@#####@@@++++#++ ",
|
||||
" ++##@@#######@@##&&@@@@@@@@%%@@######@@#####++ ",
|
||||
" ++###@#######@#$$&&&%@@@@%%%&$$#######++#+##++ ",
|
||||
" ++##@@##@####$$***&%%%%%%%%&***$$#@##@@##+@#++ ",
|
||||
" ++#@@#@@##$$***=====&&&&&&==&==**=$$@@@+++##++ ",
|
||||
" ++@@##@@@@****===&&=**=&&*====&==**=@##@@+@@++ ",
|
||||
" ++@#####@$**====&=***===&=**====&==*$#+++++@++ ",
|
||||
" ++######$**====&=***=======**=======*$###@@#++ ",
|
||||
" ++######$*---====**=-----==**====---=$++#+##++ ",
|
||||
" ++##@###$*----&=***-------=***==----=$++#+@#++ ",
|
||||
" ++@@###@@$---$#***=---$$---=***@$---####++@@++ ",
|
||||
" ++@@@@@@$@-$$@@***---$@@$--=***@@$$$$@@+@+#@++ ",
|
||||
" ++##@@@#$@@$@@@***---@@##---***###$$$@+++++#++ ",
|
||||
" ++##@@###$$##@@***--$@@##$--***####$#@@#####++ ",
|
||||
" ++###@#######@#**--$#@####$--**#########++##++ ",
|
||||
" ++##@@##@####@@$$-$##@@###@$$@@###@##@++#@+#++ ",
|
||||
" ++@@@@@@##@@@@@$$$#@@@@@@##@$@@@@##@@@++@#+@++ ",
|
||||
" ++@@##@@@@@@@##$$@@@@##@@@@@@$$@@@@@@#++@@+@++ ",
|
||||
" ++@@###@@@@@###@@@@@###@@@@@###@@@@@###+@+@@++ ",
|
||||
" ++######@@#######@@######@@######@@######@@#++ ",
|
||||
" ++#######@#######@#######@#######@######++##++ ",
|
||||
" ++##@###@@####@##@@###@##@@###@##@@##@@+#@+#++ ",
|
||||
" ++@@##@@@@@@@##@@@@@@##@@@@@@##@@@@@@##+@@@@++ ",
|
||||
" ++@@@@@@##@@@@@@@##@@@@@@##@@@@@@##@@@@+@##@++ ",
|
||||
" ++#@@@@@###@@@@@###@@@@@###@@@@@####@@++++##++ ",
|
||||
" ++##@@#######@@######@@######@@######@@#####++ ",
|
||||
" ++###@#######@#######@#######@##############++ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
" ..++++++++++++++++++++++++++++++++++++++++++.. ",
|
||||
" "};
|
||||
34
src/consts.h
34
src/consts.h
|
|
@ -6,32 +6,58 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:54:36 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/12 14:32:47 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/14 21:23:25 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef CONSTS_H
|
||||
# define CONSTS_H
|
||||
|
||||
// Window
|
||||
# define WIDTH 800
|
||||
# define HEIGHT 600
|
||||
|
||||
// Texture size
|
||||
# define SIZE 64
|
||||
# define TEXTURE_SIZE 64
|
||||
|
||||
// minimap handling
|
||||
# define MAP_SIZE 10
|
||||
# define PLAYER_SIZE 6
|
||||
# define RESSOURCE_DIR "ressources"
|
||||
|
||||
// movement handling
|
||||
# define MOVEMENT_SPEED 0.000005
|
||||
# define MOVEMENT_STEP 0.1
|
||||
# define ROTATION_SPEED 0.000002
|
||||
# define PLANE_VALUE 0.6
|
||||
# define TEXTURE_SIZE 64
|
||||
|
||||
// Sprite consts
|
||||
# define SPRITE_TRANPARENCY_COLOR 0xff00dc
|
||||
// 4 static ones, 3 perks, the box and 25 zombies at max
|
||||
# define MAX_SPRITES 30 // FIXME: Change to 30
|
||||
# define MAX_SPRITES 30
|
||||
# define JUGG_TEX "ressources/juggernog.xpm"
|
||||
# define REV_TEX "ressources/revive.xpm"
|
||||
# define DBLTAP_TEX "ressources/doubletap.xpm"
|
||||
# define MYSTERY_TEX "ressources/box.xpm"
|
||||
|
||||
# ifdef BONUS
|
||||
# define COMPILED_TEXT "Compiled with bonuses"
|
||||
# else
|
||||
# define COMPILED_TEXT " "
|
||||
# endif
|
||||
|
||||
// Error messages
|
||||
# define ENOCUB "Not a .cub file"
|
||||
# define EOPEN "Can't open file"
|
||||
# define EMALMAP "Map is malformed (invalid chars or missing walls)"
|
||||
# define ENOPLAYER "No player"
|
||||
# define EHOLES "Holes in map"
|
||||
# define ETRAILING "Trailing chars after map"
|
||||
# define EBADCHARCOLOR "invalid characters in color definition"
|
||||
# define EBADVALCOLOR "invalid value for colors"
|
||||
# define ETOOMANYCOLORS "too many colors"
|
||||
# define ENOTENOUGHCOLORS "Not enough colors"
|
||||
# define EDUPTEX "Duplicated texture directive"
|
||||
# define EMAPBFTEX "Map started before all the textures"
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:59:37 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/07 11:28:49 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/14 21:36:15 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -20,6 +20,9 @@
|
|||
# include "utils/keypresses.h"
|
||||
# include "consts.h"
|
||||
|
||||
// FIXME: Delete this line to let it compile for bonus part
|
||||
# define BONUS 1
|
||||
|
||||
// the 4 static sprites are some of the perks and the mystery box
|
||||
typedef struct s_cub3d_data
|
||||
{
|
||||
|
|
@ -37,6 +40,7 @@ typedef struct s_cub3d_data
|
|||
int delta;
|
||||
int last_tick;
|
||||
t_sprite **sprite_list;
|
||||
int sprite_counter;
|
||||
double zbuffer[WIDTH];
|
||||
int sprite_order[MAX_SPRITES];
|
||||
double sprite_distances[MAX_SPRITES];
|
||||
|
|
|
|||
17
src/main.c
17
src/main.c
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:14:30 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/12 14:23:27 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/18 13:23:26 by kcolin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -31,6 +31,7 @@
|
|||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include "utils/time.h"
|
||||
#include "sprites/move_sprites.h"
|
||||
|
||||
int game_loop(t_cub3d_data *data)
|
||||
{
|
||||
|
|
@ -41,6 +42,7 @@ int game_loop(t_cub3d_data *data)
|
|||
data->last_tick = get_milliseconds();
|
||||
reset_matrix(data);
|
||||
move_player(data);
|
||||
move_sprites(data);
|
||||
raycaster(data, &ray);
|
||||
sprite_caster(data);
|
||||
matrix_to_image(data);
|
||||
|
|
@ -64,19 +66,6 @@ int main(int argc, char **argv)
|
|||
if (argc < 2)
|
||||
return (ft_printf("Error: Missing cub3d file\n"), 1);
|
||||
init_cub3d_data(&data, argv);
|
||||
// FIXME: Delete this whole piece of code when we will init sprites from
|
||||
// map
|
||||
data.sprite_list = ft_calloc(sizeof(t_sprite *), 3);
|
||||
data.sprite_list[0] = ft_calloc(sizeof(t_sprite), 1);
|
||||
data.sprite_list[1] = ft_calloc(sizeof(t_sprite), 1);
|
||||
data.sprite_list[0]->x = data.map->startx + 1;
|
||||
data.sprite_list[0]->y = data.map->starty;
|
||||
data.sprite_list[0]->image = load_single_texture(&data,
|
||||
"ressources/box.xpm");
|
||||
data.sprite_list[1]->x = data.map->startx;
|
||||
data.sprite_list[1]->y = data.map->starty - 2;
|
||||
data.sprite_list[1]->image = load_single_texture(&data,
|
||||
"ressources/test_holed.xpm");
|
||||
mlx_hook(data.mlx_win, KeyPress, KeyPressMask, keypress_handler, &data);
|
||||
mlx_hook(data.mlx_win, KeyRelease, KeyReleaseMask,
|
||||
keyrelease_handler, &data);
|
||||
|
|
|
|||
|
|
@ -6,19 +6,24 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:18:13 by kcolin #+# #+# */
|
||||
/* Updated: 2025/07/17 14:47:34 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/12 16:18:08 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../libft/includes/libft.h"
|
||||
|
||||
// TODO: use a #define for allowedchars, to prevent needless repetition
|
||||
|
||||
#ifdef BONUS
|
||||
|
||||
/*
|
||||
* 10NSEW are from mandatory part
|
||||
* M - Mystery box
|
||||
* Q - Quick Revive perk
|
||||
* J - Juggernog perk
|
||||
* D - Double tap perk
|
||||
*/
|
||||
bool has_forbidden_characters(char *line)
|
||||
{
|
||||
static const char *allowedchars = " 10NSEWDdZzsM\n";
|
||||
static const char *allowedchars = " 10NSEWMQJD\n";
|
||||
size_t strsize;
|
||||
int i;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/06/06 17:54:42 by tchampio #+# #+# */
|
||||
/* Updated: 2025/07/29 14:43:32 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/12 13:43:42 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../libft/includes/libft.h"
|
||||
#include "../utils/colors.h"
|
||||
#include "../consts.h"
|
||||
#include "mapdata.h"
|
||||
#include "populate_map.h"
|
||||
#include "checkers.h"
|
||||
|
|
@ -61,10 +62,10 @@ bool check_cubfile(char *file, t_mapdata *map)
|
|||
int fd;
|
||||
|
||||
if (!check_filename(map, file))
|
||||
return (ft_strlcpy(map->error, "Not a .cub file", ERRLEN), false);
|
||||
return (ft_strlcpy(map->error, ENOCUB, ERRLEN), false);
|
||||
fd = open(file, O_RDONLY);
|
||||
if (fd < 0)
|
||||
return (ft_strlcpy(map->error, "Can't open file", ERRLEN), false);
|
||||
return (ft_strlcpy(map->error, EOPEN, ERRLEN), false);
|
||||
if (add_textures(fd, map) != 0)
|
||||
return (close(fd), false);
|
||||
if (map->error[0])
|
||||
|
|
@ -72,15 +73,13 @@ bool check_cubfile(char *file, t_mapdata *map)
|
|||
if (!populate_maps(map, fd))
|
||||
return (close(fd), false);
|
||||
if (!check_walls(map))
|
||||
return (close(fd), ft_strlcpy(map->error,
|
||||
"Map is malformed (invalid chars or missing walls)", ERRLEN),
|
||||
false);
|
||||
return (close(fd), ft_strlcpy(map->error, EMALMAP, ERRLEN), false);
|
||||
if (!check_bare_minimum(map))
|
||||
return (close(fd), ft_strlcpy(map->error, "No player", ERRLEN), false);
|
||||
return (close(fd), ft_strlcpy(map->error, ENOPLAYER, ERRLEN), false);
|
||||
map->isvalid = true;
|
||||
flood_fill(map, map->startx, map->starty);
|
||||
if (!map->isvalid)
|
||||
return (close(fd), ft_strlcpy(map->error, "Holes in map", ERRLEN),
|
||||
return (close(fd), ft_strlcpy(map->error, EHOLES, ERRLEN),
|
||||
false);
|
||||
return (true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:44:02 by kcolin #+# #+# */
|
||||
/* Updated: 2025/07/23 13:34:33 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/14 19:46:26 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ bool populate_maps(t_mapdata *map, int fd)
|
|||
{
|
||||
if (line[0] != '\n' && end_reached)
|
||||
{
|
||||
ft_strlcpy(map->error, "Trailing chars after map", ERRLEN);
|
||||
ft_strlcpy(map->error, ETRAILING, ERRLEN);
|
||||
retvalue = false;
|
||||
}
|
||||
if (line[0] != '\n')
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/06/21 19:35:43 by tchampio #+# #+# */
|
||||
/* Updated: 2025/07/31 14:08:27 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/14 19:50:20 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../libft/includes/libft.h"
|
||||
#include "../utils/frees.h"
|
||||
#include "../consts.h"
|
||||
#include "mapdata.h"
|
||||
|
||||
bool perform_color_checks(int *color, char *strcolor, t_mapdata *map)
|
||||
|
|
@ -24,8 +25,7 @@ bool perform_color_checks(int *color, char *strcolor, t_mapdata *map)
|
|||
{
|
||||
if (!ft_isdigit(strcolor[i]))
|
||||
{
|
||||
ft_strlcpy(map->error, "invalid characters in color definition",
|
||||
ERRLEN);
|
||||
ft_strlcpy(map->error, EBADCHARCOLOR, ERRLEN);
|
||||
return (false);
|
||||
}
|
||||
i++;
|
||||
|
|
@ -33,7 +33,7 @@ bool perform_color_checks(int *color, char *strcolor, t_mapdata *map)
|
|||
colorvalue = ft_atoi(strcolor);
|
||||
if (colorvalue < 0 || colorvalue > 255)
|
||||
{
|
||||
ft_strlcpy(map->error, "invalid value for colors", ERRLEN);
|
||||
ft_strlcpy(map->error, EBADVALCOLOR, ERRLEN);
|
||||
return (false);
|
||||
}
|
||||
*color = colorvalue;
|
||||
|
|
@ -53,14 +53,14 @@ unsigned int set_color(const char *s, t_mapdata *map)
|
|||
while (tab[i])
|
||||
{
|
||||
if (i > 2)
|
||||
ft_strlcpy(map->error, "too many colors", ERRLEN);
|
||||
ft_strlcpy(map->error, ETOOMANYCOLORS, ERRLEN);
|
||||
isok = perform_color_checks(&rgb[i], tab[i], map);
|
||||
free(tab[i]);
|
||||
i++;
|
||||
}
|
||||
free(tab);
|
||||
if (i <= 2)
|
||||
return (ft_strlcpy(map->error, "Not enough colors", ERRLEN), 0);
|
||||
return (ft_strlcpy(map->error, ENOTENOUGHCOLORS, ERRLEN), 0);
|
||||
if (!isok)
|
||||
return (0);
|
||||
finalcolor = ((rgb[0] & 0xff) << 16)
|
||||
|
|
@ -77,7 +77,7 @@ int try_set_texture(t_mapdata *map, char **texture, char *texture_name)
|
|||
{
|
||||
if (*texture != NULL)
|
||||
{
|
||||
ft_strlcpy(map->error, "Duplicated texture directive", ERRLEN);
|
||||
ft_strlcpy(map->error, EDUPTEX, ERRLEN);
|
||||
return (2);
|
||||
}
|
||||
*texture = ft_strdup(texture_name);
|
||||
|
|
@ -99,7 +99,7 @@ int set_textures(char *line, t_mapdata *map)
|
|||
tab = ft_split(line, ' ');
|
||||
if (tab[0][0] == '1')
|
||||
return (free_tab(tab), ft_strlcpy(map->error,
|
||||
"Map started before all the textures", ERRLEN), 1);
|
||||
EMAPBFTEX, ERRLEN), 1);
|
||||
retvalue = 0;
|
||||
if (tab[0] && tab[1])
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 15:51:29 by kcolin #+# #+# */
|
||||
/* Updated: 2025/07/29 13:28:08 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/13 15:31:17 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
|
|||
49
src/sprites/create_sprite.c
Normal file
49
src/sprites/create_sprite.c
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* create_sprite.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/12 15:43:19 by tchampio #+# #+# */
|
||||
/* Updated: 2025/08/18 12:55:21 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "sprite.h"
|
||||
#include "../../libft/includes/libft.h"
|
||||
#include "../cub3d_data.h"
|
||||
#include "../utils/inits.h"
|
||||
|
||||
t_sprite *create_sprite(t_cub3d_data *data, char *texture,
|
||||
double x, double y)
|
||||
{
|
||||
t_sprite *sprite;
|
||||
|
||||
sprite = ft_calloc(sizeof(t_sprite), 1);
|
||||
if (!sprite)
|
||||
return (NULL);
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->sprite_type = OTHER;
|
||||
sprite->image = load_single_texture(data, texture);
|
||||
return (sprite);
|
||||
}
|
||||
|
||||
t_sprite *place_right_sprite(t_cub3d_data *data, char c, double x, double y)
|
||||
{
|
||||
t_sprite *sprite;
|
||||
|
||||
if (c == 'M')
|
||||
sprite = create_sprite(data, MYSTERY_TEX, x + 0.5, y + 0.5);
|
||||
if (c == 'Q')
|
||||
sprite = create_sprite(data,
|
||||
REV_TEX, x + 0.5, y + 0.5);
|
||||
if (c == 'J')
|
||||
sprite = create_sprite(data,
|
||||
JUGG_TEX, x + 0.5, y + 0.5);
|
||||
if (c == 'D')
|
||||
sprite = create_sprite(data,
|
||||
DBLTAP_TEX, x + 0.5, y + 0.5);
|
||||
return (sprite);
|
||||
}
|
||||
23
src/sprites/create_sprite.h
Normal file
23
src/sprites/create_sprite.h
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* create_sprite.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/12 15:49:25 by tchampio #+# #+# */
|
||||
/* Updated: 2025/08/12 16:13:02 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef CREATE_SPRITE_H
|
||||
# define CREATE_SPRITE_H
|
||||
|
||||
# include "../cub3d_data.h"
|
||||
|
||||
t_sprite *create_sprite(t_cub3d_data *data,
|
||||
char *filename, double x, double y);
|
||||
t_sprite *place_right_sprite(t_cub3d_data *data, char c, double x,
|
||||
double y);
|
||||
|
||||
#endif // CREATE_SPRITE_H
|
||||
27
src/sprites/move_sprites.c
Normal file
27
src/sprites/move_sprites.c
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* move_sprites.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/18 13:25:07 by kcolin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "move_sprites.h"
|
||||
#include "sprite.h"
|
||||
|
||||
void move_sprites(t_cub3d_data *data)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (i < data->sprite_counter)
|
||||
{
|
||||
if (data->sprite_list[i]->sprite_type == ZOMBIE)
|
||||
data->sprite_list[i]->sprite_pos_x += MOVEMENT_SPEED * data->delta;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
20
src/sprites/move_sprites.h
Normal file
20
src/sprites/move_sprites.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* move_sprites.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/18 13:22:06 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/18 13:22:40 by kcolin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef MOVE_SPRITES_H
|
||||
# define MOVE_SPRITES_H
|
||||
|
||||
# include "../cub3d_data.h"
|
||||
|
||||
void move_sprites(t_cub3d_data *data);
|
||||
|
||||
#endif // MOVE_SPRITES_H
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/05 12:59:44 by tchampio #+# #+# */
|
||||
/* Updated: 2025/08/06 14:41:17 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/13 14:44:02 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -15,6 +15,14 @@
|
|||
|
||||
# include "../draw/img_data.h"
|
||||
|
||||
typedef enum e_sprite_type
|
||||
{
|
||||
ZOMBIE,
|
||||
PERK,
|
||||
BOX,
|
||||
OTHER
|
||||
} t_sprite_type;
|
||||
|
||||
/*
|
||||
* x - real position for the sprite
|
||||
* y - real position for the sprite
|
||||
|
|
@ -53,6 +61,7 @@ typedef struct s_sprite
|
|||
int sprite_width;
|
||||
int sprite_draw_start_x;
|
||||
int sprite_draw_end_x;
|
||||
t_sprite_type sprite_type;
|
||||
} t_sprite;
|
||||
|
||||
#endif // SPRITE_H
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/05 15:51:01 by tchampio #+# #+# */
|
||||
/* Updated: 2025/08/07 16:57:29 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/18 13:39:26 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
#include "../renderer/render.h"
|
||||
#include "sort_sprites.h"
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "../../libft/includes/libft.h"
|
||||
|
||||
static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite,
|
||||
int i)
|
||||
|
|
@ -106,9 +106,20 @@ void sprite_caster(t_cub3d_data *data)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (!data->sprite_list)
|
||||
if (!data->sprite_list || !data->sprite_list[0])
|
||||
return ;
|
||||
sort_sprites(data->sprite_order, data->sprite_distances, data);
|
||||
if (data->sprite_distances[3] <= 1.5)
|
||||
{
|
||||
if (data->sprite_list[data->sprite_order[3]]->sprite_type == PERK)
|
||||
{
|
||||
if (data->keypresses.is_f_pressed)
|
||||
{
|
||||
data->keypresses.is_f_pressed = false;
|
||||
ft_printf("🎵You need a little revive🎵\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
while (data->sprite_list[i] && i < MAX_SPRITES)
|
||||
{
|
||||
|
|
|
|||
47
src/utils/destroy_utils.c
Normal file
47
src/utils/destroy_utils.c
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* destroy_utils.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/18 13:05:31 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/18 13:05:31 by kcolin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../cub3d_data.h"
|
||||
#include "../../mlx/mlx.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void destroy_textures(t_cub3d_data *data)
|
||||
{
|
||||
if (data->no_texture)
|
||||
mlx_destroy_image(data->mlx, data->no_texture->img);
|
||||
free(data->no_texture);
|
||||
if (data->so_texture)
|
||||
mlx_destroy_image(data->mlx, data->so_texture->img);
|
||||
free(data->so_texture);
|
||||
if (data->ea_texture)
|
||||
mlx_destroy_image(data->mlx, data->ea_texture->img);
|
||||
free(data->ea_texture);
|
||||
if (data->we_texture)
|
||||
mlx_destroy_image(data->mlx, data->we_texture->img);
|
||||
free(data->we_texture);
|
||||
}
|
||||
|
||||
void destroy_sprites(t_cub3d_data *data)
|
||||
{
|
||||
int sprite;
|
||||
|
||||
sprite = 0;
|
||||
if (data->sprite_list == NULL)
|
||||
return ;
|
||||
while (data->sprite_list[sprite] && sprite < MAX_SPRITES)
|
||||
{
|
||||
mlx_destroy_image(data->mlx, data->sprite_list[sprite]->image->img);
|
||||
free(data->sprite_list[sprite]->image);
|
||||
free(data->sprite_list[sprite]);
|
||||
sprite++;
|
||||
}
|
||||
}
|
||||
21
src/utils/destroy_utils.h
Normal file
21
src/utils/destroy_utils.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* destroy_utils.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: tchampio <tchampio@student.42lehavre.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/08/11 12:07:48 by tchampio #+# #+# */
|
||||
/* Updated: 2025/08/11 12:10:21 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef DESTROY_UTILS_H
|
||||
# define DESTROY_UTILS_H
|
||||
|
||||
# include "../cub3d_data.h"
|
||||
|
||||
void destroy_textures(t_cub3d_data *data);
|
||||
void destroy_sprites(t_cub3d_data *data);
|
||||
|
||||
#endif
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 13:59:27 by kcolin #+# #+# */
|
||||
/* Updated: 2025/07/31 14:25:10 by kcolin ### ########.fr */
|
||||
/* Updated: 2025/08/12 15:38:45 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
#include "../../libft/includes/libft.h"
|
||||
#include "../map/mapdata.h"
|
||||
#include "../cub3d_data.h"
|
||||
#include "./destroy_utils.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void free_tab(char **tab)
|
||||
|
|
@ -65,21 +66,12 @@ int destroy(t_cub3d_data *data, int exit_code)
|
|||
mlx_destroy_window(data->mlx, data->mlx_win);
|
||||
if (data->img_data)
|
||||
mlx_destroy_image(data->mlx, data->img_data->img);
|
||||
destroy_textures(data);
|
||||
destroy_sprites(data);
|
||||
free(data->img_data);
|
||||
if (data->no_texture)
|
||||
mlx_destroy_image(data->mlx, data->no_texture->img);
|
||||
free(data->no_texture);
|
||||
if (data->so_texture)
|
||||
mlx_destroy_image(data->mlx, data->so_texture->img);
|
||||
free(data->so_texture);
|
||||
if (data->ea_texture)
|
||||
mlx_destroy_image(data->mlx, data->ea_texture->img);
|
||||
free(data->ea_texture);
|
||||
if (data->we_texture)
|
||||
mlx_destroy_image(data->mlx, data->we_texture->img);
|
||||
free(data->we_texture);
|
||||
if (data->mlx)
|
||||
mlx_destroy_display(data->mlx);
|
||||
free(data->sprite_list);
|
||||
free(data->mlx);
|
||||
free(data->screen_matrix);
|
||||
exit(exit_code);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/17 14:22:57 by kcolin #+# #+# */
|
||||
/* Updated: 2025/07/29 13:35:29 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/13 15:25:04 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -31,6 +31,8 @@ int keypress_handler(int keycode, t_cub3d_data *data)
|
|||
data->keypresses.is_s_pressed = true;
|
||||
if (keycode == XK_d)
|
||||
data->keypresses.is_d_pressed = true;
|
||||
if (keycode == XK_f)
|
||||
data->keypresses.is_f_pressed = true;
|
||||
if (keycode == XK_Left)
|
||||
data->keypresses.is_left_pressed = true;
|
||||
if (keycode == XK_Right)
|
||||
|
|
@ -48,6 +50,8 @@ int keyrelease_handler(int keycode, t_cub3d_data *data)
|
|||
data->keypresses.is_s_pressed = false;
|
||||
if (keycode == XK_d)
|
||||
data->keypresses.is_d_pressed = false;
|
||||
if (keycode == XK_f)
|
||||
data->keypresses.is_f_pressed = false;
|
||||
if (keycode == XK_Left)
|
||||
data->keypresses.is_left_pressed = false;
|
||||
if (keycode == XK_Right)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */
|
||||
/* Updated: 2025/08/05 15:45:01 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/18 13:13:22 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
#include "../../libft/includes/libft.h"
|
||||
#include "../../mlx/mlx.h"
|
||||
#include "../map/map_checker.h"
|
||||
#include "../sprites/create_sprite.h"
|
||||
#include "frees.h"
|
||||
#include <stdio.h>
|
||||
|
||||
t_img_data *load_single_texture(t_cub3d_data *data, char *path)
|
||||
{
|
||||
|
|
@ -52,6 +54,29 @@ void load_textures(t_cub3d_data *data)
|
|||
data->ea_texture = load_single_texture(data, data->map->ea_texture);
|
||||
}
|
||||
|
||||
void place_base_sprites(t_cub3d_data *data, char **map)
|
||||
{
|
||||
int y;
|
||||
int x;
|
||||
|
||||
y = 0;
|
||||
while (y < data->map->mapheight)
|
||||
{
|
||||
x = 0;
|
||||
while (x < (int)ft_strlen(map[y]))
|
||||
{
|
||||
if (ft_strchr("MQJD", map[y][x]))
|
||||
{
|
||||
if (data->sprite_counter < MAX_SPRITES)
|
||||
data->sprite_list[data->sprite_counter++]
|
||||
= place_right_sprite(data, map[y][x], x, y);
|
||||
}
|
||||
x++;
|
||||
}
|
||||
y++;
|
||||
}
|
||||
}
|
||||
|
||||
void init_cub3d_data(t_cub3d_data *data, char **argv)
|
||||
{
|
||||
ft_bzero(data, sizeof(*data));
|
||||
|
|
@ -72,5 +97,7 @@ void init_cub3d_data(t_cub3d_data *data, char **argv)
|
|||
init_player(&data->player, data->map);
|
||||
data->screen_matrix = ft_calloc(sizeof(int), WIDTH * HEIGHT);
|
||||
load_textures(data);
|
||||
data->sprite_list = ft_calloc(sizeof(t_sprite *), MAX_SPRITES);
|
||||
ft_memset(data->sprite_distances, -1, MAX_SPRITES);
|
||||
place_base_sprites(data, data->map->map);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: tchampio <tchampio@student.42lehavre. +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/29 13:42:39 by tchampio #+# #+# */
|
||||
/* Updated: 2025/07/29 20:09:30 by tchampio ### ########.fr */
|
||||
/* Updated: 2025/08/13 15:22:54 by tchampio ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -21,6 +21,7 @@ typedef struct s_keypresses
|
|||
bool is_d_pressed;
|
||||
bool is_left_pressed;
|
||||
bool is_right_pressed;
|
||||
bool is_f_pressed;
|
||||
} t_keypresses;
|
||||
|
||||
#endif // KEYPRESSES_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue