aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp79
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();
+}