Esempio n. 1
0
void Interface::Intoduce(ostream & stream)
{
	int dec = 0;
	char de2;
	stream << "Czy chcesz przeczytac zasady gry? \n(wpisz 1 i wcisnij ENTER jesli tak, wpisz 0 i wcisnij ENTER jesli nie)\n";
	cin >> dec;
	if(dec==1)
	{
		stream << "Copyright (C) 2014 Dorian Janiak\n\n";
		stream << "Witaj w grze Babel-Bubel!";
		delay_ms(WAITING_TIME);
		stream << "\n\nJesli jeszcze nie grales w ta gre to pomin ten tekst, idz powstawiaj kilka blokow i dopiero tutaj wroc, bo na sucho nic z niego nie wyciagniesz :) \n";
		delay_ms(WAITING_TIME);
		stream << "\nChcialbys graczu poznac zasady gry? Oto one:\n";
		delay_ms(WAITING_TIME);
		stream << "\t Musisz wybudowac wieze siegajaca do nieba (Babel). Twoja wieza musi przede wszystkim wytrzymac swoja mase oraz wiatr, ktorego intensywnosc jest" <<
			" odczuwalna w szczegolnosci gdy zaczynasz stawiac wysokie pietra. Jednak to nie wszystko! Pamietaj, ze tez jest jeszcze sam Stworca, ktory" <<
			" niekoniecznie podziela Twoja architektoniczna wizje i nie omieszka \"dorzucic\" czegos od siebie gdy tylko zblizysz sie do nieba. A wiec dobrze sie zastanow stawiajac kolejne kamienie.\n\n";
		stream << "\n\nJesli bedziesz gotow przejsc dalej wpisz dowolny znak i wcisnij ENTER\n";
		cin >> de2;
		refreshConsole(stream);
		stream << "\n\nObciazenia:\n";
		stream << " - kazdy element wazy i obciaza konstrukcje\n - waga kolejnych blokow musi zostac zamortyzowana przez bloki znajdujace sie ponizej\n" <<
			" - waga moze zostac zamortyzowana przez bloki, z ktorymi dany blok sie styka (po prawej, na ukos w dol na prawo, po lewej, na ukos w dol po lewej, blok ponizej)\n" <<
			" - opis kolejnych blokow:\n\t" << _bG << " - blok, ktory stawia Bog - wytrzymalosc: bardzo mala, waga: ciezki\n\t" << 
			_bN << ' ' << _bD2 << ' ' << _bD3 << ' ' << _bD4 << " - blok, ktory Ty stawiasz - wytrzymalosc: srednia, waga: srednia - im ciemniejszy tym mniej jest w stanie wytrzymac\n\t" <<
			_bB << " - most, ktory Ty stawiasz - wytrzymalosc: srednia, waga: bardzo lekki\n" << " - zwroc jednak uwage, ze w przypadku mostow i blokow Boga nie masz informacji na ile sa one obciazone\n";
		stream << "\n\nJesli bedziesz gotow przejsc dalej wpisz dowolny znak i wcisnij ENTER\n";
		cin >> de2;
		refreshConsole(stream);
		stream << "\n\nWiatr:\n";
		stream << " - w grze wystepuje wiatr, ktory wieje z prawej lub lewej strony z okreslona sila\n - Twoja budowla amortyzuje dzialanie wiatru swoja waga (za lekka sie zawali)\n" <<
			" - kierunek wiatru decyduje o tym, z ktorej strony sie zawali jesli nie wytrzyma jego sily\n";
		stream << "\n\nJesli bedziesz gotow przejsc dalej wpisz dowolny znak i wcisnij ENTER\n";
		cin >> de2;
		refreshConsole(stream);
		stream << "\n\nKonstruowanie budowli:\n";
		stream << " - bloki mozna stawiac na dowolnym innym bloku \n - mosty powstaja przez doczepienie bloku do innego bloku po jego prawej lub lewej stronie \n" <<
			" - jesli postawisz blok \"w powietrzu\" to spadnie on na blok znajdujacy sie pod nim i rozbija sie oba\n";
		stream << "\n\nJesli bedziesz gotow przejsc dalej wpisz dowolny znak i wcisnij ENTER\n";
		cin >> de2;
		refreshConsole(stream);
		stream << "\n\nOgolne zasady:\n";
		stream << " - przez cala gre stawiasz bloki\n - po kazdym postawionym bloku sprawdzana jest wytrzymalosc konstrukcji\n - nastepnie Bog moze zrzucic z nieba (pionowo w dol) swoj blok\n" <<
			" - wykonywany jest test wytrzymalosci wiezy na wiatr\n - jesli chcesz miec duzo punktow sprobuj wybrac bardziej wysoka mape, anizeli szeroka (zostanie to doliczone w finale)\n" <<
			" - wygrana stanowi dotkniecie nieba! Przegranej nie ma\n";
		stream << "\n\nI to wszystko, powodzenia ;) \n Wpisz dowolny znak i wcisnij ENTER\n";
		cin >> de2;
		refreshConsole(stream);
	}
void Renderer::Pass2(const Pipeline &pipeline, const PipelineContext &pipelineContext)
{
	//BEGIN PASS 2
	//
	//end of texture rendering
	//now we copy the texture from the FBO or framebuffer to
	//video texture memory and render fullscreen.

	/** Reset the viewport size */
#ifdef USE_FBO
	if (renderTarget->renderToTexture)
	{
		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, this->renderTarget->fbuffer[1]);
		glViewport(0, 0, this->renderTarget->texsize, this->renderTarget->texsize);
	}
	else
#endif
		glViewport(0, 0, this->vw, this->vh);

	glBindTexture(GL_TEXTURE_2D, this->renderTarget->textureID[0]);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
#ifdef USE_GLES1
	glOrthof(-0.5, 0.5, -0.5, 0.5, -40, 40);
#else
	glOrtho(-0.5, 0.5, -0.5, 0.5, -40, 40);
#endif
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	glLineWidth(this->renderTarget->texsize < 512 ? 1 : this->renderTarget->texsize / 512.0);

	CompositeOutput(pipeline, pipelineContext);

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glTranslatef(-0.5, -0.5, 0);

	// When console refreshes, there is a chance the preset has been changed by the user
	refreshConsole();
	draw_title_to_screen(false);
	if (this->showhelp % 2)
		draw_help();
	if (this->showtitle % 2)
		draw_title();
	if (this->showfps % 2)
		draw_fps(this->realfps);
	if (this->showpreset % 2)
		draw_preset();
	if (this->showstats % 2)
		draw_stats();
	glTranslatef(0.5, 0.5, 0);

#ifdef USE_FBO
	if (renderTarget->renderToTexture)
		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
#endif
}