Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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
		}
	}