main
Jonathan Hager 3 years ago
parent def3f8f5b7
commit c409f0a9ee
Signed by: JonathanHager
GPG Key ID: 34881E488569708C

@ -3,37 +3,67 @@
#include "stdlib.h"
#include "../sprite.h"
#include "../IsometricMap/tile.h"
#include "../main.c"
Bucket * BucketInit(Sprite *sprite, Tile *tile){
Bucket * BucketInit(void *data, int type){
Bucket *bucket = malloc(sizeof(Bucket));
if(sprite != 0){
bucket->type = 0;
bucket->sprite = sprite;
if(type == SPRITE){
bucket->sprite = (Sprite *) data;
bucket->tile = 0;
bucket->depth = sprite->x + sprite->y + sprite->z;
bucket->depth = bucket->sprite->x + bucket->sprite->y + bucket->sprite->z;
}
else if(tile != 0){
bucket->type = 1;
else if(type == TILE){
bucket->sprite = 0;
bucket->tile = tile;
bucket->depth = tile->x * 32 + tile->y * 32 + tile->z;
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->next = 0;
bucket->prev = 0;
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 BucketRemove(Bucket *new){
new->next->prev = new->prev;
new->prev->next = new->next;
void BucketChanged(Bucket *head, Bucket *changed){
free(new);
}

@ -2,24 +2,28 @@
#define BUCKET_H_
#include "raylib.h"
#define SPRITE 0
#define TILE 1
typedef struct Sprite Sprite;
typedef struct Tile Tile;
typedef struct Bucket Bucket;
typedef struct Bucket{
int type; // 0: Sprite, 1: Tile
int type;
Sprite *sprite;
Tile *tile;
float depth;
Bucket *next;
Bucket *prev;
struct Bucket *left;
struct Bucket *right;
} Bucket;
Bucket * BucketInit(Sprite *sprite, Tile *tile);
Bucket * BucketInit(void *data, int type);
void BucketInsert(struct Bucket *head, struct Bucket *new);
void BucketInsert(Bucket *head, Bucket *new);
void BucketRemove(struct Bucket *head, struct Bucket *new);
void BucketRemove(Bucket *new);
void BucketChanged(struct Bucket *head, struct Bucket *changed);
#endif

@ -51,7 +51,7 @@ IsometricMap * IsometricMapInit(int layer){
tmp->offsetX = offset->x;
tmp->offsetY = offset->y;
free(offset);
tmp->sortable = BucketInit(0, tmp);
tmp->sortable = BucketInit(tmp, TILE);
tiles[i][j] = tmp;
}
}

@ -1,6 +1,6 @@
CC = gcc
FLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
OBJS = main.o sprite.o inputHandler.o isometricMap.o list.o game.o textureatlas.o animation.o animationHandler.o bucket.o mergeSort.o
OBJS = main.o sprite.o inputHandler.o isometricMap.o list.o game.o textureatlas.o animation.o animationHandler.o bucket.o
spiel: $(OBJS)
$(CC) -o spiel $(OBJS) $(FLAGS)
@ -35,8 +35,5 @@ animationHandler.o: Textures/animationHandler.c
bucket.o: DepthSorting/bucket.c
$(CC) -c DepthSorting/bucket.c $(FLAGS)
mergeSort.o: DepthSorting/mergeSort.c
$(CC) -c DepthSorting/mergeSort.c $(FLAGS)
clean:
rm *.o spiel

@ -9,11 +9,13 @@
#include "game.h"
#include "DepthSorting/bucket.h"
Game *game;
int main(){
InitWindow(800, 450, "basic window");
Game *game = GameInit();
game = GameInit();
// Hides the operating systems own cursor
HideCursor();
@ -55,7 +57,4 @@ int main(){
return 0;
}
}

@ -69,7 +69,7 @@ Sprite * SpriteCreate(TextureAtlas *atlas, int textureID, int x, int y){
newSprite->hasDestination = 0;
newSprite->selected = 0;
newSprite->sortable = BucketInit(newSprite, 0);
newSprite->sortable = BucketInit(newSprite, SPRITE);
return newSprite;
}

Loading…
Cancel
Save