diff --git a/Input/inputHandler.c b/Input/inputHandler.c index 579ceb3..a2317ca 100644 --- a/Input/inputHandler.c +++ b/Input/inputHandler.c @@ -58,7 +58,13 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C inputHandler->cursorPos.x = GetMousePosition().x; inputHandler->cursorPos.y = GetMousePosition().y; + // resetting last selected Tile to grass texture + IsometricMapChangeTextureIdOfTile(map, (int) inputHandler->selectedTile.x, (int) inputHandler->selectedTile.y, 0); + // updating selected tile IsometricMapProject(map, camera, inputHandler->cursorPos.x, inputHandler->cursorPos.y, &inputHandler->selectedTile); + // setting currently selected tile to tower + IsometricMapChangeTextureIdOfTile(map, (int) inputHandler->selectedTile.x, (int) inputHandler->selectedTile.y, 1); + if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){ if(inputHandler->pressed == 0){ @@ -80,7 +86,6 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C // Add Sprite if(width + height <= 1){ - //SpriteAdd(sprites, spriteAmount, texture, inputHandler->cursorPos.x + (*camera).target.x - (texture->width)/2, inputHandler->cursorPos.y + (*camera).target.y - (texture->height)/2); ListInsertBack(sprites, SpriteCreate(texture, inputHandler->cursorPos.x + (*camera).target.x - (texture->width)/2, inputHandler->cursorPos.y + (*camera).target.y - (texture->height)/2)); } @@ -126,7 +131,6 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C } } - void keyboardInput(InputHandler *inputHandler, Camera2D *camera){ if(IsKeyDown(KEY_W)){ (*camera).target.y -= 1000.0f * GetFrameTime(); diff --git a/Input/inputHandler.h b/Input/inputHandler.h index 8c989bd..9a08585 100644 --- a/Input/inputHandler.h +++ b/Input/inputHandler.h @@ -10,6 +10,7 @@ typedef struct InputHandler{ Vector2 rectStart; Vector2 cursorPos; Vector2 selectedTile; + int selectedLayer; } InputHandler; void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, Camera2D *camera, IsometricMap *map); @@ -18,4 +19,7 @@ void keyboardInput(InputHandler *inputHandler, Camera2D *camera); void DrawRect(Vector2 rectStart, Vector2 *mousePosition); +void ChangeIdOfSelectedTile(InputHandler *inputHandler, IsometricMap *map, int id); + + #endif \ No newline at end of file diff --git a/IsometricMap/isometricMap.c b/IsometricMap/isometricMap.c index 1b2069f..a9d4469 100644 --- a/IsometricMap/isometricMap.c +++ b/IsometricMap/isometricMap.c @@ -103,6 +103,13 @@ void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId } +void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id){ + if( x < map->sizeX && y < map->sizeY && + x > map->originX && y > map->originY ){ + (map->tiles[x][y])->textureId = id; + } +} + diff --git a/IsometricMap/isometricMap.h b/IsometricMap/isometricMap.h index 7d31680..638ec85 100644 --- a/IsometricMap/isometricMap.h +++ b/IsometricMap/isometricMap.h @@ -27,5 +27,7 @@ Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, i void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp); void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId); +void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id); + #endif \ No newline at end of file diff --git a/IsometricMap/isometricRenderer.c b/IsometricMap/isometricRenderer.c index c961894..abf9343 100644 --- a/IsometricMap/isometricRenderer.c +++ b/IsometricMap/isometricRenderer.c @@ -46,14 +46,8 @@ void IsometricRendererRenderIsometricMap(IsometricMap *map, InputHandler *input) float x = map->originX + offset->x; float y = map->originY + offset->y; - // TODO -> results in Segmentation fault int textureId = map->tiles[i][j]->textureId; - //int textureId = 0; - //if(i == input->selectedTile.x && j == input->selectedTile.y){ - // textureId = 1; - //} - DrawTexture(map->tileTextures[textureId], x, y, WHITE); } } diff --git a/README.md b/README.md index 25277de..72a77fa 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,5 @@ Fantasy Welt oder Realistisch? + Sprites in LinkedList speichern + LinkedList erweitern ++ IsometricMap Array erstellen für die verschiedenen Layer ++ Auswählen von Tiles auf höheren Layern \ No newline at end of file diff --git a/main.c b/main.c index d7f102b..052b2a5 100644 --- a/main.c +++ b/main.c @@ -22,6 +22,14 @@ int main(){ Sprite cursorSprite = {&texture, 450, 225}; InputHandler inputHandler; + inputHandler.pressed = 0; + inputHandler.rectStart.x = 0; + inputHandler.rectStart.y = 0; + inputHandler.cursorPos.x = 0; + inputHandler.cursorPos.y = 0; + inputHandler.selectedTile.x = 0; + inputHandler.selectedTile.y = 0; + inputHandler.selectedLayer = 0; Camera2D camera = { 0 }; camera.target = (Vector2){0, 0};