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 }