]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - src/actor_manager.c
Add some basic actorstuffs
[rbdr/super-polarity] / src / actor_manager.c
diff --git a/src/actor_manager.c b/src/actor_manager.c
new file mode 100644 (file)
index 0000000..c9303d2
--- /dev/null
@@ -0,0 +1,57 @@
+//
+//  actor_manager.c
+//  Super Polarity
+//
+//  Created by Ruben Beltran del Rio on 8/14/13.
+//  Copyright (c) 2013 Abuguet. All rights reserved.
+//
+
+#include <stdio.h>
+#include "actor_manager.h"
+
+void actorManagerUpdate(ActorManager *this, Uint32 dt) {
+    ActorNode *head = this->actors;
+    
+    while (head != NULL) {
+        head->val->update(head->val, dt);
+        head = head->next;
+    }
+}
+
+void actorManagerDraw(ActorManager *this) {
+    ActorNode *head = this->actors;
+    
+    while (head != NULL) {
+        head->val->draw(head->val);
+        head = head->next;
+    }
+}
+
+void actorManagerAddActor(ActorManager *this, Actor *actor) {
+    ActorNode *actorNode = malloc(sizeof(ActorNode*));
+    ActorNode **head = &this->actors;
+    ActorNode *temp;
+    actorNode->val = actor;
+    actorNode->next = NULL;
+    
+    if (*head == NULL) {
+        *head = actorNode;
+    } else {
+        temp = *head;
+        
+        while (temp->next != NULL) {
+            temp = temp->next;
+        }
+        temp->next = actorNode;
+    }
+}
+
+ActorManager* createActorManager () {
+    ActorManager *actorManager = malloc(sizeof(ActorManager*));
+    actorManager->actors = NULL;
+    actorManager->update = actorManagerUpdate;
+    actorManager->draw = actorManagerDraw;
+    actorManager->addActor = actorManagerAddActor;
+    
+    return actorManager;
+}
\ No newline at end of file