diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..db0e58a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,79 @@ +#include "program_data.h" +#include "app_window.h" +#include "snake_map.h" +#include "top_menu.h" +#include "snake_utils.h" + +const char image_list[][NAME_MAX] = { + "remy_the_rat.png", + "friendly_frog.png", + "easter_bunny.png", + "gidget.png", + "child_person.png", + "big_bird.png" +}; + +void load_images(MainData * mdata) { + char image_path[NAME_MAX]; + Fl_PNG_Image * new_image = NULL; + + for (auto img : image_list) { + memset(image_path, 0, NAME_MAX); + snprintf(image_path, NAME_MAX, "images/%s", img); + + printf("Loading %s\n", image_path); + + new_image = new Fl_PNG_Image(image_path); + + if (new_image->fail()) + fprintf(stderr, "Error loading %s\n", image_path); + + mdata->images.snack_images.push_back(new_image); + } + + set_snack_images_to_tile_size(mdata); +} + +int main(int argc, char ** argv) { + MainData mdata; + + load_images(&mdata); + + // Create window. + mdata.win = new AppWindow( + &mdata, + Fl::w() / 2, + Fl::h() / 2, + "FLTK snake" + ); + + // Snake map. + mdata.snake_map = new SnakeMap(&mdata); + + // Top menu. + mdata.top_menu = new Fl_Menu_Bar( + 0, + 0, + mdata.win->w(), + mdata.settings.top_menu_height + ); + + // Length output. + mdata.length_output = new Fl_Output( + (mdata.win->w() / 2) - (mdata.settings.output_width / 2), + mdata.top_menu->h(), + mdata.settings.output_width, + mdata.settings.output_height, + "Length" + ); + + mdata.length_output->value("0"); + + add_menu_items(&mdata, mdata.top_menu); + + mdata.win->end(); + mdata.win->resizable(mdata.win); + + mdata.win->show(argc, argv); + return Fl::run(); +} |