You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.5 KiB

#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){
}