Allow selected widget to be activated by pressing space.
This commit is contained in:
parent
466ca732a5
commit
cc4ac782a9
|
@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
static void loadWidgets(char *filename);
|
static void loadWidgets(char *filename);
|
||||||
static void loadWidgetSet(char *filename);
|
static void loadWidgetSet(char *filename);
|
||||||
static void handleMouse(void);
|
static void handleMouse(void);
|
||||||
|
static void handleKeyboard(void);
|
||||||
static void createOptions(Widget *w, char *options);
|
static void createOptions(Widget *w, char *options);
|
||||||
static void changeSelectedValue(Widget *w, int dir);
|
static void changeSelectedValue(Widget *w, int dir);
|
||||||
static void createSelectButtons(Widget *w);
|
static void createSelectButtons(Widget *w);
|
||||||
|
@ -55,6 +56,8 @@ void doWidgets(void)
|
||||||
if (drawingWidgets)
|
if (drawingWidgets)
|
||||||
{
|
{
|
||||||
handleMouse();
|
handleMouse();
|
||||||
|
|
||||||
|
handleKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
drawingWidgets = 0;
|
drawingWidgets = 0;
|
||||||
|
@ -79,7 +82,7 @@ Widget *getWidget(const char *name, const char *group)
|
||||||
|
|
||||||
void selectWidget(const char *name, const char *group)
|
void selectWidget(const char *name, const char *group)
|
||||||
{
|
{
|
||||||
/*selectedWidget = getWidget(name, group);*/
|
selectedWidget = getWidget(name, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawWidgets(const char *group)
|
void drawWidgets(const char *group)
|
||||||
|
@ -104,6 +107,7 @@ void drawWidgets(const char *group)
|
||||||
{
|
{
|
||||||
playSound(SND_GUI_CLICK);
|
playSound(SND_GUI_CLICK);
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedWidget = w;
|
selectedWidget = w;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,11 +157,6 @@ void drawWidgets(const char *group)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mouseOver)
|
|
||||||
{
|
|
||||||
selectedWidget = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawConfirmMessage(char *message)
|
void drawConfirmMessage(char *message)
|
||||||
|
@ -201,6 +200,8 @@ void setWidgetOption(const char *name, const char *group, const char *value)
|
||||||
|
|
||||||
static void handleMouse(void)
|
static void handleMouse(void)
|
||||||
{
|
{
|
||||||
|
Widget *old;
|
||||||
|
|
||||||
if (selectedWidget && collision(selectedWidget->rect.x, selectedWidget->rect.y, selectedWidget->rect.w, selectedWidget->rect.h, app.mouse.x, app.mouse.y, 1, 1))
|
if (selectedWidget && collision(selectedWidget->rect.x, selectedWidget->rect.y, selectedWidget->rect.w, selectedWidget->rect.h, app.mouse.x, app.mouse.y, 1, 1))
|
||||||
{
|
{
|
||||||
if (app.mouse.button[SDL_BUTTON_LEFT])
|
if (app.mouse.button[SDL_BUTTON_LEFT])
|
||||||
|
@ -212,7 +213,12 @@ static void handleMouse(void)
|
||||||
if (selectedWidget->action)
|
if (selectedWidget->action)
|
||||||
{
|
{
|
||||||
playSound(SND_GUI_SELECT);
|
playSound(SND_GUI_SELECT);
|
||||||
selectedWidget->action();
|
old = selectedWidget;
|
||||||
|
selectedWidget->action();
|
||||||
|
if (old == selectedWidget)
|
||||||
|
{
|
||||||
|
selectedWidget = NULL;
|
||||||
|
}
|
||||||
app.mouse.button[SDL_BUTTON_LEFT] = 0;
|
app.mouse.button[SDL_BUTTON_LEFT] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -226,6 +232,26 @@ static void handleMouse(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handleKeyboard(void)
|
||||||
|
{
|
||||||
|
Widget *old;
|
||||||
|
|
||||||
|
if (app.keyboard[SDL_SCANCODE_SPACE])
|
||||||
|
{
|
||||||
|
if (selectedWidget != NULL && selectedWidget->type == WT_BUTTON)
|
||||||
|
{
|
||||||
|
playSound(SND_GUI_SELECT);
|
||||||
|
old = selectedWidget;
|
||||||
|
selectedWidget->action();
|
||||||
|
if (old == selectedWidget)
|
||||||
|
{
|
||||||
|
selectedWidget = NULL;
|
||||||
|
}
|
||||||
|
app.keyboard[SDL_SCANCODE_SPACE] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void loadWidgets(char *filename)
|
static void loadWidgets(char *filename)
|
||||||
{
|
{
|
||||||
cJSON *root, *node;
|
cJSON *root, *node;
|
||||||
|
|
Loading…
Reference in New Issue