int main() { if( !initSingletons() ) { std::cout << "Initialization of singletons failed." << std::endl; return 1; } Game game; if( !game.init() ) { std::cout << "Game initialization failed." << std::endl; return 1; } game.run(); closeSingletons(); return 0; }
//pêtla g³ówna gry void CGame::mainLoop() { CMap mapa; mapa.Load("data/xml_data/maps/level_001.xml"); mapa.RespawnMapObjects(true); //rêczna, bezpieczna inicjacja niektórych singleton initSingletons(); //jakaœ funkcja ³aduj¹ca na pocz¹tku zasoby dla poprawy wydajnoœci... //bardzo Ÿle napisane...mo¿na poni¿sze opakowaæ do jakiejœ klasy/metody? CFont font = *gResourceManager.GetFont("data/fonts/tahoma.ttf"); fps_text.setString("Zaczynamy"); fps_text.setFont(font); fps_text.setCharacterSize(20); fps_text.setColor(sf::Color::Blue); fps_text.setPosition(10,10); /* //³adowanie danych z poziomu CResourceManager'a if(gResourceManager.LoadPhysicalTemplate("data/xml_data/units_enemy/destroyer.xml") == false) printf("Data not loaded...\n"); if(gResourceManager.LoadPhysicalTemplate("data/xml_data/units_monster/monster.xml") == false) printf("Data not loaded...\n"); //tworzê fabrykê i inicjujê j¹ danymi pobramymi z CResourceManager'a uprzednio za³adowanymi CEnemyTemplate *p_enemy_template = (CEnemyTemplate*)gResourceManager.GetPhysicalTemplate("data/xml_data/units_enemy/destroyer.xml"); //ten kod jest testowy, bo tworzenie (respawn) obiektów bêdzie z poziomu ³adowania mapy (level'a) CEnemy *p_enemy = p_enemy_template->Create(L"ID_enemy"); if(p_enemy) { p_enemy->SetUseDisplayableBody(false); p_enemy->setSmoothing(false); p_enemy->SetPosition(400, 200); p_enemy->SetScale(2.5f); p_enemy->SetScaleHead(1.0f,1.0f); p_enemy->SetColorHead(sf::Color::Transparent); p_enemy->SetColorShadow(sf::Color::Transparent); p_enemy->SetAnimationHead("backpack_anim"); p_enemy->SetAnimationBody("backpack_anim"); //p_enemy->SetRotationBody(32.f); //p_enemy->SetRotationHead(310); //testy...sprawdziæ...jak to dzia³a... //p_enemy->SetColorHead(sf::Color::Blue); //kolorujemy obiekt body na niebiesko //p_enemy->SetColorBody(sf::Color::Red); //kolorujemy obiekt head na czerwono //p_enemy->RestoreColor(); //odzyskujemy oryginalny kolor body and head //p_enemy->RestoreColorBody(); //odzyskujemy oryginalny kolor body //p_enemy->RestoreColorHead(); //odzyskujemy oryginalny kolor head } //tworzê fabrykê i inicjujê j¹ danymi pobramymi z CResourceManager'a uprzednio za³adowanymi CMonsterTemplate *p_monster_template = (CMonsterTemplate*)gResourceManager.GetPhysicalTemplate("data/xml_data/units_monster/monster.xml"); //ten kod jest testowy, bo tworzenie (respawn) obiektów bêdzie z poziomu ³adowania mapy (level'a) CMonster *p_monster = p_monster_template->Create(L"ID_monster"); if(p_monster) { //p_enemy->SetUseDisplayableBody(false); p_monster->setSmoothing(false); p_monster->SetPosition(550, 200); //p_enemy->SetScale(2.5f); //p_enemy->SetScaleHead(1.0f,1.0f); //p_enemy->SetColorHead(sf::Color::Transparent); //p_enemy->SetColorShadow(sf::Color::Transparent); //p_enemy->SetAnimationHead("backpack_anim"); //p_enemy->SetAnimationBody("backpack_anim"); } */ printf("CGame::Run()\n"); while (m_render_window->isOpen()) { //zegar float elapsedTime = m_clock.GetElapsedTime(); m_clock.Reset(); //mo¿na te¿ skorzystaæ z poni¿szego zegara... //float elapsedTime = gClock.GetElapsedTime(); //gClock.Update(); while (m_render_window->pollEvent(m_event)) { switch (m_event.type) { case sf::Event::Closed: m_render_window->close(); return; case sf::Event::KeyPressed: for (std::set<IKeyListener*>::iterator i = m_keyListeners.begin() ; i != m_keyListeners.end(); i++ ) (*i)->KeyPressed(m_event.key); break; default: break; } } m_render_window->clear(sf::Color(120,128,23)); //m_render_window->clear(sf::Color::White); Update(elapsedTime); //aktualizacja gry m_render_window->draw(fps_text); //statystyki... m_render_window->display(); //wyœwietlenie sceny w oknie } }