/********************************************************************
	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
 ********************************************************************/

#pragma once

#include "../GuiComponent.hpp"
#include "../Screen.hpp"
#include "common/Utils.hpp"

class Screen;
class Minecraft;

// @NOTE: This is NOT original Mojang code.

#ifndef ORIGINAL_CODE

class TextInputBox : public GuiComponent
{
public:
	TextInputBox(Screen*, int id, int x, int y, int width = 200, int height = 12, const std::string& placeholder = "", const std::string& text = "");

	void init(Font* pFont);
	void setEnabled(bool bEnabled);
	void keyPressed(Minecraft*, int key);
	void charPressed(int chr);
	void render();
	void tick();
	void setFocused(bool b);
	void onClick(int x, int y);
	bool clicked(int x, int y);

public:
	int m_ID;
	int m_xPos;
	int m_yPos;
	int m_width;
	int m_height;
	std::string m_placeholder;
	std::string m_text;
	bool m_bFocused;
	bool m_bEnabled;
	bool m_bCursorOn;
	int m_insertHead;
	int m_lastFlashed;
	Font* m_pFont;
	Screen* m_pParent;
};

#endif
