#pragma once // FLTK headers. #include #include #include #include #include #include #include #include #include #include #define _USE_MATH_DEFINES // C/C++ headers. #include #include #include #include #include #include #include #include #include #include #include #include #include // OS headers. #include #include #ifdef _WIN32 #include #include #define NAME_MAX MAX_PATH #else #include #endif struct Settings { // Top menu. int top_menu_height = 25; // Tiles. int tile_size = 20; int tile_count_w = 30; int tile_count_h = 20; // speed. float update_fps = 60.0; float draw_fps = 60.0; int snake_speed = 2; // Rules. bool die_when_hit_self = false; // Score output. int output_width = 100; int output_height = 20; }; struct GameImages { std::vector snack_images; std::vector snack_images_tile_size; }; struct MainData { Fl_Double_Window * win = NULL; class SnakeMap * snake_map = NULL; Fl_Menu_Bar * top_menu = NULL; Fl_Output * length_output = NULL; GameImages images; bool paused = false; Settings settings; };