#define UI_MOUSEBUTTONS 3
-static int ui_alive, ui_active;
-static float ui_mouse_x, ui_mouse_y;
-static int ui_mousebutton[UI_MOUSEBUTTONS], ui_mouseclick;
-static int ui_keyui, ui_keyitem;
-static ui_item_t *ui_keyrealitem;
+static int ui_alive, ui_active;
+static float ui_mouse_x, ui_mouse_y;
+static int ui_mousebutton[UI_MOUSEBUTTONS], ui_mouseclick;
+static int ui_keyui, ui_keyitem;
+static ui_item_t *ui_keyrealitem;
static ui_t *ui_list[MAX_UI_COUNT];
-static qpic_t *ui_mousepointer;
-
-void ui_start(void)
+static void ui_start(void)
{
- ui_mousepointer = Draw_CachePic("ui/mousepointer.lmp");
- ui_mouse_x = vid.width * 0.5;
- ui_mouse_y = vid.height * 0.5;
+ ui_mouse_x = vid.conwidth * 0.5;
+ ui_mouse_y = vid.conheight * 0.5;
ui_alive = true;
}
-void ui_shutdown(void)
+static void ui_shutdown(void)
{
- ui_mousepointer = NULL;
ui_alive = false;
}
-void ui_newmap(void)
+static void ui_newmap(void)
{
}
+static mempool_t *uimempool;
+
void ui_init(void)
{
+ uimempool = Mem_AllocPool("UI");
+
Cvar_RegisterVariable(&ui_showname);
R_RegisterModule("UI", ui_start, ui_shutdown, ui_newmap);
}
{
if (ui_alive)
{
- ui_mouse_x = bound(0, x, vid.width);
- ui_mouse_y = bound(0, y, vid.height);
+ ui_mouse_x = bound(0, x, vid.conwidth);
+ ui_mouse_y = bound(0, y, vid.conheight);
}
}
{
ui_mouse_x += x;
ui_mouse_y += y;
- ui_mouse_x = bound(0, ui_mouse_x, vid.width);
- ui_mouse_y = bound(0, ui_mouse_y, vid.height);
+ ui_mouse_x = bound(0, ui_mouse_x, vid.conwidth);
+ ui_mouse_y = bound(0, ui_mouse_y, vid.conheight);
}
}
ui_t *ui_create(void)
{
ui_t *ui;
- ui = qmalloc(sizeof(*ui));
+ ui = Mem_Alloc(uimempool, sizeof(*ui));
if (ui == NULL)
Sys_Error("ui_create: unable to allocate memory for new ui\n");
memset(ui, 0, sizeof(*ui));
void ui_free(ui_t *ui)
{
if (ui)
- qfree(ui);
+ Mem_Free(ui);
}
void ui_clear(ui_t *ui)
void ui_item
(
ui_t *ui, char *basename, int number,
- float x, float y, qpic_t *pic,
+ float x, float y, char *picname, char *string,
float left, float top, float width, float height,
void(*leftkey)(void *nativedata1, void *nativedata2, float data1, float data2),
void(*rightkey)(void *nativedata1, void *nativedata2, float data1, float data2),
}
ui->item_count++;
}
+ memset(it, 0, sizeof(ui_item_t));
strncpy(it->name, itemname, 32);
it->flags = 0;
+ if (picname || string)
+ {
+ it->flags |= ITEM_DRAWABLE;
+ it->draw_picname = picname;
+ it->draw_string = string;
+ it->draw_x = x;
+ it->draw_y = y;
+ }
if (leftkey || rightkey || enterkey || mouseclick)
+ {
it->flags |= ITEM_CLICKABLE;
- if (pic)
- it->flags |= ITEM_DRAWABLE;
- it->draw_x = x;
- it->draw_y = y;
- it->click_x = x + left;
- it->click_y = y + top;
- it->click_x2 = it->click_x + width;
- it->click_y2 = it->click_y + height;
- it->leftkey = leftkey;
- it->rightkey = rightkey;
- it->enterkey = enterkey;
- it->mouseclick = mouseclick;
- if (it->mouseclick == NULL)
- it->mouseclick = (void *)it->enterkey;
- if (it->leftkey == NULL)
- it->leftkey = it->enterkey;
- if (it->rightkey == NULL)
- it->rightkey = it->enterkey;
- it->nativedata1 = nativedata1;
- it->nativedata2 = nativedata2;
+ it->click_x = x + left;
+ it->click_y = y + top;
+ it->click_x2 = it->click_x + width;
+ it->click_y2 = it->click_y + height;
+ it->leftkey = leftkey;
+ it->rightkey = rightkey;
+ it->enterkey = enterkey;
+ it->mouseclick = mouseclick;
+ if (it->mouseclick == NULL)
+ it->mouseclick = (void *)it->enterkey;
+ if (it->leftkey == NULL)
+ it->leftkey = it->enterkey;
+ if (it->rightkey == NULL)
+ it->rightkey = it->enterkey;
+ it->nativedata1 = nativedata1;
+ it->nativedata2 = nativedata2;
+ }
}
void ui_item_remove(ui_t *ui, char *basename, int number)
}
#define UI_QUEUE_SIZE 256
-static byte ui_keyqueue[UI_QUEUE_SIZE];
+static qbyte ui_keyqueue[UI_QUEUE_SIZE];
static int ui_keyqueuepos = 0;
void ui_leftkeyupdate(int pressed)
ui_item_t *startitem, *it;
if (ui_alive)
{
- ui_mouse_x = bound(0, ui_mouse_x, vid.width);
- ui_mouse_y = bound(0, ui_mouse_y, vid.height);
+ ui_mouse_x = bound(0, ui_mouse_x, vid.conwidth);
+ ui_mouse_y = bound(0, ui_mouse_y, vid.conheight);
if ((ui_active = ui_isactive()))
{
if (ui->item_count)
for (i = 0, it = ui->items;i < ui->item_count;i++, it++)
if (it->flags & ITEM_DRAWABLE)
- Draw_Pic(it->draw_x, it->draw_y, it->draw_pic);
+ {
+ if (it->draw_picname)
+ DrawQ_Pic(it->draw_x, it->draw_y, it->draw_picname, 0, 0, 1, 1, 1, 1, 0);
+ if (it->draw_string)
+ DrawQ_String(it->draw_x, it->draw_y, it->draw_string, 0, 8, 8, 1, 1, 1, 1, 0);
+ }
if ((it = ui_hititem(ui_mouse_x, ui_mouse_y)))
{
- Draw_AdditivePic(it->draw_x, it->draw_y, it->draw_pic);
- if (ui_showname.value)
- Draw_String(ui_mouse_x, ui_mouse_y + 16, it->name, 9999);
+ if (it->draw_picname)
+ DrawQ_Pic(it->draw_x, it->draw_y, it->draw_picname, 0, 0, 1, 1, 1, 1, DRAWFLAG_ADDITIVE);
+ if (it->draw_string)
+ DrawQ_String(it->draw_x, it->draw_y, it->draw_string, 0, 8, 8, 1, 1, 1, 1, DRAWFLAG_ADDITIVE);
+ if (ui_showname.integer)
+ DrawQ_String(ui_mouse_x, ui_mouse_y + 16, it->name, 0, 8, 8, 1, 1, 1, 1, 0);
}
it = ui_keyrealitem;
- Draw_AdditivePic(it->draw_x, it->draw_y, it->draw_pic);
+ if (it->draw_picname)
+ DrawQ_Pic(it->draw_x, it->draw_y, it->draw_picname, 0, 0, 1, 1, 1, 1, DRAWFLAG_ADDITIVE);
+ if (it->draw_string)
+ DrawQ_String(it->draw_x, it->draw_y, it->draw_string, 0, 8, 8, 1, 1, 1, 1, DRAWFLAG_ADDITIVE);
- Draw_Pic(ui_mouse_x, ui_mouse_y, ui_mousepointer);
+ DrawQ_Pic(ui_mouse_x, ui_mouse_y, "ui/mousepointer.tga", 0, 0, 1, 1, 1, 1, 0);
}
}
+