Pacman.h 1.36 KiB
#pragma once
#include "../Maze/Maze.h"
#include "../Draw/Texture.h"
class Fireball : public IEntity, public IVisitor {
public:
	Fireball(Direction direction, Room* room);
	void draw_into(sf::RenderWindow& window) const override;
	void prepare_for_drawing() override;
	void move();
	std::unique_ptr<IGameEvent> visit(Food* ptr_food) override;
	std::unique_ptr<IGameEvent> visit(MPpotion* ptr_food) override;
	std::unique_ptr<IGameEvent> visit(Enemy* ptr_enemy) override;
	void set_texture(Texture* ptr_texture) { m_ptr_tex = ptr_texture; }
private:
	size_t m_wall = 0;
	Direction m_direct;
	mutable sf::Sprite m_sprite;
	Texture* m_ptr_tex;
class Pacman :public IEntity, public IVisitor {
public:
	Pacman();
	void move(Direction direction);
	void spell();
	std::unique_ptr<IGameEvent> ultimate();
	std::unique_ptr<IGameEvent> magnit();
	void draw_into(sf::RenderWindow& window) const override;
	void prepare_for_drawing() override;
	std::unique_ptr<IGameEvent> visit(Food* ptr_food) override;
	std::unique_ptr<IGameEvent> visit(MPpotion* ptr_food) override;
	std::unique_ptr<IGameEvent> visit(Enemy* ptr_enemy) override;
	void set_texture(Texture* ptr_texture) { m_ptr_tex = ptr_texture; }
	std::vector<Fireball> m_spells;
private:
	mutable float m_mp = config::PACMAN_START_MP;
	Direction m_dir = Direction::RIGHT;
	sf::Sprite m_sprite;
	Texture* m_ptr_tex;
	sf::Clock m_clock;