Skip to content

Instantly share code, notes, and snippets.

@PoetaKodu
Last active January 29, 2017 18:31
Show Gist options
  • Save PoetaKodu/e223170ce7de4a1aa0d5964e0a390897 to your computer and use it in GitHub Desktop.
Save PoetaKodu/e223170ce7de4a1aa0d5964e0a390897 to your computer and use it in GitHub Desktop.
void CGame::Run() // Glowny kod gry.
{
/* Pamiętamy żeby ustawić odpowiedni status aplikacji. */
m_status = Status::Running;
/* Ciemnoszary kolor. */
sf::Color bgColor(30, 30, 30);
/* By prawidłowo uaktualniać scenę potrzebujemy czasu klatki. */
sf::Clock GameClock;
/* W DeltaTime przechowujemy czas klatki. */
float DeltaTime = 1 / 60.f;
/* Wykonujemy pętlę glówną.
Przerywamy kiedy status zmienimy na CleaningUp
czyli po prostu gdy chcemy zamknąć aplikację.
*/
while (m_status != Status::CleaningUp)
{
/* Aby zmierzyć czas klatki potrzebujemy pobrać czas przy jej rozpoczęciu i przy końcu */
float frameStartTime = GameClock.getElapsedTime().asSeconds();
/* Pętla zdarzeń */
sf::Event windowEvent;
while (m_window.pollEvent(windowEvent))
{
if (windowEvent.type == sf::Event::Closed)
m_status = Status::CleaningUp; // Reszta czyszczenia zostanie wykonana w destruktorze.
}
m_window.clear(bgColor);
/* Uaktualnij wszystkie elementy sceny
A następnie ją wyświetl.
*/
m_currentLevel->Update(DeltaTime);
m_currentLevel->Draw();
/* Całość przenosimy na ekran. */
m_window.display();
/* Aby zmierzyć czas klatki potrzebujemy pobrać czas przy jej rozpoczęciu i przy końcu
Dodatkowo liczymy tutaj ile czasu zajęło obsłużenie logiki i wyświetlenie klatki.
*/
DeltaTime = GameClock.getElapsedTime().asSeconds() - frameStartTime;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment