#include "staticobjects.h" #include #include "../game.h" #include "../Sprite/sprite.h" StaticObject * StaticObjectInit(Game *game, int id, int x, int y){ int textureId = 0; switch(id){ case SO_PINETREE: textureId = TE_PINETREE; break; default: printf("WARNING: STATICOBJECTINIT MIT FALSCHER ID AUFGERUFEN\n"); } Sprite *newSprite = SpriteCreate(game->textures, textureId, x, y); SpriteListInsert(game->sprites, newSprite); StaticObject *new = malloc(sizeof(StaticObject)); new->sprite = newSprite; new->id = id; new->next = 0; new->prev = 0; return new; } StaticObjectList * StaticObjectListInit(){ StaticObjectList *new = malloc(sizeof(StaticObjectList)); new->head = 0; new->tail = 0; return new; } void StaticObjectListPrintForward(StaticObjectList *objects){ } void StaticObjectListInsert(StaticObjectList *objects, StaticObject *data){ if(objects->head == 0){ objects->head = data; objects->tail = data; } else{ objects->tail->next = data; data->prev = objects->tail; objects->tail = data; } } void StaticObjectListRemove(Game *game, StaticObject *remove){ if(remove == 0){ printf("WARNING: TRIED TO REMOVE NULLPOINTER\n"); return; } else if(game->objects->head == remove && game->objects->tail == remove){ game->objects->head = 0; game->objects->tail = 0; } else if(game->objects->head == remove){ remove->next->prev = 0; game->objects->head = remove->next; } else if(game->objects->tail == remove){ remove->prev->next = 0; game->objects->tail = remove->prev; } else{ remove->prev->next = remove->next; remove->next->prev = remove->prev; } remove->next = 0; remove->prev = 0; SpriteListRemove(game->sprites, remove->sprite); free(remove->sprite); free(remove); }