// // actor_manager.c // Super Polarity // // Created by Ruben Beltran del Rio on 8/14/13. // Copyright (c) 2013 Abuguet. All rights reserved. // #include #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; }