voleur/minigun.c

41 lines
1.1 KiB
C
Raw Normal View History

2024-10-08 10:41:21 +02:00
#include "raylib.h"
#include "raymath.h"
#include "keys.h"
#include "bullet.h"
Texture minigun_texture;
void load_minigun()
{
minigun_texture = LoadTexture("data/minigun.png");
}
float minigun_radius()
{
return fmax(minigun_texture.width, minigun_texture.height)/2;
}
void draw_minigun(Vector2 pos, Camera2D *cam)
{
Texture m = minigun_texture;
Rectangle source = {0, 0, m.width, m.height};
Rectangle dest = {pos.x, pos.y, m.width, m.height};
Vector2 origin = {m.width/2, m.height/2};
float angle = -Vector2LineAngle(pos, GetMousePosition());
angle *= 180/PI;
if (key_down(KC_SHOOT)) {
int speed = 5;
2024-10-08 13:10:13 +02:00
Vector2 world = GetScreenToWorld2D(pos, *cam);
2024-10-08 10:41:21 +02:00
Vector2 toward = Vector2Normalize((Vector2) {cos(angle * PI/180), sin(angle * PI/180)});
2024-10-08 13:10:13 +02:00
cam->target = Vector2Subtract(world, Vector2Scale(toward, speed));
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*1.0)), angle);
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*6.0)), angle);
2024-10-08 10:41:21 +02:00
}
DrawTexturePro(m, source, dest, origin, angle + 90, WHITE);
}