|
|
|
|
@ -55,7 +55,7 @@ IsometricMap * IsometricMapInit(int layer){
|
|
|
|
|
tmp->offsetX = offset->x;
|
|
|
|
|
tmp->offsetY = offset->y;
|
|
|
|
|
free(offset);
|
|
|
|
|
|
|
|
|
|
tmp->sortable = BucketInit(0, tmp);
|
|
|
|
|
tiles[i][j] = tmp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -143,22 +143,18 @@ Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap **isometricMap, floa
|
|
|
|
|
|
|
|
|
|
// Gives the most upper Tile above *tile
|
|
|
|
|
Tile * IsometricMapGetMostUpperTile(IsometricMap **isometricMap, Tile *tile){
|
|
|
|
|
Tile *ptr = (Tile *) malloc(sizeof(Tile *));
|
|
|
|
|
//Tile *ptr = (Tile *) malloc(sizeof(Tile *));
|
|
|
|
|
// hardcoded layer amount
|
|
|
|
|
int n = 9;
|
|
|
|
|
for(n=9;n>=0;n--){
|
|
|
|
|
if( tile->x < isometricMap[n]->width && tile->y < isometricMap[n]->height &&
|
|
|
|
|
tile->x >= 0 && tile->y >= 0 ){
|
|
|
|
|
if(isometricMap[n]->tiles[tile->x][tile->y]->textureId != -1){
|
|
|
|
|
ptr->x = isometricMap[n]->tiles[tile->x][tile->y]->x;
|
|
|
|
|
ptr->y = isometricMap[n]->tiles[tile->x][tile->y]->y;
|
|
|
|
|
ptr->z = isometricMap[n]->tiles[tile->x][tile->y]->z;
|
|
|
|
|
return ptr;
|
|
|
|
|
return isometricMap[n]->tiles[tile->x][tile->y];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ptr = 0;
|
|
|
|
|
return ptr;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// changes to Texture ID of tile at x y on maplayer layer
|
|
|
|
|
@ -204,7 +200,7 @@ void IsometricMapDraw(Game *game){
|
|
|
|
|
if (game->layers[n]->tiles[i][j]->textureId == -1){
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
buckets[counter] = BucketInit(0, game->layers[n]->tiles[i][j]);
|
|
|
|
|
buckets[counter] = game->layers[n]->tiles[i][j]->sortable;
|
|
|
|
|
++counter;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -225,27 +221,30 @@ void IsometricMapDraw(Game *game){
|
|
|
|
|
current->data.y > jtmp &&
|
|
|
|
|
current->data.x < maxI &&
|
|
|
|
|
current->data.y < maxJ){
|
|
|
|
|
buckets[counter] = BucketInit(¤t->data, 0);
|
|
|
|
|
buckets[counter] = current->data.sortable;
|
|
|
|
|
++counter;
|
|
|
|
|
}
|
|
|
|
|
current = current->next;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MergeSort(buckets, counter);
|
|
|
|
|
|
|
|
|
|
//printf("HÄÄÄÄÄÄ\n");
|
|
|
|
|
int k = 0;
|
|
|
|
|
for(k = 0; k < counter; k++){
|
|
|
|
|
if(buckets[k]->type == 1){
|
|
|
|
|
//printf("Tile begin -");
|
|
|
|
|
DrawTexture(
|
|
|
|
|
game->layers[0]->tileTextures[buckets[k]->tile->textureId],
|
|
|
|
|
buckets[k]->tile->offsetX,
|
|
|
|
|
buckets[k]->tile->offsetY,
|
|
|
|
|
WHITE);
|
|
|
|
|
//printf("- Tile end \n");
|
|
|
|
|
}
|
|
|
|
|
else if(buckets[k]->type == 0){
|
|
|
|
|
//printf("Sprite begin -");
|
|
|
|
|
DrawSpriteToWorld(buckets[k]->sprite, game->layers, game->camera);
|
|
|
|
|
//printf("- Sprite end \n");
|
|
|
|
|
}
|
|
|
|
|
//free(buckets[k]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|