[Add] Selected list thingy actually renders. You can focus it too.
This commit is contained in:
parent
f0fa480fb4
commit
9ac872aac4
@ -20,6 +20,8 @@ glColour cRed = { .r = 0.80, .g = 0.20, .b = 0.20, .a = 1 };
|
|||||||
// Game specific.
|
// Game specific.
|
||||||
glColour cConsole = { .r = 0.1, .g = 0.9, .b = 0.1, .a = 1. };
|
glColour cConsole = { .r = 0.1, .g = 0.9, .b = 0.1, .a = 1. };
|
||||||
glColour cDConsole = { .r = 0.0, .g = 0.7, .b = 0.0, .a = 1. };
|
glColour cDConsole = { .r = 0.0, .g = 0.7, .b = 0.0, .a = 1. };
|
||||||
|
// Toolkit.
|
||||||
|
glColour cHilight = { .r = 0.1, .g = 0.9, .b = 0.1, .a = 0.3 };
|
||||||
// Objects
|
// Objects
|
||||||
glColour cInert = { .r = 0.6, .g = 0.6, .b = 0.6, .a = 1. };
|
glColour cInert = { .r = 0.6, .g = 0.6, .b = 0.6, .a = 1. };
|
||||||
glColour cNeutral = { .r = 0.9, .g = 1.0, .b = 0.3, .a = 1. };
|
glColour cNeutral = { .r = 0.9, .g = 1.0, .b = 0.3, .a = 1. };
|
||||||
|
@ -29,6 +29,8 @@ extern glColour cRed;
|
|||||||
// Game specific.
|
// Game specific.
|
||||||
extern glColour cConsole;
|
extern glColour cConsole;
|
||||||
extern glColour cDConsole;
|
extern glColour cDConsole;
|
||||||
|
// Toolkit.
|
||||||
|
extern glColour cHilight;
|
||||||
// Objects.
|
// Objects.
|
||||||
extern glColour cInert;
|
extern glColour cInert;
|
||||||
extern glColour cNeutral;
|
extern glColour cNeutral;
|
||||||
|
@ -58,7 +58,7 @@ static void commodity_exchange(void) {
|
|||||||
"Close", commodity_exchange_close);
|
"Close", commodity_exchange_close);
|
||||||
|
|
||||||
window_addList(secondary_wid, 20, -40, COMMODITY_WIDTH-30, COMMODITY_HEIGHT-80-BUTTON_HEIGHT,
|
window_addList(secondary_wid, 20, -40, COMMODITY_WIDTH-30, COMMODITY_HEIGHT-80-BUTTON_HEIGHT,
|
||||||
"lstGoods", goods, ngoods, -1);
|
"lstGoods", goods, ngoods, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void commodity_exchange_close(char* str) {
|
static void commodity_exchange_close(char* str) {
|
||||||
|
@ -183,6 +183,10 @@ void window_addList(const unsigned int wid, const int x, const int y,
|
|||||||
else wgt->x = (double) x;
|
else wgt->x = (double) x;
|
||||||
if(y < 0) wgt->y = wdw->h - wgt->h + y;
|
if(y < 0) wgt->y = wdw->h - wgt->h + y;
|
||||||
else wgt->y = (double) y;
|
else wgt->y = (double) y;
|
||||||
|
|
||||||
|
if(wdw->focus == -1)
|
||||||
|
// Initialize the focus.
|
||||||
|
toolkit_nextFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return pointer to newly allocated widget.
|
// Return pointer to newly allocated widget.
|
||||||
@ -681,9 +685,13 @@ static void toolkit_renderList(Widget* lst, double bx, double by) {
|
|||||||
toolkit_drawRect(x, y, lst->w, lst->h, &cWhite, NULL);
|
toolkit_drawRect(x, y, lst->w, lst->h, &cWhite, NULL);
|
||||||
|
|
||||||
// Inner outline.
|
// Inner outline.
|
||||||
toolkit_drawOutline(x, y, lst->w, lst->h, 1., lc, c);
|
toolkit_drawOutline(x, y, lst->w, lst->h, 0., lc, c);
|
||||||
// Outter outline.
|
// Outter outline.
|
||||||
toolkit_drawOutline(x, y, lst->w, lst->h, 2., oc, NULL);
|
toolkit_drawOutline(x, y, lst->w, lst->h, 1., oc, NULL);
|
||||||
|
|
||||||
|
// Draw selected.
|
||||||
|
toolkit_drawRect(x, y-1.+lst->h-(1+lst->dat.lst.selected-lst->dat.lst.pos)*(gl_defFont.h+3.),
|
||||||
|
lst->w, gl_defFont.h+2., &cHilight, NULL);
|
||||||
|
|
||||||
// Draw content.
|
// Draw content.
|
||||||
tx = (double)gl_screen.w/2. + x+2.;
|
tx = (double)gl_screen.w/2. + x+2.;
|
||||||
@ -803,6 +811,10 @@ static int toolkit_keyEvent(SDL_Event* event) {
|
|||||||
if(event->type == SDL_KEYDOWN)
|
if(event->type == SDL_KEYDOWN)
|
||||||
toolkit_triggerFocus();
|
toolkit_triggerFocus();
|
||||||
return 1;
|
return 1;
|
||||||
|
case SDLK_UP:
|
||||||
|
case SDLK_DOWN:
|
||||||
|
// TODO: list up/down.
|
||||||
|
return 0;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -817,7 +829,8 @@ static void toolkit_nextFocus(void) {
|
|||||||
else if(wdw->focus >= wdw->nwidgets)
|
else if(wdw->focus >= wdw->nwidgets)
|
||||||
wdw->focus = -1;
|
wdw->focus = -1;
|
||||||
else if((++wdw->focus+1) && // Just increment.
|
else if((++wdw->focus+1) && // Just increment.
|
||||||
(wdw->widgets[wdw->focus].type == WIDGET_BUTTON))
|
((wdw->widgets[wdw->focus].type == WIDGET_BUTTON) ||
|
||||||
|
(wdw->widgets[wdw->focus].type == WIDGET_LIST)))
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
toolkit_nextFocus();
|
toolkit_nextFocus();
|
||||||
|
Loading…
Reference in New Issue
Block a user