/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cub3d :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: makhtar <makhtar@student.42Abudhabi.ae> +#+ +:+ +#+ */
/* By: hawadh <hawadh@student.42Abudhabi.ae> +#+#+#+#+#+ +#+ */
/* Created: 2022/06/21 17:31:03 by makhtar #+# #+# */
/* Created: 2022/06/21 17:31:31 by hawadh ### ########.fr */
/* */
/* ************************************************************************** */
***NOTES:***
NULL
#BUGS: NULL
HA: Segfaul inget_next_line();
due toft_strchr();
inlibft
HA: Function parses whole file, should stop at first line of mapHA: Leak inextract_file();
line#26
HA: Segfault when moving mouse in window in functionmlx_mouse_get_pos();
in functiondraw_cursor();
HA: Crosshair was not drawingHA: Map printed with extra spacesHA: Memory leak inparse_layout();
in my functionstore_confg_map();
line#47
MAK: Parser returning invalid map on checking walls if any0
is present,line #13
in file.cubHA: xpm file opening failingHA: On full screen, pause causes window to turn red if window resized to full screenHA: Parser functioncheck_tabs();
had issue with iteration (Did I write this late night?) wherei = -1
andwhile (++i > 0)
HA: inadd_xpm();
image not placing in only BlueHA: Map not redrawing on clearing window when hitting pause button a second timeHA: Minimap skipping areas and not drawing in wallsHA: Minimap not drawing walls when player is closer to TOP side of arrayHA: Walls not drawing in correct position of windowMAK: Walls not drawing in correct distance, it is drawing as inversed distance.MAK: Check if bugs are present when have 1920 rays for walls.MAK: Parse spaces for the map.***MAK && HA:***Fish Eye fixed.MAK: Given directions of all the sides of the wall in the game with direction.c, function named wall_hit_direction.MAK && HA: When the game starts the position of player is different than playing the game, even with the pause function- the player is somewhere else in the map not when in his latest position. Need to be fixed. Probably the init_rays function is not functioning it properly.HA && MAK: Bug, NO, SO, EA, WE can be in any order, our parser fails it.MAK && HA: Map should not contain any spaces within the map. Spaces in the middle of the map with 1's and 0's should be invalid? Need to confirm this.HA:add_xpm();
still not incrementing y in correct increments to draw wallsHA: Mouse not being released on hitting pauseHA: Minimap jumping and resetting when approaching 0 index on both x and y.HA: Parsing for newlines etc; between map lines not working.HA: Parsing of 0 on right side of map not function for bordersMAK: Player jumps into wall when increase speed by hitting left shift.HA: Double free instore_data();
#TODO:
HA: Incorprateget_next_line();
inft_reading();
HA: Refactorisdir();
and double check project for forbidden functionsHA: Parse and store map and config in separate 2D array for eachHA: Figure out how to separate map from configurationsHA: Addmake vg
rule in Makefile for debuggingHA: Debug segfault inget_size();
due toHA: Double check space stripping in squashMAK: Declare a new structure to fetch the info and place it in the main root of the structure which will work on every aspect of the program.HA: Study RaycastingHA: Discuss images to be used withMA
HA: Figure out correct drawing and following of mouse cursorMAK: Take xpm files and read it to check if the file reading is working perfectly or not.MAK: Time for raycasting math to solve.HA: Draw interior of minimapHA: Figure out hook management for hook_num 46, see comments inutils_hooks.c
HA: Figure out what is the event that detects clicking on window edgesHA: Figure out XPM image for pause in center of screen and implement removalHA: Correctly implement # 14HA: Fix minimap drawing to draw when player is closer to left side of array coords, possibly due coords calculation making coords negative and invalid readHA: Fix walls drawing in wrong position of image, perhaps because ra->y not correct value. X is also not increment in correct amount.HA && MAK: Figure out solution to fish-eye effect.MAK: Implement edge cases for the rays.MAK: Need to work on fixing the directions of the rays when hits the wall.MAK: Raycasting is optimised with DDA AlgorithmMAK: Animation effect when the AK-47 is triggered.HA: Figure out y step incrementsMAK: Work on sprites when rays will hit.MAK: Work on the management of sprites.MAK: Have character types for different types of sprites like D for Door, F for fire, B for barrel, etc.HA: Refactor minimap drawing inutils_minimap.c
seemini_interior();
on branch hawadh-minimap.MAK: Finished working on the parsing for doors.MAK: Allocate structure for the doors and put xpm addresses in the sprites structures when the wall hits.MAK: Working on Integration for the doors.HA: Minimap not drawing EA/WE facing doors correctly. Need to adjust drawing depending on walls surrounding.HA: Resize minimap dimensions and values. Reduce them by halfMINI_DIM 90
.HA: Fix map file parsing, map does not fail if newlines or any whitespace between map lines.MAK: Add rotation to minimap player model.MAK: Minimap Door Integration.MAK: Norm fix for some files.HA: Norm fix formini_map.c
functionmini_interior();
HA: Parse for any lines before first element in file.
#CURRENT STATUS
HA: 25 Nov 2022
- New files to split functions
parse_file.c
,errors.c
,parse_file.c
- Added .gitignore
- Created new Function
err_return();
to exit status 1 with correct error message - Added get_next_line(); and minilibx_opengl
- Added debugger files to run debugger
- Refactored function
ft_reading();
and, now staticinit();
- New functions
get_size();
to get number of lines in file inutils_parse.c
- New struct pointer in
t_info
calledt_data
- New function static
extract_data();
to extract data from file and store in a 2D array - Added my
libft
functionft_strchr();
to cub3d libft - Added new function
ft_ptrptrlen();
to our libft returns 2D array size - Added new function
ft_isspace();
to our libft, if ascii whitespace returnTRUE
- New function
clean_file();
in new fileutils_file.c
to clean file input - Helper functions for above
squash();
andcount_str_size();
. Squash removes all excess whitespaces in line andcount_str_size();
returns correct str size without excess white spaces - New function called
free_split();
to free 2D arrays in new filememory_mngmnt.c
- Parsing Configurations almost complete, see
TODO #4
- Moved function
get_act_size();
to fileutils_parse.c
- New file
utils_file_ext.c
with functions**squash_lines();
and, new function, `check_line(); to only clean file up to last line not including map to be left for parsing. - Cleaning file complete.
make vg
rule added, see Makefile- Leak found and fixed in
clean_whitespaces();
was missing a pointer - Added new function to libft:
ft_strrmc();
removeschar c
from array - Uncomment of MLX related lines in Makefile, MLX now functional in Program
mlx_loop();
now called in functioninit();
- Window now initialised and opening, by adding function calls
mlx_new_window();
inmain.c
functioninit();
- Two new files,
window.c
for window functions andutils_hooks.c
for key hook utilities - Calling
mlx_key_hook();
intinit();
that calls new functionkey_hook_manage();
which currently only handles ESC - New function
esc_win();
which callsfree_data();
andexit(0);
, this function handles both(x) and esc
- Calling
mlx_hook();
ininit();
to handle above(x)
- Two new functions in
window.c
to initialise and store window + image address,init_window();
andget_img_addr();
- New file
draw.c
contains 2 new functionsdraw_cursor();
andmy_pixel_put();
- Function draw cursor calls
MLX
functionmlx_mouse_get_pos();
to get mouse position for cursor drawing WIP - Updated
memory_mngmnt.c
with 3 newfree_struct_???();
functions one for each struct and struct members - Added error message
ERROR: Minilibx Failure
for any failure from minilibx functions - Added print loop in
check_map();
to print file contents after cleaning and parsing - Refactored
draw_cursor();
and new functioninit_mouse();
in new filemouse.c
- New file
hooks.c
to contain new functionhook_management();
to hold allmlx_hook();
calls - Refactored
draw_cursor();
and new functionmouse_move();
callsinit_cursor();
from withinhook_management();
- Moved
mlx_loop();
towindow.c
called in functioninit_window();
- Refactored
init_cursor();
now draws half cursor in centre of screen - New file
rgb.c
with new functionrgb();
to calculate colours for roof and ceiling. - Three new functions in new file
utils_draw.c
to draw roof and ceiling coloursdraw_ceiling();
anddraw_floor();
called from functionceiling_floor();
- New function
draw_map();
called ininit_window();
indraw.c
to draw currently containsceiling_floor();
-> to draw ceiling and floor, andinit_cursor();
-> to redraw cursor - New file
mini_map.c
contains 3 functions to draw minimap border and interior see TODO #14, functions nameddraw_minimap(); mini_bottom_top(); mini_interior();
- Minimap drawn in top left corner, Missing interior
- Downloaded some xpm images and added window control flags to MLX library
- Removed fullscreen flag from
mlx_new_window.m
flag isNSWindowStyleMaskFullScreen;
- Buttom
m
on keyboard stops mouse capture and releases mouse - Added
mlx_string_put();
function from oldMLX
to currentMLX
library, and updatedmlx.h
- New function
check_tabs();
called insquash_lines();
replaces all tabs to 4 spaces within themap
only in fileutils_file_ext.c
- New function to mimic
ft_strlen();
but adds +4 to the count for each tab found - Bug #6 Fixed, was due invalid write due to incorrect calculation in
get_tab_size();
- Added
xpm_images/
file with sample xpm images to discuss - New Function
init_xpm();
to init and store all xpm images placed inwindow.c
- New function in
parse_layout.c
calledstore_map();
&**map
ofdata->file
- New function
confg_count();
to count number of lines fordata->confg
&data->map
inparse_layout();
- Added Loading and implementation fo Pause Message on hitting
'm' hook number 64
inkey_hook_manage();
, yet to implement removal of Pause Message - Fixed leak in
store_map();
line 47, due starting iteration ati = -1;
solution was to incrementi
before checkdata->file[i]
inwhile (++i < len && data->file[i])
- Deleted unnecessary file
utils_parse_ext.c
- Moved function call
parse_arg();
to functioncheck_map();
as clean-up ofmain.c
- Added error message
status == 5
inerrors.c
for XPM Image loading failure - Added parameter
t_info *info
to function prototypevoid err_return(int status, t_info *info);
and sending int_info *info
to all occuring function calls to free any allocated data within the structure in case of any error returns before exit - New function
store_confg_map();
which stores the map and the confg in their respective 2D Arrays - New File
utils_xpm.c
to hold all xpm related functions - Renamed
xpm_images/
toimgs/
- New Function
init_minimap();
called ininit_window();
inits memory fort_mini
structure to be used for initialising a new image for minimap and callingmlx_get_data_addr();
to place image in main window for faster redrawing of minimap - Due to above,
draw_minimap();
completely refactored now only 1 function called withinmini_interior();
to draw interior - New Custom
pixel_put();
function for mini map calledmini_pixel_put();
usest_mini *mini
as struct pointer - Added new error message and status to
err_return();
, and removed print ofd->confg
fromcheck_map();
- New function prints layout content in
parse_layout();
calledprint_xpm();
- Refactored
check_tabs();
andsquash_lines();
to reduce number of lines and fix extra removal of character fromcheck_tabs();
,squash_lines();
now has 2 additionalelse if
statements - Changed position of
PAUSE
image in window within functionkey_hook_manage();
line#44
- New file
utils_xpm.c
with functionopem_xpm();
usesmlx_xpm_file_to_image();
to open all xpm images and store indata->confg
called ininit_xpm();
- Added
&& i < len
line#39
inopen_xpm();
to fixbug #9
- Added new function
free_struct_mini();
inmemory_mngmnt.c
to free structt_mini
and it's contents - New File
utils_mini_map.c
- New Struct
s_player
to save all player related data, also new function,draw_player_walls();
to extract player position and future drawing of minimap inmini_interior();
with 2 functionsfind_player_array();
for Y andfind_player_index();
for X while also extracting Perspective - Bug fix
#11
- New function added to
libft
ft_ismapicon();
to detect if character in string is a valid map character, now called incheck_if_map();
- New Approved map walls xpm images
- Implemented Colour bit Masking, and renamed file
utils_mini_map.c
intoplayer.c
and renamed functiondraw_walls_player();
toinit_player
- New function in
window.c
calledinit_all();
, calls allinit?????();
functions before drawing and pushing to window` - Refactored
open_xpm();
and new functionget_xpm_addr();
to extract addresses of each xpm file for later use in merging with main image - Added
# define WIDTH 1920
and# define HEIGHT 1080
incub.h
- New Struct
s_xpm
in array to contain all image data, with new Enum to containNO
,SO
,WE
,EA
- Added free for
data->xpm
struct inmemory_mngmnt.c
and movedfree_split();
to newutils_memory_mngmnt.c
- Two new Functions in
draw.c
calledplace_xpm();
andadd_xpm();
; Functionplace_xpm();
to determine initial player orientation, andadd_xpm();
draws the image to main image address - New Pause button
'p' == hook_num 35
- Implemented correct method of adding xpm address to img
- Added
mlx_clear_window();
for pause removal. See bug #13 - New Variable
xpm->divisible
to determine size of walls - New function to hold Pause code
handle_pause();
located inutils_hooks.c
- Refactored
add_xpm();
with correct iteration of imagechar *
, still not drawing correctly - Started mini map drawing, see
mini_map.c
and fileutils_mini_math.c
renamed toutils_minimap.c
- New XPM image implemented
Ak47.xpm
for weapon, and new images forNO SO WE EA
- Buf #12 FIXED, now correctly implementing copying of image pixels with colours to main image window via
char *
, also addedwi - 4
&&hi - 4
to avoid invalid read within images - Currently working on and implementing of drawing interior contents of minimap, with 2 new functions,
draw_mini_player();
which draws player in centre of minimap (Currently white square also drawn around to figure out scaling) anddraw_mini_walls();
to attempt to draw walls in respective positions in the minimap. - Changed size of minimap image from
260x185
to185x185
and moved functionmini_interior();
toutils_minimap.c
- Added new
# define MINI_SCALE 29
for minimap scaling and new variabledata->gun
- New Wall images Implemented
- Attempting new algorithm in
mini_interior();
WIP - Removed
TRUE FALSE
fromcub.h
since it already exists inlibft.h
- Minimap fully functional, refactored
mini_intrior();
and 2 new functionsdraw_mini_enemy();
and temporary functiondraw_square();
for scaling testing confirmation - Moved function
draw_mini_player();
anddraw_square();
- Added acceptable character in
valid_key();
inparse_map.c
character'm'
for enemies,line #32 -> #33
- Refactored scaling and sizes of mini-map drawing to fit player and map exact centre in minimap
- Swapped
EA
andNO
walls images - New function
find_player();
inplayer.c
to find player position in map array, Function isNOT STATIC
so it can be recalled with each iteration to redraw mini-map, added function call indraw.c draw_map();
- WIP free xpm struct array in
memory_mngmnt.c
and new test mapzmap.cub
- Refactored
place_walls()
indraw.c
now takes angle and draws wall texture accordingly. - Added
if (x == 0){ x = ray.x; }
inmoves.c
line#244
and added place walls call line#251
along withx = 0 line
#255` - Added correct values for
ra->ang
comparison withint * RADIAN
with two separate conditions for east - Made short loop for
while (x < ray.x1 (ray.x1 == 0 && x == 0))
with a callplace_walls();
and maderay.x1 += 16.1
increments - Walls now drawing in correct width and height, but see bug
#17
- Removed Variable xpm->divisible as is no longer needed.
- Refactored line
#208
inmoves.c
for height calculation. - New function called
linux_osx_mouse();
lines#88
&_
inmouse.c
function placed inlinux_osx_mouse.c
- Line
#37
indraw.c
to now makey = (HEIGHT / 2) - (ray>height / 2);
- Implemented
ifeq
andelse
inMakefile
to determine OSX or Linux lines#40
-> `#50'. - New file
linux_osx_mouse.c
calls mouse functions depending on OSX or Linux. - Changed all values within
ray.c
toRAYS
as defined to ease change. - Attempting new method of calculating
x
andy
positions in XPM file andxpm_y
iteration indraw.c
add_xpm();
- Removed unused variables in
init_rays();
andwall_ht_direction();
- Added
#ifdef OSX
,#ifdef LINUX
incub.h
to ease transition betweenOSX
andLinux
. - New function in
utils_math.c
calledeuclidean();
called inrays.c
line#79
to calculate real distance from player view plane - Added
free(info->mlx);
inmemory_mngment.c
lines#100 -> #104
xpm_x = ray->y * xpm->wi
to extract x coordinate on texture, still need step incrementation for y- Adjust conditions for
while
loop indraw.c
current lines#40
and#43
and changedy
value calculation toy = (HEIGHT - ray->height) / 2;
to get correct wall height drawing. - Implemented
if (ray->dir_wall == 1 || ray->dir_wall == 2) { xpm_x = ray->x * xpm->wi; }
indraw.c
current lines#38 -> #39
- Fixed issue with mouse not being released on hitting pause, by implementing
int status
in function parameterlinux_osx_mouse(t_info *info, int x, int y, int status)
to only trigger mouse move when pause flag is triggered. - Muazzam gave calculation
step = ((xpm->hi * xpm->wi) / ray->dist) / ray->height;
implemented indraw.c
in current line#46
, step was placed inxpm->addr[]
- Branched from main to
hawadh-minimap
branch & refactoring minimap drawing algorithm. - Implemented
# define NUM_SPRITES
incub.h
to auto increase allocation fort_xpm *xpm
to add any new sprites to structures. - Check comments for
utils_math.c
utils_minimap.c
utils_xpm.c
- New file
utils_minimap_ext.c
with two new functionsx_y_values();
&mini_img_limit();
called inutils_minimap.c
in functionmini_interior();
- New Function
x_y_values();
returns values of eitherx
ory
depending on whether index values are negative. Returns the values with calculation of scale for offset in minimap. - New Function
mini_img_limit();
checks ify
orx
value has reached the loop limit to decide to continue or exit. - New function
assign_index_values();
placed in fileutils_minimap_ext.c
returns index value depending if index calculated via input parameter and returns necessary value. - Renamed
door1.xpm
todoor.xpm
and resized all wall images to 1920x1080. - Adjust player drawing size in
mini_map.c
to draw smaller player. - New
#define MINI_DIM
variable for minimap dimensions incub.h
and replaced all values in mini map functions that determined map dimensions. - New function in
utils_minimap.c
draw_mini_interior()` to determine which map icon was detected to draw. - New
#define NUM_SPRITES
incub.h
to adjust memory allocation fort_xpm*
when necessary as number of sprites increment. - New function in
utils_minimap.c
calleddraw_mini_doors();
WIP (NEEDS NORMINETTING) to draw doors on minimap. - Removed
p_ang
fromget_height();
parameters inutils_math.c
and allget_height();
function calls input. - Added call
err_return();
with errorstatus == 3
in fileutils_door.c
to call error for invalid doors location. - Finalised drawing of walls in minimap with two new functions
draw_mini_doors_horizontal();
anddraw_mini_doors_vertical();
separated due to differentx_one
andy_one
values required. Functions placed inutils_minimap_ext.c
- Added
MINI_DIM
variables in alldraw_mini_player();
values to make change of minimap size more streamlined in filemini_map.c
. - Renamed function
draw_mini_enemy();
inutils_minimap.c
todraw_mini_sprite();
- Refactored
x_y_values();
inutils_minimap_ext.c
to calculate correctx
&y
values. - Moved
squash_lines();
toparse_file.c
& now sendingt_info *info
tostore_data();
inutils_file.c
- New function in
parse_layout.c
calledhceck_map_config_lines();
called fromcheck_map_lines();
inutils_file_ext.c
- Fixed parsing issue with any new lines or empty spaces between map lines. See
#151
->#152
. - Removed unused function in
directions.c
calledprint_map(char **str);
. - Refactored
rgb_door_status();
inutils_minimap_ext.c
now callsget_door();
fromhooks.c
to check if door status int_doors*
structure array. - Removed function
rgb_door_status();
and no longer checking door status. - Fixed double free() in
store_data();
inutils_file.c
was attempting to free 2D array when only the main array was allocated. - Fixed norm issues in
check_config_map();
in fileutils_file_ext.c
now calls functioncheck_config_lines()
placed in new fileutils_line_check.c
. - Removed
utils_sprite.c
completely & removedkey_sprite();
. - Moved function
valid_key();
fromparse_map.c
toutils_parse.c
. - New function
free_more();
placed inutils_memory_mngmnt.c
called infree_data();
to reduce number of lines. - Moved
free_gun();
toutils_memory_mngmnt.c
&& removed function nameworking_sprite();
fromcub.h
as not used anywhere. - Removed function
draw_mini_sprites();
as it is not in use fromutils_minimap.c
. - Added empty line check in
utils_file_ext.c
in two functionscheck_map_lines();
&&check_config_map();
to detect any non-empty lines between elements that contain only whitespaces other than a newline. - Fixed norm issue in
minimap.c
in functionmini_interior();
by creating new function to callx_y_values();
andextract_decimal()
forx
andy
values, function is calledget_values();
placed inutils_minimap.c
. - Added 20 more to
ang_iter
inmini_rot()
in filemini_map_rot.c
to make view cone longer in minimap, and changed colour value from0x00FF0000
to0x00A0F0F0
. - Added
*map_icon == 'O'
todraw_mini_interior();
inutils_minimap.c
and changed input fordraw_mini_doors_*(t_info *info, int x, int y, >>char *map_icon<<);
to send*map_icon
to draw correct door colour. - Refactored
check_open();
inutils_minimap_ext.c
to takechar *map_icon
as parameter fromdraw_mini_interior();
. Function now return green only if*map_icon == 'O'
else it returns red. Functioncheck_open();
is called indraw_mini_doors_*();
in the position ofrgb
ofmini_pixel_put();
- Added check in
squash_line();
if (i == 0 && check_line())
to clean and return error if any lines before config at the begining of the file as it is invalid. - Added
t_info *info
parameter tosquash_lines();
to callerr_return();
for cleanup before exit. - Added comments to some functions in
doors.c
&&draw.c
&&utils_xpm.c
&&parse_layout.c
. - Added bool condition in
if
,if else
&&else
statements in functionxpm_store();
in fileconfig_xpm.c
to check if data already exists in case of duplicates to fix memory leak. - Fix for
xpm_store();
now compares with empty string. - Refactored
data_init();
to now loop throughdata->confg
2D array to set each element asNULL
to avoid future invalid reads and leaks and changed back to bool condition forHA:#172
. - Added ASCII art and credits to
Makefile
. - Added comments to functions in
angle.c
&&memory_mngmnt.c
&&utils_memory_mngnmnt.c
.
MAK: 4 July 2022
- Parsing for different types of layout is finished. Memory leaks, and norms are done.
- For better reference please read the comments to know what is the structure for parser.
- Changed char to const char in ft_strcmp.
- Updated crosshair with green line and minimal size of the crosshair.
- Updated parsing function to fetch the values based on the requirements like path to different xpm files, colours given based on RGB combination for floor and ceilings.
- Updated Crosshair
- Rotations are done.
- Movements of the player are functioning perfectly.
- Given the field of view as 70 degree and number of rays are 1920.
- With the Help of shooting rays, we have the height formula given the distance of the rays when hits the wall.
- Iteration of each ray in X-coordinate is 1 and the angle iteration is 0.000636318 in radian.
- The project is functioning perfectly in MAC and Linux OS.
- Created New Basic Movements which can have the basic functions of the player- movements and rotation.
- Created New File rays.c which can initialise rays and work on the calculations.
- Created New file edge-cases.c which can hold the account of the scenario if the free path is in the middle of the walls.
- Created a new structure t_str which can help us in the iteration of the parsing of the map.
- Created New file parse_spaces.The function will help us to check if there is a space at any index of the map, then there should be either the wall or the space else it will throw an error.
- Created New file utils_math.c to store the function sq and dist.
- Created New file utils_str.c since the function ptrptrlen and strlen returns the values in size_t, we needed the same function but to return as an int to avoid memory leaks in parsing. So the names are get_2d_len, ft_strlen_int.
- Finished working on Fish eye effect.
- Finished working on the edge cases.
- Created a new function get_height which does the formula and revise it if it exceeds the window.
- Created a new file directions.c and added a function named wall_hit_direction which gives the direction of all the sides of the wall.
- Edited some codes in draw.c which can link it with the wall_hit_direction to give a better clarity to the game.
- Created a new Function Euclidean which handles the functions for right angle triangle for different rays.
- Parsing for different orders of the layout is completed.
- Created a new file named utils_type and inside created new functions which are linked in this way- NO 1, SO 2, WE 3, EA 4, C 5, F 6, with any type of input I get the value as string or an int.
- Created a new Folder named Raycasting Algorithm which contains a text document. For to post it on how the collaboration was as a team and what we have developed in cub3D.
- Created new files sprite.c, utils_sprite.c. Working on the management of sprites- parsing in rays, allocation for structure of sprites and more.
- Created an animation effect for AK-47.
- Finished Parsing for the doors.
- Finished allocations for the sprites.
- Parsing for Duplicates and rgb with commas are done.
- Got the door integration for the map.
- Added a new function for freeing the configuration data. Using if statements for each and every index of the 2d array if the memory exists and freeing it if it exists.The function is called from free_struct_data -> free_config(data->cong)
- Moved #35 to utils_memory_management.