Beispiel #1
0
void UI_DrawLoadPanel(qboolean ownerdraw, qboolean uihack)
{
	static qboolean inside = qfalse;

	// to avoid a flickering screen on widescreens, we erase it before drawing onto it..
	if (((float)(DC->glconfig.vidWidth) / DC->glconfig.vidHeight) != RATIO43)
	{
		float xoffset = Cui_WideXoffset() * DC->xscale;

		trap_R_DrawStretchPic(0, 0, xoffset, DC->glconfig.vidHeight, 0, 0, 1, 1, DC->registerShaderNoMip("gfx/2d/backtile"));
		trap_R_DrawStretchPic(DC->glconfig.vidWidth - xoffset, 0, xoffset, DC->glconfig.vidHeight, 0, 0, 1, 1, DC->registerShaderNoMip("gfx/2d/backtile"));
	}

	if (inside)
	{
		if (!uihack && trap_Cvar_VariableValue("ui_connecting"))
		{
			trap_Cvar_Set("ui_connecting", "0");
		}
		return;
	}

	connect_ownerdraw = ownerdraw;

	inside = qtrue;

	if (!bg_loadscreeninited)
	{
		trap_R_RegisterFont("ariblk", 27, &bg_loadscreenfont1);
		trap_R_RegisterFont("courbd", 30, &bg_loadscreenfont2);

		BG_PanelButtonsSetup(loadpanelButtons);
		C_PanelButtonsSetup(loadpanelButtons, Cui_WideXoffset());   // convert to possible widescreen coordinates..

		bg_loadscreeninited = qtrue;
	}

	BG_PanelButtonsRender(loadpanelButtons);

	if (!uihack && trap_Cvar_VariableValue("ui_connecting"))
	{
		trap_Cvar_Set("ui_connecting", "0");
	}

	inside = qfalse;
}
void UI_DrawLoadPanel(qboolean ownerdraw, qboolean uihack)
{
	static qboolean inside = qfalse;

	if (inside)
	{
		if (!uihack && trap_Cvar_VariableValue("ui_connecting"))
		{
			trap_Cvar_Set("ui_connecting", "0");
		}
		return;
	}

	connect_ownerdraw = ownerdraw;

	inside = qtrue;

	if (!bg_loadscreeninited)
	{
		trap_R_RegisterFont("ariblk", 27, &bg_loadscreenfont1);
		trap_R_RegisterFont("courbd", 30, &bg_loadscreenfont2);

		BG_PanelButtonsSetup(loadpanelButtons);
		C_PanelButtonsSetup(loadpanelButtons, Cui_WideXoffset());   // convert to possible widescreen coordinates..

		bg_loadscreeninited = qtrue;
	}

	BG_PanelButtonsRender(loadpanelButtons);

	if (!uihack && trap_Cvar_VariableValue("ui_connecting"))
	{
		trap_Cvar_Set("ui_connecting", "0");
	}

	inside = qfalse;
}
Beispiel #3
0
// menus
void Menu_UpdatePosition(menuDef_t *menu)
{
	int        i;
	float      x, y;
	float      xoffset = Cui_WideXoffset();
	Rectangle  *r;
	qboolean   fullscreenItem = qfalse;
	qboolean   fullscreenMenu = qfalse;
	qboolean   centered       = qfalse;
	const char *menuName      = NULL;
	const char *itemName      = NULL;

	if (menu == NULL)
	{
		return;
	}

	x = menu->window.rect.x;
	y = menu->window.rect.y;

	r              = &menu->window.rect;
	fullscreenMenu = (r->x == 0 && r->y == 0 && r->w == SCREEN_WIDTH && r->h == SCREEN_HEIGHT);
	centered       = (r->x == 16 && r->w == 608);
	menuName       = menu->window.name;

	Cui_WideRect(&menu->window.rect);

	for (i = 0; i < menu->itemCount; ++i)
	{
		itemName = menu->items[i]->window.name;
		// fullscreen menu/item..
		r              = &menu->items[i]->window.rectClient;
		fullscreenItem = (r->x == 0 && r->y == 0 && r->w == SCREEN_WIDTH && r->h == SCREEN_HEIGHT);

		// exclude background clouds as fullscreen item from Cui_WideRect(r) and adjust rect width
		if (!Q_stricmp(itemName, "clouds"))
		{
			r->w = r->w + 2 * xoffset;
		}
		else // all other items
		{
			if (fullscreenItem)
			{
				Cui_WideRect(r);
			}
		}

		// alignment..
		if ((fullscreenMenu && !fullscreenItem) || !Q_stricmp(menuName, "main") || !Q_stricmp(menuName, "ingame_main") || centered)
		{
			// align to right of screen..
			if (!Q_stricmp(itemName, "atvi_logo") ||
			    !Q_stricmp(itemName, "id_logo"))
			{
				Item_SetScreenCoords(menu->items[i], x + 2 * xoffset, y);
			}
			// horizontally centered..
			else if (!Q_stricmp(itemName, "etl_logo") ||
			         !Q_stricmp(itemName, "credits_etlegacy"))
			{
				Item_SetScreenCoords(menu->items[i], x + xoffset, y);
			}
			// normal (left aligned)..
			else if (!Q_stricmp(menuName, "main") || !Q_stricmp(menuName, "ingame_main"))
			{
				Item_SetScreenCoords(menu->items[i], x, y);

			}
			else
			{
				// horizontally centered..
				Item_SetScreenCoords(menu->items[i], x + xoffset, y);
			}
		}
		// normal (left aligned)..
		else
		{
			Item_SetScreenCoords(menu->items[i], x, y);
		}
	}
}