All notable changes to "Snake by InfinitePain" will be documented in this file.
- Introduced
update_snake_position
function insnake.c
for efficient snake movement. - Added
tail
pointer to theList
structure inlist.h
to support the new snake movement logic. - Updated
printer_element
function inelement.h
to include aWINDOW* window
parameter.
- Fixed a bug in the
collision_thread
function incollision.c
where the game timer was stopping randomly or not being reset correctly.
- Check in Windows installer to verify if necessary redistributables are already installed.
- Screen size changes now saved to configuration file but do not take effect until game restart.
- Crash issue when there was insufficient space in the game to create food.
- Bug where available positions were not reset when there was not enough space for the desired amount of food.
- Bug where available positions were lost when the game was restarted.
- Ensured snake positions are retained after game is paused and unpaused.
- Snake positions are now set during the initialization of a new game.
- The game speed is now correctly displayed.
- Adjusted the snake initialization. The positions of the snakes are now set only when new game started.
- Added AvailablePositions struct for food generation
- Added collision tests, direction buffer tests, game element creation tests, food generation tests, input handling tests, list data structure tests, and snake behavior tests.
- Refactored food generation to use AvailablePositions
- Changed default game speed
- Refactored code for improved readability and maintainability
- Updated build automation scripts
- Added version update script
- Updated CMakeLists.txt and .gitignore
- Improved error handling and state management
- Optimized window creation and destruction
- Added thread creation error handling
- Refactored error_message and read_config functions to address compiler warnings
- Fixed a typo in CMakeLists.txt for appending CPACK_SOURCE_IGNORE_FILES
- Fixed a typo in the license file name in CMakeLists.txt
- Removed external library installation from CMakeLists.txt for Linux systems
- Fixed a syntax error in CMakeLists.txt for CPACK_SOURCE_IGNORE_FILES
- Updated CMakeLists.txt to ignore additional files and use a conditional block for UNIX systems
- Fixed the path in bundle.wxs for MsiPackage SourceFile
- Removed -O3 optimization flag from CMakeLists.txt to improve cross-platform compatibility
- Updated CMakeLists.txt to set CPACK_PACKAGE_FILE_NAME and CPACK_SOURCE_PACKAGE_FILE_NAME for better packaging
- Configuration file location information in README
- Changelog file and link in README
- Updated README to provide a better explanation of the game and its features
- Resolved bug where snake position didn't reset
- Ensured proper handling of reverse directions
- Timer to display game time
- Show player points and best points on screen
- Adjustable game speed implemented
- Game loop now based on real time, not CPU speed
- Improved input handling with buffer for direction
- Display winner with appropriate color in multiplayer
- Fixed pause menu navigation issue with settings menu
- Added dynamic food amount resizing without game restart
- A thread to manage food coordinates and drawing
- Introduced a thread for collision detection/handling
- Switched to standard linked lists
- Removed unused functions related to previous list implementation
- Functions for food handling (not yet included in game)
- Resolved settings display bug (incorrect strings, multiple changes)
- Updated info at the bottom to show new possible key uses
- Settings menu is mostly functional with some known issues
- Going back goes to the main menu instead of the previous menu
- New keys for saving settings are not printed
- Code cleanup and improvements to menu functions
- Fixed bug with player movement when starting new game
- Bug fix for Linux config path
- Fully implemented settings menu (requires bug fixes)
- Removed game area offset, now using a static value
- Improved menu visuals with increased padding and wider display area
- Key information at the bottom of the menu
- Replaced PATH_MAX with dynamic allocation for better portability
- Simplified configuration file reading and writing using a for loop and a char array
- Added static values for screen size, allowing for adjustable game sizes and a bounding box display
- Refactored window functions to use an array for managing all windows
- Improved error messages for better clarity and debugging
- Settings menu (incomplete but functional for testing purposes)
- Configurations are now stored in an array, new macros added for readability
- Config struct now includes a member for the path of the config file
- Added two new functions for easier and dynamic menu titles: print_menu and erase_menu