You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.7 KiB

struct InputHandler{
int pressed;
Vector2 rectStart;
int clicked;
Vector2 cursorPos;
} InputHandler;
//TODO: Macht es Sinn ein einzelnes "Game" struct zu haben, das alle möglichen Pointer hat zu allen arrays, camera, textures etc?
// Man hat einen Übergabeparameter mit dem man dann alles verändern kann, man muss nicht alles was man verändern will einzeln übergeben
/*
cursor.x = GetMousePosition().x - texture.width / 2;
cursor.y = GetMousePosition().y - texture.height / 2;
*/
void mouseInput(struct InputHandler *inputHandler, struct Sprite *sprites, int *spriteAmount, Texture2D *texture, Camera2D *camera){
inputHandler->cursorPos.x = GetMousePosition().x;
inputHandler->cursorPos.y = GetMousePosition().y;
if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){
if(inputHandler->pressed == 0){
inputHandler->rectStart.x = GetMousePosition().x;
inputHandler->rectStart.y = GetMousePosition().y;
inputHandler->pressed = 1;
}
}
if(inputHandler->pressed){
float width = GetMousePosition().x - inputHandler->rectStart.x;
float height = GetMousePosition().y - inputHandler->rectStart.y;
if(width + height > 1){
//TODO: Fallunterscheidung für negative width / height?
// Auslagern in eigene Funktion
DrawRectangleLines(inputHandler->rectStart.x, inputHandler->rectStart.y, width, height, GREEN);
}
}
if(IsMouseButtonReleased(MOUSE_BUTTON_LEFT)){
inputHandler->pressed = 0;
float width = GetMousePosition().x - inputHandler->rectStart.x;
float height = GetMousePosition().y - inputHandler->rectStart.y;
if(width + height <= 1){
printf("Klick\n");
addSprite(sprites, spriteAmount, texture, inputHandler->cursorPos.x + (*camera).target.x - (texture->width)/2, inputHandler->cursorPos.y + (*camera).target.y - (texture->height)/2);
}
}
if(IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)){
inputHandler->clicked = 1;
sprites->clicked = 1;
sprites->destX = inputHandler->cursorPos.x + (*camera).target.x - (texture->width)/2;
sprites->destY = inputHandler->cursorPos.y + (*camera).target.y - (texture->height)/2;
}
}
void keyboardInput(struct InputHandler *inputHandler, Camera2D *camera){
if(IsKeyDown(KEY_W)){
(*camera).target.y -= 100.0f * GetFrameTime();
}
if(IsKeyDown(KEY_S)){
(*camera).target.y += 100.0f * GetFrameTime();
}
if(IsKeyDown(KEY_D)){
(*camera).target.x += 100.0f * GetFrameTime();
}
if(IsKeyDown(KEY_A)){
(*camera).target.x -= 100.0f * GetFrameTime();
}
}