//CFEKeyboard - [2020-04-13 11:57:46]
#ifndef _CFEKEYBOARD_H_
#define _CFEKEYBOARD_H_

#include "FETU.h"

/*
0011FFEC CFEKeyboard::CFEKeyboard(bool,wchar_t const*,EKeyboardType,float,bool)
00120324 CFEKeyboard::~CFEKeyboard()
00120220 CFEKeyboard::Show()
00120274 CFEKeyboard::SetString(wchar_t const*)
00120320 CFEKeyboard::Setup()
00120378 CFEKeyboard::Hide()
001203CC CFEKeyboard::RecalculateRowOffsets()
001203CE CFEKeyboard::SetPlaceHolderText(wchar_t const*)
001203D0 CFEKeyboard::Process()
00120710 CFEKeyboard::ToggleKeyboard()
00120758 CFEKeyboard::BackSpace()
00120778 CFEKeyboard::GetStringLength()
001207C0 CFEKeyboard::Space()
001207F4 CFEKeyboard::Render()
00120848 CFEKeyboard::CheckMinimumLength()
0012089C CFEKeyboard::GetString()
00120928 CFEKeyboard::ClearTextfieldOnBeginEdit(bool)
0012092C CFEKeyboard::SetMaxNumChars(int)
0012097C CFEKeyboard::GetKeyRect(uchar,TRectI *,bool)
00120E00 CFEKeyboard::GetKeyArrayIndex(uchar)
00120E06 CFEKeyboard::RenderKey(uchar,bool)
00120E08 CFEKeyboard::RenderCursor(float,float,wchar_t *,uint)
00120E6C CFEKeyboard::GetKeyTexture(TImage *,uchar)
00120EA8 CFEKeyboard::GetKeyTextureHandle(TImage *,uchar)
00120EE4 CFEKeyboard::GetKey(uchar,uchar)
00120EF2 CFEKeyboard::HideTextField()
00120EFA CFEKeyboard::HideIfNeeded()
00120F12 CFEKeyboard::ShowTextField()
00120F1A CFEKeyboard::SetEnteringPassword(bool)
00120F20 CFEKeyboard::ShowKeyboard(bool)
00120F30 CFEKeyboard::IsShowing()

//0x878
*/

enum EKeyboardType {
  EKeyboardType_0,
  EKeyboardType_1,
  EKeyboardType_2,
  EKeyboardType_3,
  EKeyboardType_4,
  EKeyboardType_5,
};

class CFEKeyboard {
public:
  CFEKeyboard(bool, wchar_t const *, EKeyboardType, float, bool);  //0011FFEC
  ~CFEKeyboard();                                                  //00120324
  void Show();                                                     //00120220
  void SetString(wchar_t const *);                                 //00120274
  void Setup();                                                    //00120320
  void Hide();                                                     //00120378
  void RecalculateRowOffsets();                                    //001203CC
  void SetPlaceHolderText(wchar_t const *);                        //001203CE
  int Process();                                                   //001203D0
  void ToggleKeyboard();                                           //00120710
  void BackSpace();                                                //00120758
  void GetStringLength();                                          //00120778
  void Space();                                                    //001207C0
  void Render();                                                   //001207F4
  void CheckMinimumLength();                                       //00120848
  const wchar_t *GetString();                                      //0012089C
  void ClearTextfieldOnBeginEdit(bool);                            //00120928
  void SetMaxNumChars(int);                                        //0012092C
  void GetKeyRect(uchar, TRectI *, bool);                          //0012097C
  int GetKeyArrayIndex(uchar);                                     //00120E00
  void RenderKey(uchar, bool);                                     //00120E06
  void RenderCursor(float, float, wchar_t *, uint);                //00120E08
  void GetKeyTexture(TImage *, uchar);                             //00120E6C
  void GetKeyTextureHandle(TImage *, uchar);                       //00120EA8
  void GetKey(uchar, uchar);                                       //00120EE4
  void HideTextField();                                            //00120EF2
  void HideIfNeeded();                                             //00120EFA
  void ShowTextField();                                            //00120F12
  void SetEnteringPassword(bool);                                  //00120F1A
  static void ShowKeyboard(bool);                                  //00120F20
  bool IsShowing();                                                //00120F30

  float f_0;
  float f_4;
  float f_8;
  float f_C;
  char field_10;
  char field_11;
  char field_12;
  char field_13;
  int field_14;
  uint64_t field_18;
  uint64_t field_20;
  char field_28;
  char field_29;
  char field_2A;
  char field_2B;
  int field_2C;  //field_30的count 0x200
  wchar_t pWBuf_30[0x200];
  wchar_t pWbuf_430[0x200];
  EKeyboardType eType_830;
  int field_834;
  int field_838;
  char field_83C;
  char field_83D;
  char field_83E;
  char field_83F;
  float f_840;
  int field_844;
  int field_848;
  int field_84C;
  bool field_850;
  bool field_851;
  bool field_852;
  bool field_853;
  bool b_854;
  char field_855;
  char field_856;
  char field_857;
  int field_858;
  float f_85C;
  float f_860;
  int field_864;
  TRectI rectI_868;

  static bool ms_bShowKeyboard;
};

#endif  //_CFEKEYBOARD_H_