#include "raylib.h" #include "stdio.h" #include "sprite.h" #include "raymath.h" int main(){ InitWindow(800, 450, "basic window"); Texture2D texture; struct Sprite sprites[100]; int destX = 0; int destY = 0; int clicked = 0; int pressed = 0; Vector2 rectStart = {0,0}; texture = LoadTexture("assets/amulet.png"); int j = 0; struct Sprite cursor = {&texture, 450, 225}; Camera2D camera = { 0 }; camera.target = (Vector2){400, 225}; camera.rotation = 0.0f; camera.zoom = 1.0f; addSprite(sprites, &j, &texture, cursor.x + camera.target.x, cursor.y + camera.target.y); SetTargetFPS(60); while(!WindowShouldClose()){ BeginDrawing(); ClearBackground(RAYWHITE); BeginMode2D(camera); int i; int length = sizeof(sprites)/sizeof(sprites[0]); for(i=0; i < j; i++){ DrawTexture(*sprites[i].texture, sprites[i].x, sprites[i].y, WHITE); } EndMode2D(); DrawTexture(*cursor.texture, cursor.x, cursor.y, WHITE); cursor.x = GetMousePosition().x - texture.width / 2; cursor.y = GetMousePosition().y - texture.height / 2; /* if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){ printf("Klick\n"); addSprite(sprites, &j, &texture, cursor.x + camera.target.x, cursor.y + camera.target.y); } */ if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){ if(pressed == 0){ rectStart.x = GetMousePosition().x; rectStart.y = GetMousePosition().y; pressed = 1; } } if(pressed){ float width = GetMousePosition().x - rectStart.x; float height = GetMousePosition().y - rectStart.y; if(width + height > 1){ //TODO: Fallunterscheidung für negative width / height? // Auslagern in eigene Funktion DrawRectangleLines(rectStart.x, rectStart.y, width, height, GREEN); } } if(IsMouseButtonReleased(MOUSE_BUTTON_LEFT)){ pressed = 0; float width = GetMousePosition().x - rectStart.x; float height = GetMousePosition().y - rectStart.y; if(width + height <= 1){ printf("Klick\n"); addSprite(sprites, &j, &texture, cursor.x + camera.target.x, cursor.y + camera.target.y); } } if(IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)){ clicked = 1; destX = cursor.x + camera.target.x; destY = cursor.y + camera.target.y; } 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(); } if(clicked){ Vector2 movement = {destX - sprites->x, destY - sprites->y}; if(Vector2Length(movement) < 10.0f){ clicked = false; } movement = Vector2Normalize(movement); movement = Vector2Scale(movement, 10); sprites->x += movement.x; sprites->y += movement.y; } EndDrawing(); } CloseWindow(); return 0; }