#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; }; }