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.
136 lines
3.4 KiB
136 lines
3.4 KiB
#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;
|
|
|
|
}
|