From 7ccb819f867493f8ec202ea3b39c94c198c64584 Mon Sep 17 00:00:00 2001 From: JustSomePwner Date: Thu, 30 Aug 2018 14:01:54 +0200 Subject: first --- gmod/ui_text_input.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 gmod/ui_text_input.h (limited to 'gmod/ui_text_input.h') diff --git a/gmod/ui_text_input.h b/gmod/ui_text_input.h new file mode 100644 index 0000000..f486106 --- /dev/null +++ b/gmod/ui_text_input.h @@ -0,0 +1,47 @@ +#pragma once +#include "ui_base_item.h" + +namespace ui +{ + class c_text_input : public base_item { + c_text_input( int x, int y, int w, const char* name, size_t max_chars, char* str ) : + base_item( x, y, w, 16, name ), m_length( max_chars ), m_str( str ) { } + + virtual bool is_hovered( ) override { + + } + + void input( ) { + static float last_press[ KEYS_MAX ]{ }; + + int key = g_input.is_any_key_pressed( ); + if ( key == KEYS_BACK ) { + if ( strlen( m_str ) ) { + m_str[ strlen( m_str ) - 1 ] = 0; + } + } + if ( key != KEYS_NONE ) { + float cur_time = GetTickCount( ) * 0.001f; + if ( std::abs( cur_time - last_press[ key ] ) > 0.1f ) { + + auto scan_code = MapVirtualKeyA( key, MAPVK_VK_TO_VSC ); + uword_t ascii; + ToAscii( key, scan_code, 0, &ascii, 0 ); + char str[ 2 ] = { ( char )ascii, 0 }; + strcat_s( m_str, m_length, str ); + + last_press[ key ] = cur_time; + } + } + } + + virtual void render( ) override { + + } + + protected: + size_t m_length{ }; + char* m_str{ }; + + }; +} \ No newline at end of file -- cgit v1.2.3