diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index 7566dcb..5ebdbc7 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -5,6 +5,7 @@ #include #include #include "../game.h" +#include "../List/list.h" // @param deprecated void IsometricRendererDrawMap(IsometricRenderer *renderer, int height) @@ -43,29 +44,7 @@ void IsometricRendererDrawMap(IsometricRenderer *renderer, int height) } // parameter could be changed to only IsometricMap[] -void IsometricRendererRenderIsometricMap(Game *game) -{ - /* - int n = 0; - int i = 0; - int j = 0; - for(n = 0; n < 10; n++){ - for(i=0; i < game->layers[n]->width; i++){ - for(j=0; j < game->layers[n]->height; j++){ - // if tile had texture id -1, it would be empty tile - if(game->layers[n]->tiles[i][j]->textureId == -1){ - } - else{ - DrawTexture( - game->layers[n]->tileTextures[game->layers[n]->tiles[i][j]->textureId], - game->layers[n]->tiles[i][j]->offsetX, - game->layers[n]->tiles[i][j]->offsetY, - WHITE); - } - } - } - } - */ +void IsometricRendererRenderIsometricMap(Game *game){ int windowWidth = GetScreenWidth(); int windowHeight = GetScreenHeight(); @@ -105,25 +84,31 @@ void IsometricRendererRenderIsometricMap(Game *game) maxJ = game->layers[0]->height; } - int i = 0; - int j = 0; - for (n = 0; n < 10; n++) - { - for (i = itmp; i < maxI; i++) - { - for (j = jtmp; j < maxJ; j++) - { - if (game->layers[n]->tiles[i][j]->textureId == -1) - { + int i = 0; // x + int j = 0; // y + +for (n = 0; n < 10; n++){ + Node *current = game->sprites->head; + for (j = jtmp; j < maxJ; j++){ + + for (i = itmp; i < maxI; i++){ + if (game->layers[n]->tiles[i][j]->textureId == -1){ } - else - { + else{ DrawTexture( game->layers[n]->tileTextures[game->layers[n]->tiles[i][j]->textureId], game->layers[n]->tiles[i][j]->offsetX, game->layers[n]->tiles[i][j]->offsetY, WHITE); } + + // Draw sprites that are over the tile + while(current != 0 && current->data.y <= (j + 1) * game->layers[n]->textureWidth){ + if(current->data.z == n){ + DrawSpriteToWorld(¤t->data, game->layers, game->camera); + } + current = current->next; + } } } } diff --git a/animation.o b/animation.o new file mode 100644 index 0000000..ad026d7 Binary files /dev/null and b/animation.o differ diff --git a/animationHandler.o b/animationHandler.o new file mode 100644 index 0000000..e67c079 Binary files /dev/null and b/animationHandler.o differ diff --git a/game.o b/game.o new file mode 100644 index 0000000..f29972f Binary files /dev/null and b/game.o differ diff --git a/inputHandler.o b/inputHandler.o new file mode 100644 index 0000000..7d10a54 Binary files /dev/null and b/inputHandler.o differ diff --git a/isometricMap.o b/isometricMap.o new file mode 100644 index 0000000..c1456e4 Binary files /dev/null and b/isometricMap.o differ diff --git a/isometricRenderer.o b/isometricRenderer.o new file mode 100644 index 0000000..6d3eff3 Binary files /dev/null and b/isometricRenderer.o differ diff --git a/list.o b/list.o new file mode 100644 index 0000000..ab15d01 Binary files /dev/null and b/list.o differ diff --git a/main.c b/main.c index d1ed27a..67b63c5 100644 --- a/main.c +++ b/main.c @@ -33,22 +33,7 @@ int main(){ BeginMode2D(*(game->camera)); IsometricRendererRenderIsometricMap(game); - ListDrawAllSprites(game->sprites, game->layers, game->camera); - - /* - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - ListInsertSorted(game->sprites, SpriteCreate(game->textures, 1, 250 + c % 500, 250 + c % 500)); - c+=10; - printf("Sprites: %d\n", c); - */ + //ListDrawAllSprites(game->sprites, game->layers, game->camera); EndMode2D(); diff --git a/main.o b/main.o new file mode 100644 index 0000000..acc321e Binary files /dev/null and b/main.o differ diff --git a/spiel b/spiel new file mode 100755 index 0000000..baa1861 Binary files /dev/null and b/spiel differ diff --git a/sprite.c b/sprite.c index dccc7a7..cef0a3d 100644 --- a/sprite.c +++ b/sprite.c @@ -38,7 +38,7 @@ void DrawSpriteToWorld(Sprite *sprite, IsometricMap **map, Camera2D *camera){ // Wir müssen beachten, dass sie nach den unprojezierten Screen-Koordinaten sortiert werden müssen. // Macht es vielleicht sinn den Sprites auch einen Vector mit ihren Screen Koordinaten zu geben? - Vector2 pos = {sprite->x - sprite->texture->width, sprite->y - sprite->texture->height/2}; + Vector2 pos = {sprite->x, sprite->y}; IsometricMapUnproject(map, camera, pos.x, pos.y, sprite->z, &pos); // Also erst ab hier sortieren, mit den Werten aus dem pos Vector // IsometricMap muss auch mit reingerechnet werden -> mögliche Container Lösung steht in der README diff --git a/sprite.o b/sprite.o new file mode 100644 index 0000000..9d61044 Binary files /dev/null and b/sprite.o differ diff --git a/textureatlas.o b/textureatlas.o new file mode 100644 index 0000000..9e80d1e Binary files /dev/null and b/textureatlas.o differ diff --git a/tile.o b/tile.o new file mode 100644 index 0000000..b7873fa Binary files /dev/null and b/tile.o differ