Cleanup, Struktur angepasst

main
JanEhehalt 3 years ago
parent ab2bceafb1
commit e836ba2510

@ -58,7 +58,13 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C
inputHandler->cursorPos.x = GetMousePosition().x; inputHandler->cursorPos.x = GetMousePosition().x;
inputHandler->cursorPos.y = GetMousePosition().y; 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); 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(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){
if(inputHandler->pressed == 0){ if(inputHandler->pressed == 0){
@ -80,7 +86,6 @@ void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, C
// Add Sprite // Add Sprite
if(width + height <= 1){ 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)); 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){ void keyboardInput(InputHandler *inputHandler, Camera2D *camera){
if(IsKeyDown(KEY_W)){ if(IsKeyDown(KEY_W)){
(*camera).target.y -= 1000.0f * GetFrameTime(); (*camera).target.y -= 1000.0f * GetFrameTime();

@ -10,6 +10,7 @@ typedef struct InputHandler{
Vector2 rectStart; Vector2 rectStart;
Vector2 cursorPos; Vector2 cursorPos;
Vector2 selectedTile; Vector2 selectedTile;
int selectedLayer;
} InputHandler; } InputHandler;
void mouseInput(InputHandler *inputHandler, List *sprites, Texture2D *texture, Camera2D *camera, IsometricMap *map); 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 DrawRect(Vector2 rectStart, Vector2 *mousePosition);
void ChangeIdOfSelectedTile(InputHandler *inputHandler, IsometricMap *map, int id);
#endif #endif

@ -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;
}
}

@ -27,5 +27,7 @@ Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, i
void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp); void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp);
void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId); void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId);
void IsometricMapChangeTextureIdOfTile(IsometricMap *map, int x, int y, int id);
#endif #endif

@ -46,14 +46,8 @@ void IsometricRendererRenderIsometricMap(IsometricMap *map, InputHandler *input)
float x = map->originX + offset->x; float x = map->originX + offset->x;
float y = map->originY + offset->y; float y = map->originY + offset->y;
// TODO -> results in Segmentation fault
int textureId = map->tiles[i][j]->textureId; 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); DrawTexture(map->tileTextures[textureId], x, y, WHITE);
} }
} }

@ -15,3 +15,5 @@ Fantasy Welt oder Realistisch?
+ Sprites in LinkedList speichern + Sprites in LinkedList speichern
+ LinkedList erweitern + LinkedList erweitern
+ IsometricMap Array erstellen für die verschiedenen Layer
+ Auswählen von Tiles auf höheren Layern

@ -22,6 +22,14 @@ int main(){
Sprite cursorSprite = {&texture, 450, 225}; Sprite cursorSprite = {&texture, 450, 225};
InputHandler inputHandler; 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 }; Camera2D camera = { 0 };
camera.target = (Vector2){0, 0}; camera.target = (Vector2){0, 0};

Loading…
Cancel
Save