Bomberman-OverlordEngine-x64 / BombermanGame / Scenes / MenuScene.cpp
MenuScene.cpp
Raw
#include "stdafx.h"
#include "MenuScene.h"
#include "GameplayScene.h"

MenuScene::MenuScene() :
	GameScene(L"MenuScene") {}

void MenuScene::Initialize()
{
	m_SceneContext.settings.showInfoOverlay = false;
	m_SceneContext.settings.drawPhysXDebug = false;
	m_SceneContext.settings.drawGrid = false;
	m_SceneContext.settings.enableOnGUI = false;

	auto pBackground = new GameObject();
	pBackground->AddComponent(new SpriteComponent(L"Textures/Bomberman/Menu/Background.png", { 0, 0 }, { 1.f,1.f,1.f,1.f }));
	AddChild(pBackground);
	pBackground->GetTransform()->Translate(0, 0, 1.f);

	auto pOverlay = new GameObject();
	pOverlay->AddComponent(new SpriteComponent(L"Textures/Bomberman/Menu/Overlay.png", { 0, 0 }, { 1.f,1.f,1.f,1.f }));
	AddChild(pOverlay);
	pOverlay->GetTransform()->Translate(0, 0, 1.f);

	m_pLogo = new GameObject();
	m_pLogo->AddComponent(new SpriteComponent(L"Textures/Bomberman/Menu/Logo.png", { 0.5f, 0.5f }, { 1.f,1.f,1.f,1.f }));
	AddChild(m_pLogo);
	m_pLogo->GetTransform()->Translate(1166 / 2.f, 130.f, 1.f);

	m_pPlayButton = new GameObject();
	m_pPlayButton->AddComponent(new SpriteComponent(L"Textures/Bomberman/Menu/Play_On.png", { 0.5f, 0.5f }, { 1.f,1.f,1.f,1.f }));
	AddChild(m_pPlayButton);
	m_pPlayButton->GetTransform()->Translate(880.f, 565.f, 1.f);

	m_pQuitButton = new GameObject();
	m_pQuitButton->AddComponent(new SpriteComponent(L"Textures/Bomberman/Menu/Exit_Off.png", { 0.5f, 0.5f }, { 1.f,1.f,1.f,1.f }));
	AddChild(m_pQuitButton);
	m_pQuitButton->GetTransform()->Translate(280.f, 565.f, 1.f);
	m_pQuitButton->GetTransform()->Scale(0.8f);

	//LIGHTS
	m_SceneContext.pLights->SetDirectionalLight({ 382.274f, 218.735f, -181.521f }, { -0.434507f, -0.781122f, 0.448389f });

	//auto& physx = PxGetPhysics();

	//Physics Materials
	//auto pDefaultMat = physx.createMaterial(.5f, .5f, .5f);

	//CAMERA
	//const auto pCamera = m_SceneContext.pCamera;

	auto pCamera = AddChild(new FixedCamera());
	//auto m_pCameraTransform = pCamera->GetTransform();
	auto m_pCameraComponent = pCamera->GetComponent<CameraComponent>();
	m_pCameraComponent->SetActive(true);

	//INPUTS
	m_SceneContext.pInput->AddInputAction(InputAction(0, InputState::down, 'A'));
	m_SceneContext.pInput->AddInputAction(InputAction(1, InputState::down, 'D'));
	m_SceneContext.pInput->AddInputAction(InputAction(2, InputState::pressed, VK_SPACE, - 1, XINPUT_GAMEPAD_A));
	m_SceneContext.pInput->AddInputAction(InputAction(3, InputState::pressed, VK_RETURN));
}

void MenuScene::Update()
{
	const float totalSec = m_SceneContext.pGameTime->GetTotal();
	float scale = sinf(totalSec * XM_PI * .66f) * .1f;
	m_pLogo->GetTransform()->Scale(1 + scale, 1 + scale, 1);

	if (m_SceneContext.pInput->IsActionTriggered(0) || InputManager::GetThumbstickPosition().x < 0)
	{
		m_pQuitButton->GetComponent<SpriteComponent>()->SetTexture(L"Textures/Bomberman/Menu/Exit_On.png");
		m_pQuitButton->GetTransform()->Scale(1);

		m_pPlayButton->GetComponent<SpriteComponent>()->SetTexture(L"Textures/Bomberman/Menu/Play_Off.png");
		m_pPlayButton->GetTransform()->Scale(.8f);

		if (m_SelectedUI != 1)
		{
			//sfx
			FMOD::Sound* sound;
			auto fmodSystem = SoundManager::Get()->GetSystem();
			fmodSystem->createSound("Resources/Sounds/menu_select.wav", FMOD_DEFAULT, 0, &sound);
			fmodSystem->playSound(sound, 0, false, 0);
		}

		m_SelectedUI = 1;
	}

	if (m_SceneContext.pInput->IsActionTriggered(1) || InputManager::GetThumbstickPosition().x > 0)
	{
		m_pPlayButton->GetComponent<SpriteComponent>()->SetTexture(L"Textures/Bomberman/Menu/Play_On.png");
		m_pPlayButton->GetTransform()->Scale(1);

		m_pQuitButton->GetComponent<SpriteComponent>()->SetTexture(L"Textures/Bomberman/Menu/Exit_Off.png");
		m_pQuitButton->GetTransform()->Scale(.8f);

		if (m_SelectedUI != 0)
		{
			//sfx
			FMOD::Sound* sound;
			auto fmodSystem = SoundManager::Get()->GetSystem();
			fmodSystem->createSound("Resources/Sounds/menu_select.wav", FMOD_DEFAULT, 0, &sound);
			fmodSystem->playSound(sound, 0, false, 0);
		}

		m_SelectedUI = 0;
	}

	if (m_SceneContext.pInput->IsActionTriggered(2) || m_SceneContext.pInput->IsActionTriggered(3))
	{
		//sfx
		FMOD::Sound* sound;
		auto fmodSystem = SoundManager::Get()->GetSystem();
		fmodSystem->createSound("Resources/Sounds/menu_click.wav", FMOD_DEFAULT, 0, &sound);
		fmodSystem->playSound(sound, 0, false, 0);

		if (!m_SelectedUI)
		{
			SceneManager::Get()->AddGameScene(new GameplayScene());
			SceneManager::Get()->LastScene();
		}
		else
			PostQuitMessage(0);
	}
}

void MenuScene::Draw()
{
	//Optional
}

void MenuScene::OnGUI()
{
}