#pragma once #include "World.h" #include "framework/Core.h" #include namespace ly { class Application { public: Application(); void Run(); template weak LoadWorld(); 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; }; template inline weak Application::LoadWorld() { shared newWorld{new WorldType{this}}; currentWorld = newWorld; currentWorld->BeginPlayInternal(); return newWorld; } } // namespace ly