X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/blobdiff_plain/ed603039c4a456b37aefe434a3b1a5352362d86b..8534e46e400268c5ceffb3b14f02cef39eedae8f:/src/main.c diff --git a/src/main.c b/src/main.c index b51a79d..ae73a22 100644 --- a/src/main.c +++ b/src/main.c @@ -13,6 +13,9 @@ #include "SDL2/SDL.h" #include "SDL2_image/SDL_image.h" +#include "actor.h" +#include "actor_manager.h" + // TODO: Move these guys to a config header file #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 @@ -22,7 +25,9 @@ SDL_Window *window; SDL_Renderer *renderer; SDL_Texture *benHead; SDL_Rect benRect; -double angle = 0; +bool focus; + +ActorManager *actorManager; void init () { if (SDL_Init(SDL_INIT_VIDEO) < 0) { @@ -47,27 +52,41 @@ void close () { SDL_Quit(); } + +void initActorManager () { + Actor *actor; + Actor *otherActor; + + //test the Actor Manager. + actorManager = createActorManager(); + + actor = createActor(); + actor->pos.x = 55; + actor->pos.y = 24; + actorManager->addActor(actorManager, actor); + + otherActor = createActor(); + otherActor->pos.x=100; + otherActor->pos.y=100; + actorManager->addActor(actorManager, otherActor); + +} + void loadAssets() { - // Load the surface. - SDL_Surface *benSurface; - benSurface = IMG_Load("data/img/static/ben.png"); - benHead = SDL_CreateTextureFromSurface(renderer, benSurface); - benRect.x = 230; - benRect.y = 150; - benRect.w = 180; - benRect.h = 180; - SDL_FreeSurface(benSurface); + initActorManager(); } -void render (SDL_Renderer *renderer) { +void draw (SDL_Renderer *renderer) { SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); SDL_RenderClear(renderer); - SDL_RenderCopyEx(renderer, benHead, NULL, &benRect, angle, NULL, SDL_FLIP_NONE); + + actorManager->draw(actorManager); + SDL_RenderPresent(renderer); } -void update (dt) { - angle = (Uint32)(angle + dt / 5) % 360; +void update (Uint32 dt) { + actorManager->update(actorManager, dt); } int main(int argc, const char * argv[]) @@ -86,6 +105,7 @@ int main(int argc, const char * argv[]) done = 0; + focus = true; // Event Loop. while (!done) { @@ -98,10 +118,20 @@ int main(int argc, const char * argv[]) if (event.type == SDL_QUIT) { done = 1; } + if (event.type == SDL_WINDOWEVENT) { + if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST) { + focus = false; + } + if (event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) { + focus = true; + } + } } - update(dt); - render(renderer); + if (focus) { + update(dt); + draw(renderer); + } endFrame = SDL_GetTicks();