75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
#ifndef _SIMPLEPAD_H_
|
|
#define _SIMPLEPAD_H_
|
|
|
|
#include <string>
|
|
#include <JGui.h>
|
|
#include <JLBFont.h>
|
|
#include "hge/hgeparticle.h"
|
|
|
|
enum SIMPLE_KEYS{
|
|
KPD_A, KPD_B, KPD_C, KPD_D, KPD_E, KPD_F,
|
|
KPD_G, KPD_H, KPD_I, KPD_J, KPD_K, KPD_L,
|
|
KPD_M, KPD_N, KPD_O, KPD_P, KPD_Q, KPD_R,
|
|
KPD_S, KPD_T, KPD_U, KPD_V, KPD_W, KPD_X,
|
|
KPD_Y, KPD_Z, KPD_SPACE, KPD_OK, KPD_CANCEL,
|
|
KPD_DEL, KPD_CAPS, KPD_0, KPD_1, KPD_2, KPD_3,
|
|
KPD_4, KPD_5, KPD_6, KPD_7, KPD_8, KPD_9, KPD_DOT,
|
|
KPD_MAX,
|
|
KPD_NOWHERE = 254,
|
|
KPD_INPUT = 255,
|
|
};
|
|
|
|
struct SimpleKey
|
|
{
|
|
SimpleKey(string _ds, int _id);
|
|
string displayValue;
|
|
unsigned char id;
|
|
unsigned char adjacency[4];
|
|
float mX, mY;
|
|
};
|
|
|
|
class SimplePad
|
|
{
|
|
public:
|
|
friend class GameSettings;
|
|
|
|
string buffer;
|
|
string title;
|
|
unsigned int cursorPos();
|
|
bool isActive()
|
|
{
|
|
return bActive;
|
|
}
|
|
;
|
|
void Render();
|
|
void Update(float dt);
|
|
void pressKey(unsigned char id);
|
|
void CancelEdit();
|
|
|
|
SimplePad();
|
|
~SimplePad();
|
|
|
|
float mX, mY;
|
|
|
|
private:
|
|
void linkKeys(int from, int to, int dir);
|
|
SimpleKey * Add(string display, unsigned char id);
|
|
void MoveSelection(unsigned char dir);
|
|
void Start(string value, string * _dest = NULL);
|
|
string Finish();
|
|
|
|
bool bActive;
|
|
bool bCapslock;
|
|
bool bShowCancel, bShowNumpad;
|
|
bool bCanceled;
|
|
int nbitems;
|
|
unsigned int cursor;
|
|
int selected;
|
|
int priorKey; //The prior key from those places.
|
|
SimpleKey * keys[KPD_MAX];
|
|
string * dest;
|
|
string original; //For cancelling.
|
|
};
|
|
|
|
#endif
|