aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c62
1 files changed, 46 insertions, 16 deletions
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();