aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
blob: db0e58a3109ee74fceb7e25457a8bbc3531a7b54 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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();
}