#pragma once class Player; class GameplayScene final : public GameScene { public: enum State { RUNNING, GAME_OVER, LEVEL_WON, PAUSE_MENU }; GameplayScene(); ~GameplayScene() override = default; GameplayScene(const GameplayScene& other) = delete; GameplayScene(GameplayScene&& other) noexcept = delete; GameplayScene& operator=(const GameplayScene& other) = delete; GameplayScene& operator=(GameplayScene&& other) noexcept = delete; void SetState(State state) { m_State = state; } protected: void Initialize() override; void Update() override; void Draw() override; void OnGUI() override; //virtual void OnSceneDeactivated() override; private: enum InputIds { CharacterMoveLeft, CharacterMoveRight, CharacterMoveUp, CharacterMoveDown, CharacterDropBomb }; std::vector m_pBushesPositions; std::vector m_pBushes{}; bool m_bRestartScene{ false }; State m_State{ State::RUNNING }; GameObject* m_pGameOverSprite{ nullptr }; float m_GameOverSpriteTimer{ .5f }; GameObject* m_pContinueSprite{ nullptr }; GameObject* m_pRetrySprite{ nullptr }; GameObject* m_pQuitSprite{ nullptr }; int m_SelectedUI{ 0 }; float m_TileSize{ 20.0f }; SpriteFont* m_pFont{}; GameObject* m_pCrystalSprite{}; GameObject* m_pHeartSprite{}; TransformComponent* m_pCameraTransform{ nullptr }; CameraComponent* m_pCameraComponent{ nullptr }; Player* m_pPlayer{ nullptr }; std::vector m_pBombs{}; XMFLOAT3 m_CameraMin{ 130.f, 220.f, -170.f }; XMFLOAT3 m_CameraMax{ 180.f, 220.f, -170.f }; // Consider creating a refernce for the butterflies for adding future-polish steering behaviours // std::vector m_pButterflies; };