#include #include #include "renderer.h" #include "game.h" #include "timer.h" #include "map.h" #include "mixer.h" #include "transform_system.h" #include "camera_system.h" #include "animation_system.h" #include "character_system.h" #include "input_system.h" void loop(Renderer& renderer) { Game game; game.emplaceSystem(); game.emplaceSystem(); game.emplaceSystem(); game.emplaceSystem(); game.emplaceSystem(); auto map = std::make_unique("../res/map1.tmx", renderer); game.setMap(std::move(map)); int lucasSprite = game.emplaceSprite(); game.getSystem().initSprite(lucasSprite, {32, 32}); game.getSystem().initSprite(lucasSprite, "../res/lucas_anim.txt", renderer); game.getSprite(lucasSprite).controllable = true; game.getSystem().initSprite(lucasSprite); int kumaSprite = game.emplaceSprite(); game.getSystem().initSprite(kumaSprite, {32, 32}); game.getSystem().initSprite(kumaSprite, "../res/kuma_anim.txt", renderer); game.getSystem().addSpriteToParty(lucasSprite, kumaSprite); int dusterSprite = game.emplaceSprite(); game.getSystem().initSprite(dusterSprite, {32, 32}); game.getSystem().initSprite(dusterSprite, "../res/duster_anim.txt", renderer); game.getSystem().addSpriteToParty(lucasSprite, dusterSprite); int boneySprite = game.emplaceSprite(); game.getSystem().initSprite(boneySprite, {32, 32}); game.getSystem().initSprite(boneySprite, "../res/boney_anim.txt", renderer); game.getSystem().addSpriteToParty(lucasSprite, boneySprite); game.getSystem().setFollowingSprite(lucasSprite); game.getSystem().unlockCamera(); renderer.render(game); size_t lastTime = SDL_GetTicks(); while (!game.shouldQuit()) { size_t currentTime = SDL_GetTicks(); size_t frameTime = currentTime - lastTime; lastTime = currentTime; for (System& system : game.systems()) { system.tick(frameTime); } renderer.render(game); } } int main(int, char**) { try { Renderer renderer; loop(renderer); } catch (const sdl_error& ex) { std::cout << "SDL error (" << ex.what() << ")" << std::endl; } return 0; }