Exemple #1
0
    /**
        @brief constructs the file destination

        @param file_name name of the file
        @param set [optional] file settings - see file_settings class, and @ref dealing_with_flags
    */
    file_t(const std::string & file_name, file_settings set = file_settings() ) : non_const_context_base(file_name,set) {}
/* Program entry point */
int 
main(int argc, char *argv[])
{

    glutInit(&argc, argv);
    glutInitWindowSize(winWidth,winHeight);
    glutInitWindowPosition(300,50);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);
    glutCreateWindow("Turmites v01    ----     Martin Johansson");

	// Parse settings file
	std::ifstream file_settings("settings.txt");
	if(file_settings.is_open()) {
		std::cout << "Successfully opened settings.txt" << std::endl;
	}
	if( !file_settings.is_open() ) {
		file_settings.open("../settings.txt");
	}
	if(file_settings.is_open()) {
		std::cout << "Successfully opened settings.txt in down folder" << std::endl;
	}

	std::string str;
	std::vector<int> v;

	// Debug
	
	// Get map size and boarder settings
	while(std::getline(file_settings, str)) {
		std::istringstream iss(str);
		int n;	
		while (iss >> n)
			v.push_back(n);
	}

	// Validate input
	if(v.size() != 3 || v[0] < 2 || v[1] < 2 || v[2]<0 || v[2]>1) {
		printf("Error reading settings file");
		return EXIT_FAILURE;	
	}
	
	// Create the turmite on the specified map size
	turmite.reset(new Turmite(v[0], v[1]));
	
	// Set boundary condition
	turmite->toroidalWalk = v[2];
	
	bool success = turmite->readInput();
	if(!success) {
		printf("Error loading input file.");
		return EXIT_FAILURE;
	}

	//callbacks
	glutDisplayFunc(draw);
	glutReshapeFunc(changeSize);
	glutCreateMenu(timer);
		glutAddMenuEntry("Fastest",   1);
		glutAddMenuEntry("2 ms delay",   2);
		glutAddMenuEntry("10 ms delay",   10);
		glutAddMenuEntry("100 ms delay",   100);
		glutAddMenuEntry("Slowest",  1000);
	glutAttachMenu(GLUT_RIGHT_BUTTON);

	 // Setup keyboard
	glutKeyboardFunc(keyboard);

    ilInit();  
    iluInit();      
    ilutRenderer(ILUT_OPENGL);                  		

	Viewer::init(winWidth,winHeight);

    glutMainLoop();


    return EXIT_SUCCESS;
}