diff --git a/DepthSorting/bucket.c b/DepthSorting/bucket.c index 9f01fea..e759100 100644 --- a/DepthSorting/bucket.c +++ b/DepthSorting/bucket.c @@ -5,23 +5,20 @@ #include "../IsometricMap/tile.h" -#define TEXTUREWIDTH 32; -#define TEXTUREHEIGHT 32; - Bucket * BucketInit(Sprite *sprite, Tile *tile){ Bucket *bucket = (Bucket *) malloc(sizeof(Bucket)); if(sprite != 0){ bucket->type = 0; bucket->sprite = sprite; bucket->tile = 0; - bucket->depth = sprite->x + sprite->y + 0.001 * sprite->z; + bucket->depth = sprite->x + sprite->y + sprite->z; return bucket; } else if(tile != 0){ bucket->type = 1; bucket->sprite = 0; bucket->tile = tile; - bucket->depth = tile->x * TEXTUREWIDTH + tile->y * TEXTUREHEIGHT + tile->z; + bucket->depth = tile->x * 32 + tile->y * 32 + tile->z; return bucket; } return 0; diff --git a/DepthSorting/mergeSort.c b/DepthSorting/mergeSort.c index 6cf3ad6..a9a024a 100644 --- a/DepthSorting/mergeSort.c +++ b/DepthSorting/mergeSort.c @@ -1,7 +1,9 @@ #include "bucket.h" +#include "stdlib.h" +#include "stdio.h" +/* void MergeSort(Bucket *liste[], int groesse){ - if(groesse > 1){ Bucket *haelfte1[groesse/2]; @@ -15,8 +17,8 @@ void MergeSort(Bucket *liste[], int groesse){ MergeSort(haelfte1,groesse/2); MergeSort(haelfte2,(groesse + 1)/2); - Bucket **pos1 = &haelfte1[0]; - Bucket **pos2 = &haelfte2[0]; + Bucket **pos1 = haelfte1; + Bucket **pos2 = haelfte2; for(i = 0; i < groesse; ++i){ if((*pos1)->depth <= (*pos2)->depth){ liste[i] = *pos1; @@ -40,4 +42,15 @@ void MergeSort(Bucket *liste[], int groesse){ } } } - } \ No newline at end of file + + int k = 0; + for(k = 0; k < groesse; k++){ + printf("%f\n", liste[k]->depth); + } + //exit(0); + } +*/ + +void MergeSort(Bucket *liste[], int groesse){ + +} \ No newline at end of file diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 5c63da3..5653868 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -131,8 +131,8 @@ void mouseInput(Game *game){ else if(inputHandler->cursorWorldPos.x > maxWidth){ printf("OutOfBoundsDestination Spawn\n");} else if(inputHandler->cursorWorldPos.y > maxHeight){ printf("OutOfBoundsDestination Spawn\n");} else { - //ListInsertBack(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); - ListInsertSorted(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + ListInsertBack(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); + //ListInsertSorted(sprites, SpriteCreate(game->textures, 1, inputHandler->cursorWorldPos.x, inputHandler->cursorWorldPos.y)); } } diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index c00e483..98e4e20 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -207,6 +207,7 @@ void IsometricMapDraw(Game *game){ } } } + //printf("\n\n\n"); Node *current = game->sprites->head; int extraPixels = 0; @@ -227,13 +228,17 @@ void IsometricMapDraw(Game *game){ } current = current->next; } - MergeSort(buckets, counter); + + int hmmm = counter; + // Merge Sort ist scuffed + MergeSort(buckets, hmmm); //printf("HÄÄÄÄÄÄ\n"); int k = 0; for(k = 0; k < counter; k++){ if(buckets[k]->type == 1){ //printf("Tile begin -"); + //printf("Tile %f\n", buckets[k]->depth); DrawTexture( game->layers[0]->tileTextures[buckets[k]->tile->textureId], buckets[k]->tile->offsetX, @@ -242,11 +247,12 @@ void IsometricMapDraw(Game *game){ //printf("- Tile end \n"); } else if(buckets[k]->type == 0){ - //printf("Sprite begin -"); + //printf("Sprite %f\n", buckets[k]->depth); DrawSpriteToWorld(buckets[k]->sprite, game->layers, game->camera); //printf("- Sprite end \n"); } } + //printf("\n\n"); } \ No newline at end of file diff --git a/List/list.c b/List/list.c index 8395697..c19dba4 100644 --- a/List/list.c +++ b/List/list.c @@ -203,60 +203,6 @@ void ListActAllSprites(Game *game){ } } - // Sorting the sprites by y-coord, bruh - if(counter > 2 && current != game->sprites->tail){ - if(current->data.y < current->prev->data.y){ - Node *prepre = current->prev->prev; - Node *toBack = current->prev; - Node *toFront = current; - Node *back = current->next; - prepre->next = toFront; - toFront->next = toBack; - toFront->prev = prepre; - toBack->prev = toFront; - toBack->next = back; - back->prev = toBack; - } - } - else if(counter > 2 && current == game->sprites->tail){ - if(current->data.y < current->prev->data.y){ - Node *prepre = current->prev->prev; - Node *toBack = current->prev; - Node *toFront = current; - prepre->next = toFront; - toFront->next = toBack; - toFront->prev = prepre; - toBack->prev = toFront; - toBack->next = 0; - game->sprites->tail = toBack; - } - } - else if(counter == 2 && current != game->sprites->tail){ - if(current->data.y < current->prev->data.y){ - Node *toBack = current->prev; - Node *toFront = current; - Node *back = current->next; - toFront->next = toBack; - toBack->prev = toFront; - toBack->next = back; - back->prev = toBack; - toFront->prev = 0; - game->sprites->head = toFront; - } - } - else if(counter == 2 && current == game->sprites->tail){ - if(current->data.y < current->prev->data.y){ - Node *toBack = current->prev; - Node *toFront = current; - toBack->prev = toFront; - toBack->next = 0; - toFront->next = toBack; - toFront->prev = 0; - game->sprites->head = toFront; - game->sprites->tail = toBack; - } - } - SpriteUpdateAnimation(¤t->data); // updating z-position according to the tile the sprite stands on Tile *floorTile = IsometricMapGetTileFromWorldCoordinates(game->layers, current->data.x, current->data.y, 0); diff --git a/game.c b/game.c index 7f66bb7..4cd8ca1 100644 --- a/game.c +++ b/game.c @@ -67,7 +67,7 @@ Game *GameInit() { ((game->layers))[n] = IsometricMapInit(n); } - + /* for (n = 0; n < 10; n++) { for (i = 0; i < game->layers[n]->width; i++) @@ -122,7 +122,15 @@ Game *GameInit() } } } - + */ + n = 0; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0); + } + } // ------- return game;