#pragma once #include #include "framework/Core.h" namespace ly { class World; class Application { public: Application(); void Run(); template weak LoadWorld() { shared newWorld{ new WorldType{this} }; currentWorld = newWorld; currentWorld->BeginPlayInternal(); return newWorld; } private: void TickInternal(float deltaTime); void RenderInternal(); virtual void Render(); virtual void Tick(float deltaTime); sf::RenderWindow mWindow; float mTargetFrameRate; sf::Clock mTickClock; shared currentWorld; }; }