Esempio n. 1
0
bool ToyStory::tellMeAStory(std::string const & filename, Toy & character1, toy_speak speak1, Toy & character2, toy_speak speak2) {
	std::ifstream file(filename.data());
	std::cout << character1.getAscii() << std::endl;
	std::cout << character2.getAscii() << std::endl;
	if (file.is_open()) {
		char buffer[1024];
		std::string sentence;
		size_t index;
		int count = 0;
		while (!file.eof()) {
			memset(buffer, 0, 1024);
			file.getline(buffer, 1024);
			sentence = buffer;
			if ((index = sentence.find("picture:")) == 0) {
				std::string picture = sentence.substr(8);
				if (count % 2) {
					if (!character1.setAscii(picture)) {
						return false;
					}
					std::cout << character1.getAscii() << std::endl;
				}
				else {
					if (!character2.setAscii(picture)) {
						return false;
					}
					std::cout << character2.getAscii() << std::endl;
				}
			}
			else {
				if (count % 2) {
					if (!(character1.*speak1)(sentence)) {
						return false;
					}
				}
				else {
					if (!(character2.*speak2)(sentence)) {
						return false;
					}
				}
			}
			count++;
		}
	}
	return true;
}