[Bastion-cvs] bastion/src/interface GameView.cpp,1.48,1.49 GameView.h,1.26,1.27 LoadingScreen.cpp,1.
Brought to you by:
jacek_kolodziej
|
From: Jacek K. <jac...@us...> - 2004-06-30 18:49:41
|
Update of /cvsroot/bastion/bastion/src/interface In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24235/src/interface Modified Files: GameView.cpp GameView.h LoadingScreen.cpp Log Message: - Zwyciestwo! Model gry jest oddzielony od jej wizualizacji. Dzieki temu moze istniec caly model swiata bez istnienia wizualizacji (nie testowalem czy mozna tick'ac swiat zanim zacznie sie go ogladac, ale nie powinno byc z tym problemow). W szczegolnosci nie da sie juz przejsc wskaznikami od klas swiata do klas widoku. Teraz metoda void* LoadingScreen::loadLevel(void *levelName) wyglada nader prosto: new World, new GameView(world). Pawel: masz czysty teren jesli chodzi o zapisywanie stanu gry. Sa dwa miejsca gdzie obiekty swiata posiadaja wskaznik do obiektow wizualizacji: UnitHandler oraz EventUnitSpotted (klasa przechowujaca informacje o jednostce w InformationCollectorze). Klasy te posiadaja wskazniki do figurek ("figure"). Przy zapisywaniu stanu gry, nalezy te wskazniki zapisac jako NULL - sa bowiem one poprawiane przy podpinaniu swiata do GameView. Mozna przyjac ze klasa MissileView ktora zajmuje sie renderingiem strzal tez powinna byc zapisywana w pliku. Alternatywnie, mozna odpowiedni wskaznik z klasy Missile zapisac jako NULL - tez powinno dzialac ok. A tak pozatym to gra dziala tak samo jak do tej pory. Index: LoadingScreen.cpp =================================================================== RCS file: /cvsroot/bastion/bastion/src/interface/LoadingScreen.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** LoadingScreen.cpp 22 Apr 2004 19:20:31 -0000 1.2 --- LoadingScreen.cpp 30 Jun 2004 18:49:30 -0000 1.3 *************** *** 40,44 **** { ! std::cout << "display begin" << std::endl; // UWAGA: szerokosc bocznego menu jest tez w funkcji nizej --- 40,44 ---- { ! //std::cout << "display begin" << std::endl; // UWAGA: szerokosc bocznego menu jest tez w funkcji nizej *************** *** 75,79 **** glDisable(GL_TEXTURE_2D); */ ! std::cout << "redisplay end" << std::endl; static int num=0; --- 75,79 ---- glDisable(GL_TEXTURE_2D); */ ! //std::cout << "redisplay end" << std::endl; static int num=0; *************** *** 135,150 **** void* LoadingScreen::loadLevel(void *levelName) { ! _gv = new GameView(); // laczenie swiata i wizualizacji if (levelName==NULL) { ! _world = new World(_gv, "map1"); } else { ! _world = new World(_gv, (char *)levelName); ! } ! ! ! _gv->init(_world); ! _world->createSample(); ! _gv->init2(); std::cout << " bastion.cpp: about to start \n"; --- 135,147 ---- void* LoadingScreen::loadLevel(void *levelName) { ! // laczenie swiata i wizualizacji if (levelName==NULL) { ! _world = new World("map1"); } else { ! _world = new World((char *)levelName); ! } ! ! _gv = new GameView(_world); std::cout << " bastion.cpp: about to start \n"; Index: GameView.cpp =================================================================== RCS file: /cvsroot/bastion/bastion/src/interface/GameView.cpp,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** GameView.cpp 30 Jun 2004 13:52:37 -0000 1.48 --- GameView.cpp 30 Jun 2004 18:49:29 -0000 1.49 *************** *** 71,77 **** } ! GameView::GameView( ) { ! } --- 71,78 ---- } ! GameView::GameView(World *worldModel ) { ! init(worldModel); ! init2(); } *************** *** 228,232 **** glViewport(vm->getXOffset() + 200, vm->getYOffset(), vm->getWidth() -200, vm->getHeight()); ! Demeter::Terrain *ter = world->getGameView()->getWorldView()->getTerrainWrapper()->getTerrain(); if (ter->Pick(screenX, screenY, x, y, z) && --- 229,233 ---- glViewport(vm->getXOffset() + 200, vm->getYOffset(), vm->getWidth() -200, vm->getHeight()); ! Demeter::Terrain *ter = getWorldView()->getTerrainWrapper()->getTerrain(); if (ter->Pick(screenX, screenY, x, y, z) && Index: GameView.h =================================================================== RCS file: /cvsroot/bastion/bastion/src/interface/GameView.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** GameView.h 30 Jun 2004 13:52:37 -0000 1.26 --- GameView.h 30 Jun 2004 18:49:30 -0000 1.27 *************** *** 56,70 **** public: ! GameView(); ! ! /** \brief Inicjalizacja calego widoku gry. ! \param worldModel zainicjalizowany model swiata gry na ktorym ma sie toczyc rozgrywka. ! */ ! void init(World *worldModel); ! ! /** Dokonczenie inicjalizacji. Powinno byc wykonane przed pierwszym wyrysowaniem widoku gry. ! Brzydota.*/ ! void init2(); ! /** \brief DEPRECATED. Patrz ScreenManager::go(). Opdalenie petli glownej gry */ --- 56,61 ---- public: ! /** Tworzy wizualizacje gry na postawie zadanego modelu swiata */ ! GameView(World *worldModel); /** \brief DEPRECATED. Patrz ScreenManager::go(). Opdalenie petli glownej gry */ *************** *** 105,108 **** --- 96,109 ---- protected: + /** \brief Inicjalizacja calego widoku gry. + \param worldModel zainicjalizowany model swiata gry na ktorym ma sie toczyc rozgrywka. + */ + void init(World *worldModel); + + /** Dokonczenie inicjalizacji. Powinno byc wykonane przed pierwszym wyrysowaniem widoku gry. + Brzydota.*/ + void init2(); + + // EventDispatcher *eventDispatcher; |