Bomberman-OverlordEngine-x64 / BombermanGame / Scenes / GameplayScene.h
GameplayScene.h
Raw
#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<XMFLOAT3> m_pBushesPositions;
	std::vector<GameObject*> 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<GameObject*> 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<GameObject*> m_pButterflies;
};