/********************************************************************
	Minecraft: Pocket Edition - Decompilation Project
	Copyright (C) 2023 iProgramInCpp
	
	The following code is licensed under the BSD 1 clause license.
	SPDX-License-Identifier: BSD-1-Clause
 ********************************************************************/

#include "ConfirmScreen.hpp"

ConfirmScreen::ConfirmScreen(Screen* pScreen, const std::string& line1, const std::string& line2, int x) :
	m_pScreen(pScreen),
	field_40(x),
	m_textLine1(line1),
	m_textLine2(line2),
	m_btnOK    (0, 0, 0, "Ok"),
	m_btnCancel(1, 0, 0, "Cancel")
{
}

ConfirmScreen::ConfirmScreen(Screen* pScreen, const std::string& line1, const std::string& line2, const std::string& ok, const std::string& cancel, int x) :
	m_pScreen(pScreen),
	field_40(x),
	m_textLine1(line1),
	m_textLine2(line2),
	m_btnOK    (0, 0, 0, ok),
	m_btnCancel(1, 0, 0, cancel)
{
}

// @NOTE: potential memory leak if pScreen is set and not destroyed!

void ConfirmScreen::buttonClicked(Button* pButton)
{
	postResult(pButton->m_buttonId == 0);
}

bool ConfirmScreen::handleBackEvent(bool b)
{
	if (!b)
		postResult(false);

	return true;
}

void ConfirmScreen::init()
{
	m_btnOK.m_xPos = m_width / 2 - 4 - 120;
	m_btnCancel.m_xPos = m_width / 2 + 4;

	m_btnCancel.m_yPos = m_btnOK.m_yPos = m_height / 6 + 72;

	m_btnOK.m_width  = m_btnCancel.m_width = 120;
	m_btnOK.m_height = m_btnCancel.m_height = 24;

	m_buttons.push_back(&m_btnOK);
	m_buttons.push_back(&m_btnCancel);
	m_buttonTabList.push_back(&m_btnOK);
	m_buttonTabList.push_back(&m_btnCancel);
}

void ConfirmScreen::render(int mouseX, int mouseY, float f)
{
	renderBackground();
	drawCenteredString(m_pFont, m_textLine1, m_width / 2, 50, 0xFFFFFF);
	drawCenteredString(m_pFont, m_textLine2, m_width / 2, 70, 0xFFFFFF);
	Screen::render(mouseX, mouseY, f);
}

void ConfirmScreen::postResult(bool b)
{
	m_pScreen->confirmResult(b, field_40);
}


