summaryrefslogtreecommitdiff
path: root/legacy/loader/ui_text_input.h
blob: 243c40b041bdf2cfe437824a30ae233d9253160a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once
#include "ui_base_item.h"

namespace ui
{
	class c_text_input : public base_item {
	public:
		c_text_input( int x, int y, int w, const char* name, size_t max_chars, char* str, bool hidden = false ) :
			base_item( x, y, w, 16, name ), m_text_len( max_chars ), m_text_ptr( str ), m_hidden( hidden ) {
		}

		virtual bool is_hovered( ) override {
			int cursor_x, cursor_y;
			ui_get_cursor_pos( cursor_x, cursor_y );

			int x = get_relative_x( );
			int y = get_relative_y( ) + 12;

			return cursor_x >= x && cursor_x <= x + m_width
				&& cursor_y >= y && cursor_y <= y + m_height;
		}

		virtual int get_total_height( ) const override {
			return m_height + 12;
		}

		virtual void render( ) override;

	protected:
		bool m_was_held{ };
		char* m_text_ptr{ };
		size_t m_text_len{ };
		bool m_active{ };
		float m_last_key_input[ KEYS_LAST ]{ };
		uint8_t m_key_states[ 256 ]{ };
		bool m_hidden{ };
	};
}