- [FIX] Ja eix correctament del editor
- [NEW] Més gràfics - [NEW] Ara es pot modificar el valor dels camps escribint el numero
This commit is contained in:
@@ -6,7 +6,14 @@
|
||||
|
||||
namespace ui
|
||||
{
|
||||
static bool select = false;
|
||||
static int current_spin = -1;
|
||||
static int selected_spin = -1;
|
||||
static int hovering_spin = -1;
|
||||
|
||||
void start()
|
||||
{
|
||||
current_spin = -1;
|
||||
}
|
||||
|
||||
void label(const char *label, const int x, const int y, const int w, const int h, const int color)
|
||||
{
|
||||
@@ -121,14 +128,20 @@ namespace ui
|
||||
|
||||
const char *spin(const char *lbl, const int x, const int y, const int w, const int h)
|
||||
{
|
||||
current_spin++;
|
||||
const int mx = draw::getLocalX(input::mouseX());
|
||||
const int my = draw::getLocalY(input::mouseY());
|
||||
//const bool btnDown = input::mouseBtn(1) || input::mouseBtn(3);
|
||||
const bool inside = (mx>=x) && (mx<x+w) && (my>=y) && (my<y+h);
|
||||
if (inside && current_spin!=hovering_spin)
|
||||
{
|
||||
hovering_spin=current_spin;
|
||||
selected_spin=-1;
|
||||
}
|
||||
//const int txt_size = strlen(label)*4;
|
||||
//const int txt_x = x+(w-txt_size)/2;
|
||||
char label[100];
|
||||
if (!select) {
|
||||
if (current_spin!=selected_spin) {
|
||||
label[0]='0'; label[1]='\0';
|
||||
} else {
|
||||
strcpy(label, lbl);
|
||||
@@ -138,7 +151,7 @@ namespace ui
|
||||
draw::fillrect(x, y, w, h);
|
||||
draw::color(WHITE);
|
||||
draw::rect(x, y, w, h);
|
||||
draw::print(label, x+3, y+3, PAPER, 0);
|
||||
draw::print(lbl, x+3, y+3, PAPER, 0);
|
||||
|
||||
if (inside)
|
||||
{
|
||||
@@ -146,20 +159,24 @@ namespace ui
|
||||
draw::rect(x+1, y+1, w-2, h-2);
|
||||
const uint8_t key = input::getKeyPressed();
|
||||
if (key==SDL_SCANCODE_BACKSPACE) {
|
||||
selected_spin=current_spin;
|
||||
strcpy(temp, label); const int size = strlen(label);
|
||||
temp[size-1] = '\0';
|
||||
return temp;
|
||||
} else if (key==SDL_SCANCODE_0) {
|
||||
} else if (key==SDL_SCANCODE_0 || key==SDL_SCANCODE_KP_0) {
|
||||
selected_spin=current_spin;
|
||||
strcpy(temp, label); const int size = strlen(label);
|
||||
temp[size] = '0'; temp[size+1] = '\0';
|
||||
return temp;
|
||||
} else if (key>=SDL_SCANCODE_1 && key<=SDL_SCANCODE_9) {
|
||||
} else if ( (key>=SDL_SCANCODE_1 && key<=SDL_SCANCODE_9) || (key>=SDL_SCANCODE_KP_1 && key<=SDL_SCANCODE_KP_9) ) {
|
||||
selected_spin=current_spin;
|
||||
strcpy(temp, label); const int size = strlen(label);
|
||||
temp[size] = key+19; temp[size+1] = '\0';
|
||||
temp[size] = key<40 ? key+19 : key-40; temp[size+1] = '\0';
|
||||
return temp;
|
||||
}
|
||||
const int wheel = input::mouseWheel();
|
||||
if (wheel != 0) {
|
||||
selected_spin=current_spin;
|
||||
const int value = SDL_atoi(lbl)+wheel*(input::keyDown(SDL_SCANCODE_LCTRL)?32:1);
|
||||
SDL_itoa(value, temp, 10);
|
||||
return temp;
|
||||
@@ -191,10 +208,4 @@ namespace ui
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void selected(const bool value)
|
||||
{
|
||||
select = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user