This repository has been archived on 2025-06-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
LotoStatek/headers/Boss.h
2025-01-14 13:52:05 +01:00

73 lines
1.6 KiB
C++

#ifndef BOSS_H
#define BOSS_H
#include "Actor.h"
#include "Bullet.h"
#include "Beam.h"
#include <vector>
#include <SFML/Graphics.hpp>
enum class BossDirection {
Up,
Down,
Left,
Right
};
class Boss : public Actor {
public:
Boss(int x, int y, const sf::Texture &bossTexture, const sf::Texture &bulletTexture, sf::Texture BombaTexture,
sf::RenderWindow *window);
void setPlanszaHeight(int height, int width);
void moveLeft() override;
void moveRight() override;
void moveUp() override;
void moveDown() override;
void shoot() override;
void dropBomb();
void shootLaser();
void move(float deltaX, float deltaY) override;
void update();
void takeDamage();
bool isAlive() const;
std::vector<Bullet>& getBullets() { return bullets; }
std::vector<Bullet>& getBombs() { return bombs; }
bool isShooting() const { return laserBeam != nullptr; }
Beam* getBeam() const { return laserBeam; }
private:
float movementSpeed = 5.5f;
BossDirection direction = BossDirection::Down;
sf::Clock shootClock;
sf::Clock bombClock;
sf::Clock laserClock;
sf::Clock directionClock;
sf::Clock beamDurationClock;
float beamDuration = 1.0f;
sf::Texture bulletTexture;
sf::Texture BombaTexture;
sf::Texture beamTexture;
sf::RenderWindow* window;
Beam* laserBeam = nullptr;
std::vector<Bullet> bullets;
std::vector<Bullet> bombs;
int planszaHeight = 800;
int planszaWidth = 600;
bool isStationary = false;
void setRandomDirection();
void handleBounds();
};
#endif // BOSS_H