selected Tile is detected, weird drifting

main
JanEhehalt 3 years ago
parent 660ed03429
commit 7051b4bd44

@ -57,7 +57,7 @@ void mouseInput(InputHandler *inputHandler, Sprite *sprites, int *spriteAmount,
inputHandler->cursorPos.x = GetMousePosition().x; inputHandler->cursorPos.x = GetMousePosition().x;
inputHandler->cursorPos.y = GetMousePosition().y; inputHandler->cursorPos.y = GetMousePosition().y;
inputHandler->selectedTile = IsometricMapProject(map, camera, inputHandler->cursorPos.x, inputHandler->cursorPos.y); IsometricMapProject(map, camera, inputHandler->cursorPos.x, inputHandler->cursorPos.y, &inputHandler->selectedTile);
if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){ if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){
if(inputHandler->pressed == 0){ if(inputHandler->pressed == 0){

@ -62,7 +62,7 @@ Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *map, int x, int y){
return &(map->tiles[x][y]); return &(map->tiles[x][y]);
} }
Vector2 IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y){ void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp){
float tileWidthHalf = isometricMap->tileTextures[0].width / 2; float tileWidthHalf = isometricMap->tileTextures[0].width / 2;
float tileHeightHalf = isometricMap->tileTextures[0].height / 2; float tileHeightHalf = isometricMap->tileTextures[0].height / 2;
@ -78,9 +78,11 @@ Vector2 IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x,
//Vector2 tmp = {isoX * tileWidthHalf * 2, isoY * tileHeightHalf * 2}; //Vector2 tmp = {isoX * tileWidthHalf * 2, isoY * tileHeightHalf * 2};
Vector2 tmp = {isoX, isoY}; //Vector2* tmp = (Vector2 *) malloc(sizeof(Vector2));
tmp->x = isoX;
tmp->y = isoY;
return tmp; //return tmp;
} }

@ -17,8 +17,6 @@ typedef struct IsometricMap{
// TODO: // TODO:
void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId); void IsometricMapAddTile(IsometricMap *isometricMap, int x, int y, int textureId);
Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y); Tile * IsometricMapGetTileFromWorldCoordinates(IsometricMap *isometricMap, float x, float y);
// Screen Coordinates -> World Coordinates
Vector2 IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y);
// World Coordinates -> Screen Coordinates // World Coordinates -> Screen Coordinates
Vector2 IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y); Vector2 IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int x, int y);
@ -26,7 +24,8 @@ Vector2 IsometricMapUnproject(IsometricMap *isometricMap, Camera2D *camera, int
IsometricMap * IsometricMapInit(int x, int y); IsometricMap * IsometricMapInit(int x, int y);
Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize); Vector2 * IsometricMapCalcOffsetForTileAt(int x, int y, int textureSize);
Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y); Tile * IsometricMapGetTileFromArrayPosition(IsometricMap *isometricMap, int x, int y);
// Screen Coordinates -> World Coordinates
void IsometricMapProject(IsometricMap *isometricMap, Camera2D *camera, int x, int y, Vector2 *tmp);
#endif #endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -39,10 +39,10 @@ int main(){
BeginMode2D(camera); BeginMode2D(camera);
IsometricRendererRenderIsometricMap(map); IsometricRendererRenderIsometricMap(map, &inputHandler);
Vector2 tmp = IsometricMapProject(map, &camera, inputHandler.cursorPos.x, inputHandler.cursorPos.y); IsometricMapProject(map, &camera, inputHandler.cursorPos.x, inputHandler.cursorPos.y, &inputHandler.selectedTile);
printf("%f %f \n", tmp.x, tmp.y); printf("%f %f \n", inputHandler.selectedTile.x, inputHandler.selectedTile.y);
int i; int i;
for(i=0; i < spriteAmount; i++){ for(i=0; i < spriteAmount; i++){

BIN
main.o

Binary file not shown.

BIN
spiel

Binary file not shown.
Loading…
Cancel
Save