BubbleBobbleRemake / BubbleBobble / GameCommands.h
GameCommands.h
Raw
#pragma once
#include "Command.h"

class ISoundSystem;
namespace dae
{
	class PlayerComponent;
	class MM_Confirm final : public Command
	{
	public:
		MM_Confirm(GameObject* pGameObject, ISoundSystem& pSoundSystem, unsigned short soundId, float volume)
			: Command(pGameObject)
			, m_SoundId{ soundId }
			, m_Volume{ volume }
			, m_pSoundSystem{ pSoundSystem }
		{};

		~MM_Confirm() override = default;
		void Execute() override;

	private:
		unsigned short m_SoundId;
		float m_Volume;
		ISoundSystem& m_pSoundSystem;
	};

	class MM_Select final : public Command
	{
	public:
		MM_Select(GameObject* pGameObject, int selectionChange)
			: Command(pGameObject)
			, m_SelectionChange{ selectionChange }
		{};

		~MM_Select() override = default;
		void Execute() override;

	private:
		int m_SelectionChange;
	};

	class MM_Back final : public Command
	{
	public:
		MM_Back(GameObject* pGameObject)
			: Command(pGameObject)
		{};

		~MM_Back() override = default;
		void Execute() override;
	};

	class NextLevelCommand final : public Command
	{
	public:
		NextLevelCommand(GameObject* pGameObject, bool isIntro = false, bool isGameOver = false)
			: Command(pGameObject)
			, m_IsIntro{ isIntro }
			, m_IsGameOver{ isGameOver }
		{};
		~NextLevelCommand() override = default;

		void Execute() override;

	private:
		bool m_IsIntro{};
		bool m_IsGameOver{};
	};

	class MovePlayerCommand final : public Command
	{
	public:
		MovePlayerCommand(GameObject* pGameObject, float dirX, float dirY);
		~MovePlayerCommand() override = default;

		void Execute() override;
	private:
		PlayerComponent* m_pPlayerComponent;
		float m_DirX;
		float m_DirY;
	};

	class ShootBubblePlayerCommand final : public Command
	{
	public:
		ShootBubblePlayerCommand(GameObject* pGameObject);
		~ShootBubblePlayerCommand() override = default;

		void Execute() override;
	private:
		PlayerComponent* m_pPlayerComponent;
	};
}