]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - src/main.c
Add some basic actorstuffs
[rbdr/super-polarity] / src / main.c
index b51a79d2b4066289518b36c00e51bc6a6f059c75..ae73a22f2177bfe4cdf70ebe81ed9cfcc9270bd7 100644 (file)
@@ -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();