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

@ -2,24 +2,28 @@
#define BUCKET_H_ #define BUCKET_H_
#include "raylib.h" #include "raylib.h"
#define SPRITE 0
#define TILE 1
typedef struct Sprite Sprite; typedef struct Sprite Sprite;
typedef struct Tile Tile; typedef struct Tile Tile;
typedef struct Bucket Bucket;
typedef struct Bucket{ typedef struct Bucket{
int type; // 0: Sprite, 1: Tile int type;
Sprite *sprite; Sprite *sprite;
Tile *tile; Tile *tile;
float depth; float depth;
Bucket *next; struct Bucket *left;
Bucket *prev; struct Bucket *right;
} Bucket; } 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 #endif

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

@ -1,6 +1,6 @@
CC = gcc CC = gcc
FLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 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) spiel: $(OBJS)
$(CC) -o spiel $(OBJS) $(FLAGS) $(CC) -o spiel $(OBJS) $(FLAGS)
@ -35,8 +35,5 @@ animationHandler.o: Textures/animationHandler.c
bucket.o: DepthSorting/bucket.c bucket.o: DepthSorting/bucket.c
$(CC) -c DepthSorting/bucket.c $(FLAGS) $(CC) -c DepthSorting/bucket.c $(FLAGS)
mergeSort.o: DepthSorting/mergeSort.c
$(CC) -c DepthSorting/mergeSort.c $(FLAGS)
clean: clean:
rm *.o spiel rm *.o spiel

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

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

Loading…
Cancel
Save