#include "bucket.h" #include "stdio.h" #include "stdlib.h" #include "../sprite.h" #include "../IsometricMap/tile.h" Bucket * BucketInit(void *data, int type){ Bucket *bucket = malloc(sizeof(Bucket)); if(type == SPRITE){ bucket->sprite = (Sprite *) data; bucket->tile = 0; bucket->depth = bucket->sprite->x + bucket->sprite->y + bucket->sprite->z; } else if(type == TILE){ bucket->sprite = 0; bucket->tile = (Tile *) data; bucket->depth = bucket->tile->x * 32 + bucket->tile->y * 32 + bucket->tile->z; } else{ printf("WARNING: BucketInit called with unknown type! Undefined behavior expected\n"); } bucket->type = type; bucket->left = 0; bucket->right = 0; return bucket; } void BucketInsert(Bucket *head, Bucket *new){ Bucket *current = head; while(current != 0){ if(current->depth > new->depth){ // Rechter Teilbaum if(current->right != 0){ current = current->right; } else{ current->right = new; break; } } else{ // Linker Teilbaum if(current->left != 0){ current = current->left; } else{ current->left = new; break; } } } } void BucketRemove(Bucket *head, Bucket *new){ if(new->left == 0){ } } void BucketChanged(Bucket *head, Bucket *changed){ }