Пример #1
0
void D_DeveloperDisplay(void)
{
	rcolor sevclr = WHITE;
	int p_nummobjthinkers = 0;
	fixed_t px, py, pz, pa, pp;
	int y = 8;
	mobj_t *mo;

	if (!showstats) {
		glBindCalls = 0;
		vertCount = 0;
		statindice = 0;

		return;
	}

	/*PLAYER INFORMATION */

	px = py = pz = pa = pp = 0;
	if (players[0].cameratarget && gamestate == GS_LEVEL) {
		px = players[0].cameratarget->x / FRACUNIT;
		py = players[0].cameratarget->y / FRACUNIT;
		pz = players[0].cameratarget->z / FRACUNIT;
		pa = players[0].cameratarget->angle >> 24;
		pp = players[0].cameratarget->pitch >> 24;

		Draw_Text(0, y, WHITE, 0.35f, false,
			  "x: %i, y: %i, z: %i, a: %i, p: %i", px, py, pz, pa,
			  pp);
		y += 16;
	}
Пример #2
0
//---------------------------------------------------------
inline void CWKSP_Layer_Legend::_Draw_Label(wxDC &dc, int y, wxString Text, int yAlign)
{
	wxCoord	dx_Text, dy_Text;

	switch( yAlign )
	{
	case TEXTALIGN_TOP:	default:
		yAlign	= TEXTALIGN_TOPLEFT;
		break;

	case TEXTALIGN_YCENTER:
		yAlign	= TEXTALIGN_CENTERLEFT;
		break;

	case TEXTALIGN_BOTTOM:
		yAlign	= TEXTALIGN_BOTTOMLEFT;
		break;
	}

	_Set_Font(dc, FONT_LABEL);

	Draw_Text(dc, yAlign, m_xText, y, Text);

	dc.GetTextExtent(Text, &dx_Text, &dy_Text);

	_Set_Size((m_xText - m_xBox) + dx_Text, 0);
}
Пример #3
0
//---------------------------------------------------------
void CWKSP_Shapes_Point::Draw_Label(CWKSP_Map_DC &dc_Map, CSG_Shape *pShape, const wxString &Label)
{
	TSG_Point_Int	p(dc_Map.World2DC(pShape->Get_Point(0)));

	double	Angle	= m_iLabel_Angle < 0 ? m_Label_Angle : pShape->asDouble(m_iLabel_Angle);

	Draw_Text(dc_Map.dc, m_Label_Align, p.x, p.y, Angle, Label, m_Label_Eff, m_Label_Eff_Color);
}
//---------------------------------------------------------
void CVIEW_ScatterPlot::_Draw_Legend(wxDC &dc, wxRect r)
{
	CSG_Colors	Colors(*m_Options("DENSITY_PAL")->asColors());

	Colors.Set_Count(r.GetHeight());

	for(int i=0, y=r.GetBottom(); i<Colors.Get_Count(); i++, y--)
	{
		Draw_FillRect(dc, Get_Color_asWX(Colors.Get_Color(i)), r.GetLeft(), y, r.GetRight(), y + 1);
	}

//	r.Offset(0, -r.GetHeight());

	Draw_Edge(dc, EDGE_STYLE_SIMPLE, r);

	Draw_Text(dc, TEXTALIGN_BOTTOMLEFT, 2 + r.GetRight(), r.GetBottom(), "0");
	Draw_Text(dc, TEXTALIGN_TOPLEFT   , 2 + r.GetRight(), r.GetTop   (), wxString::Format("%d", (int)m_Count.Get_Max()));
}
Пример #5
0
/* Строим наше меню */
void cDraw::Studio_Menu(int x, int y, LPSTR text, LPDIRECT3DDEVICE9  pDevice)
{
	DrawBox(x, y, 400, 229, DARK3, pDevice);//Основной бокс на котором строится все меню
	Draw_Text(x + 10, x + 7, AliceBlue, text, L_Text);//Заголовок меню находящийся на его шапке

	Draw_Border(x, y, 400, 28, 2, ForestGreen, pDevice);//обводка шапки меню
	Draw_Border(x, y + 28, 400, 199, 2, ForestGreen, pDevice);//обводка пространства под функции, чекбоксы и тп.
	Draw_Border(x, y + 28, 130, 199, 2, ForestGreen, pDevice);//обводка пространства под разделы меню
}
Пример #6
0
//---------------------------------------------------------
inline void CWKSP_Layer_Legend::_Draw_Title(wxDC &dc, int Style, wxString Text)
{
	wxCoord	dx_Text, dy_Text;

	_Set_Font(dc, Style);

	Draw_Text(dc, TEXTALIGN_TOPLEFT, m_Position.x, m_Position.y, Text);

	dc.GetTextExtent(Text, &dx_Text, &dy_Text);

	dy_Text			+= SPACE_VERTICAL;

	_Set_Size(dx_Text, dy_Text);
}
Пример #7
0
void cDraw::Engine_CheckBox(int x, int y, int &Var, LPSTR text, IDirect3DDevice9* pDevice)
{
	Draw_Text(x + 135, y + 2, AliceBlue, text, L_Text);
	Draw_Border(x + 374, y + 2, 18, 15, 2, ForestGreen, pDevice);

	if (IsInBox(x + 128, y, 266, 20))
		Draw_Border(x + 130, y, 265, 20, 1, ForestGreen, pDevice);

	if (IsInBox(x + 374, y + 2, 18, 15))
	if (State_Key(VK_LBUTTON, 1000))
		Var = !Var;

	if (Var)
		DrawBox(x + 377, y + 5, 14, 11, ForestGreen, pDevice);
}
Пример #8
0
void  cDraw::Engine_Button(int x, int y, int &Var, LPSTR text, IDirect3DDevice9* pDevice)
{
	if (IsInBox(x, y, 130, 25))
	{
		DrawBox(x + 3, y + 3, 120, 21, ForestGreen, pDevice);
		if (State_Key(VK_LBUTTON, 1000))
		{
			Varm.Menu0 = Varm.Menu1 = Varm.Menu2 = Varm.Menu3 = Varm.Menu4 = Varm.cvet = 0;
			Var = !Var;
		}
	}

	if (Var)
		DrawBox(x + 3, y + 3, 120, 21, ForestGreen, pDevice);

	Draw_Border(x, y, 124, 25, 2, ForestGreen, pDevice);
	Draw_Text(x + 64, y + 5, AliceBlue, text, C_Text);
}
//---------------------------------------------------------
void CVIEW_ScatterPlot::_Draw_Regression(wxDC &dc, wxRect r)
{
	wxPen	oldPen	= dc.GetPen();

	dc.SetPen(wxPen(
		m_Options("REG_COLOR")->asColor(),
		m_Options("REG_SIZE" )->asInt()
	));

	//-----------------------------------------------------
	double	dx	= (r.GetWidth () - 1.) / m_Trend.Get_Data_XStats().Get_Range();
	double	dy	= (r.GetHeight() - 1.) / m_Trend.Get_Data_YStats().Get_Range();

	//-----------------------------------------------------
	dc.DrawCircle(
		GET_DC_X(m_Trend.Get_Data_XStats().Get_Mean()),
		GET_DC_Y(m_Trend.Get_Data_YStats().Get_Mean()), 2
	);

	double	ex	= m_Trend.Get_Data_XStats().Get_Range() / (double)r.GetWidth();
	double	x	= m_Trend.Get_Data_XMin();

	for(int ix=0, ay, by=0; ix<r.GetWidth(); ix++, x+=ex)
	{
		double	y	= m_Trend.Get_Value(x);

		ay	= by; by = r.GetBottom() - (int)(dy * (y - m_Trend.Get_Data_YMin()));

		if( ix > 0 && r.GetTop() < ay && ay < r.GetBottom() && r.GetTop() < by && by < r.GetBottom() )
		{
			dc.DrawLine(r.GetLeft() + ix - 1, ay, r.GetLeft() + ix, by);
		}
	}

	dc.SetPen(oldPen);

	//-----------------------------------------------------
	Draw_Text(dc, TEXTALIGN_BOTTOMCENTER, r.GetLeft() + r.GetWidth() / 2, r.GetTop(),
		m_Trend.Get_Formula(SG_TREND_STRING_Compact).c_str()
	);
}
Пример #10
0
/* Настройка цвета */
void  cDraw::M1Chams(int x, int y, char *Text, int &Var, DWORD CoLoR1, DWORD CoLoR2, DWORD CoLoR3, DWORD CoLoR4, DWORD CoLoR5, DWORD CoLoR6, DWORD CoLoR7, DWORD CoLoR8, DWORD CoLoR9, DWORD CoLoR10, IDirect3DDevice9* mDevice)
{
	DWORD CoL;
	DWORD R_COL = WHITE;
	DWORD Color = WHITE;
	if (IsInBox(x + 374, y + 2, 18, 15))
	{
		R_COL = ForestGreen;
		Color = ForestGreen;
		if (State_Key(VK_LBUTTON, 1000))
		{
			if (Var >= 0){ Var++; }
		}
		if (State_Key(VK_LBUTTON, 1000))
		{
			if (Var != 0) { Var--; }
		}
	}
	switch (Var)
	{
	case 1: CoL = CoLoR1;      break;
	case 2: CoL = CoLoR2;      break;
	case 3: CoL = CoLoR3;      break;
	case 4: CoL = CoLoR4;      break;
	case 5: CoL = CoLoR5;      break;
	case 6: CoL = CoLoR6;      break;
	case 7: CoL = CoLoR7;      break;
	case 8: CoL = CoLoR8;      break;
	case 9: CoL = CoLoR9;      break;
	case 10: CoL = CoLoR10;      break;
	case 11:                Var = 0;    break;
	}
	if (Var>0)
	{
		DrawBox(x + 377, y + 5, 14, 11, CoL, mDevice);
		Color = ForestGreen;
	}
	
	DrawBorder(x + 374, y + 2, 18, 15, ForestGreen, mDevice);
	Draw_Text(x + 135, y + 2, AliceBlue, Text, L_Text);
}
Пример #11
0
void ST_DrawFPS(int offset)
{
	static int frames;
	static int lasttick = 0;
	static int fps;
	int ticks;
	int n;

	ticks = I_GetTime();
	if (!lasttick) {
		lasttick = ticks;
		frames = fps = 0;
	}

	frames++;

	if (ticks - lasttick >= TICRATE) {
		lasttick = ticks;
		fps = frames;
		frames = 0;
	}
	n = fps;
	Draw_Text(0, offset, WHITE, 0.35f, false, "FPS: %i", n);
}
Пример #12
0
void GameManager::Draw(CDC *cDC)
{
	if (GameStart())
	{
		if (GamePause() == TRUE)
		{
			Draw_Text(cDC, _T("按下回车恢复游戏"), Point(Game_Width / 2, Game_Height / 2));
		}
		else if (GameOver() == TRUE) {
			Draw_Text(cDC, _T("游戏结束"), Point(Game_Width / 2, Game_Height / 2));
		}
		else
		{
			for (int i = Index_Background; i <= Index_Angela; ++i) //Index_Cloud
			{
				CList<GameObject*, GameObject*> *now = GetList(i);
				POSITION pos = now->GetHeadPosition();
				while (pos != NULL)
				{
					now->GetNext(pos)->Draw(cDC);
				}
			}
			if (God()) {
				Draw_Text(cDC, _T("无敌模式已开启,按下F键关闭"), Point(110, 50));
			}
			else {
				Draw_Text(cDC, _T("无敌模式未开启,按下G键开启"), Point(118, 50));
			}
			Draw_Text(cDC, _T("生命值"), PlayerHP(), Point(60, 10));
			Draw_Text(cDC, _T("星星值"), PlayerStars(), Point(48, 30));

		}
	}
	else {

		Draw_Text(cDC,_T("按下回车键开始游戏"),Point(Game_Width/2, Game_Height/2));
	}
}
Пример #13
0
//---------------------------------------------------------
void CWKSP_Layer_Legend::_Draw_Continuum_H(wxDC &dc, int y, double yToDC, double zMin, double zMax, double zFactor, double dz, int dyFont)
{
	int			i, iy, jy, yTick, yText, sx, sy;
	double		z;
	wxString	s;

	yTick	= y + m_dxBox;
	yText	= y + m_dxBox + m_dxTick;

	//-----------------------------------------------------
	for(i=0, z=m_xBox; i<m_pClassify->Get_Class_Count(); i++, z+=yToDC)
	{
		Draw_FillRect(dc, Get_Color_asWX(m_pClassify->Get_Class_Color(i)), (int)(z), y, (int)(z + yToDC), yTick);
	}

	Draw_Edge(dc, EDGE_STYLE_SIMPLE, m_xBox, y, m_xBox + METRIC_HEIGHT, yTick);

	//-----------------------------------------------------
	switch( m_pClassify->Get_Metric_Mode() )
	{
	case METRIC_MODE_NORMAL:	default:
		jy	= METRIC_POS_H(zMin) - METRIC_HEIGHT;
		z	= dz * floor(zMin / dz);
		if( z < zMin )	z	+= dz;

		for(; z<=zMax; z+=dz)
		{
			iy	= METRIC_POS_H(z);
			dc.DrawLine(iy, yTick, iy, yText);

			s	= METRIC_GET_STRING(z, dz);
			dc.GetTextExtent(s, &sx, &sy);

			if( abs(jy - iy) >= (int)(1.25 * sx) )
			{
				jy	= iy;
				Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s);
			}
		}
		break;

	case METRIC_MODE_LOGUP:
		jy	= METRIC_POS_H(zMax) + METRIC_HEIGHT;
		z	= dz * floor(zMax / dz);
		if( z > zMax )	z	-= dz;

		for(; z>=zMin; z-=dz)
		{
			iy	= METRIC_POS_H(z);
			dc.DrawLine(iy, yTick, iy, yText);

			s	= METRIC_GET_STRING(z, dz);
			dc.GetTextExtent(s, &sx, &sy);

			if( abs(jy - iy) >= (int)(1.25 * sx) )
			{
				jy	= iy;
				Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s);
			}

			while( abs(iy - METRIC_POS_H(z - dz)) > 2 * sx )
				dz	*= 0.1;
		}
		break;

	case METRIC_MODE_LOGDOWN:
		jy	= METRIC_POS_H(zMin) - METRIC_HEIGHT;
		z	= dz * floor(zMin / dz);
		if( z < zMin )	z	+= dz;

		for(; z<=zMax; z+=dz)
		{
			iy	= METRIC_POS_H(z);
			dc.DrawLine(iy, yTick, iy, yText);

			s	= METRIC_GET_STRING(z, dz);
			dc.GetTextExtent(s, &sx, &sy);

			if( abs(jy - iy) >= (int)(1.25 * sx) )
			{
				jy	= iy;
				Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s);
			}

			while( abs(iy - METRIC_POS_H(z + dz)) > 2 * sx )
				dz	*= 0.1;
		}
		break;
	}

	//-----------------------------------------------------
	_Set_Size(METRIC_HEIGHT, yText + dyFont);
}
Пример #14
0
//---------------------------------------------------------
bool CWKSP_Map_Graticule::Draw(CWKSP_Map_DC &dc_Map)
{
	if( !Get_Graticule(dc_Map.m_rWorld) || m_Graticule.Get_Count() <= 0 )
	{
		return( false );
	}

	if( !m_Parameters("SHOW_ALWAYS")->asBool() )
	{
		CSG_Parameter_Range	*pRange	= m_Parameters("SHOW_RANGE")->asRange();
		double	dRange	= dc_Map.m_rWorld.Get_XRange() > dc_Map.m_rWorld.Get_YRange() ? dc_Map.m_rWorld.Get_XRange() : dc_Map.m_rWorld.Get_YRange();

		if( dRange < pRange->Get_LoVal() || pRange->Get_HiVal() < dRange )
		{
			return( false );
		}
	}

	//-----------------------------------------------------
	CWKSP_Map_DC	*pDC	= m_Parameters("TRANSPARENCY")->asDouble() > 0.0 ? new CWKSP_Map_DC(dc_Map.m_rWorld, dc_Map.m_rDC, dc_Map.m_Scale, SG_GET_RGB(255, 255, 255)) : NULL;
	CWKSP_Map_DC	&dc		= pDC ? *pDC : dc_Map;

	//-----------------------------------------------------
	wxPen	Pen(m_Parameters("COLOR")->asColor(), m_Parameters("SIZE")->asInt());

	switch( m_Parameters("LINE_STYLE")->asInt() )
	{
	default:
	case  0:	Pen.SetStyle(wxPENSTYLE_SOLID           );	break; // Solid style.
	case  1:	Pen.SetStyle(wxPENSTYLE_DOT             );	break; // Dotted style.
	case  2:	Pen.SetStyle(wxPENSTYLE_LONG_DASH       );	break; // Long dashed style.
	case  3:	Pen.SetStyle(wxPENSTYLE_SHORT_DASH      );	break; // Short dashed style.
	case  4:	Pen.SetStyle(wxPENSTYLE_DOT_DASH        );	break; // Dot and dash style.
	case  5:	Pen.SetStyle(wxPENSTYLE_BDIAGONAL_HATCH );	break; // Backward diagonal hatch.
	case  6:	Pen.SetStyle(wxPENSTYLE_CROSSDIAG_HATCH );	break; // Cross-diagonal hatch.
	case  7:	Pen.SetStyle(wxPENSTYLE_FDIAGONAL_HATCH );	break; // Forward diagonal hatch.
	case  8:	Pen.SetStyle(wxPENSTYLE_CROSS_HATCH     );	break; // Cross hatch.
	case  9:	Pen.SetStyle(wxPENSTYLE_HORIZONTAL_HATCH);	break; // Horizontal hatch.
	case 10:	Pen.SetStyle(wxPENSTYLE_VERTICAL_HATCH  );	break; // Vertical hatch.
//	case 11:	Pen.SetStyle(wxPENSTYLE_STIPPLE         );	break; // Use the stipple bitmap. 
//	case 12:	Pen.SetStyle(wxPENSTYLE_USER_DASH       );	break; // Use the user dashes: see wxPen::SetDashes.
//	case 13:	Pen.SetStyle(wxPENSTYLE_TRANSPARENT     );	break; // No pen is used.
	}

	dc.dc.SetPen(Pen);

	//-----------------------------------------------------
	for(int iLine=0; iLine<m_Graticule.Get_Count(); iLine++)
	{
		CSG_Shape	*pLine	= m_Graticule.Get_Shape(iLine);

		for(int iPart=0; iPart<pLine->Get_Part_Count(); iPart++)
		{
			if( pLine->Get_Point_Count(iPart) > 1 )
			{
				TSG_Point_Int	B, A	= dc.World2DC(pLine->Get_Point(0, iPart));

				for(int iPoint=1; iPoint<pLine->Get_Point_Count(iPart); iPoint++)
				{
					B		= A;
					A		= dc.World2DC(pLine->Get_Point(iPoint, iPart));

					dc.dc.DrawLine(A.x, A.y, B.x, B.y);
				}
			}
		}
	}

	//-----------------------------------------------------
	if( m_Parameters("LABEL")->asBool() )
	{
		int	Size	= (int)(0.5 + 0.01 * m_Parameters("LABEL_SIZE")->asDouble()
		*	( dc.m_rDC.GetWidth() < dc.m_rDC.GetHeight()
			? dc.m_rDC.GetWidth() : dc.m_rDC.GetHeight() )
		);

		if( Size > 2 )
		{
			int			Effect;
			wxColour	Effect_Color	= Get_Color_asWX(m_Parameters("LABEL_EFFCOL")->asInt());
			wxFont		Font	= Get_Font(m_Parameters("LABEL_FONT"));

			Font.SetPointSize(Size);

			dc.dc.SetFont(Font);
			dc.dc.SetTextForeground(m_Parameters("LABEL_FONT")->asColor());

			switch( m_Parameters("LABEL_EFFECT")->asInt() )
			{
			default:	Effect	= TEXTEFFECT_NONE;			break;
			case 1:		Effect	= TEXTEFFECT_FRAME;			break;
			case 2:		Effect	= TEXTEFFECT_TOP;			break;
			case 3:		Effect	= TEXTEFFECT_TOPLEFT;		break;
			case 4:		Effect	= TEXTEFFECT_LEFT;			break;
			case 5:		Effect	= TEXTEFFECT_BOTTOMLEFT;	break;
			case 6:		Effect	= TEXTEFFECT_BOTTOM;		break;
			case 7:		Effect	= TEXTEFFECT_BOTTOMRIGHT;	break;
			case 8:		Effect	= TEXTEFFECT_RIGHT;			break;
			case 9:		Effect	= TEXTEFFECT_TOPRIGHT;		break;
			}

			for(int iPoint=0; iPoint<m_Coordinates.Get_Count(); iPoint++)
			{
				CSG_Shape	*pPoint	= m_Coordinates.Get_Shape(iPoint);

				TSG_Point_Int	p(dc.World2DC(pPoint->Get_Point(0)));
				wxString		Type(pPoint->asString(0));

				int	Align	= !Type.Cmp("LAT_MIN") ? TEXTALIGN_CENTERLEFT
							: !Type.Cmp("LAT_MAX") ? TEXTALIGN_CENTERRIGHT
							: !Type.Cmp("LON_MIN") ? TEXTALIGN_BOTTOMCENTER
							: !Type.Cmp("LON_MAX") ? TEXTALIGN_TOPCENTER
							: TEXTALIGN_CENTER;

				Draw_Text(dc.dc, Align, p.x, p.y, 0.0, pPoint->asString(1), Effect, Effect_Color);
			}
		}
	}

	//-----------------------------------------------------
	if( pDC )
	{
		dc_Map.Draw_DC(dc, m_Parameters("TRANSPARENCY")->asDouble() / 100.0);

		delete(pDC);
	}

	return( true );
}
Пример #15
0
void ST_Drawer(void)
{
	dboolean checkautomap;

	//
	// flash overlay
	//

	if ((st_flashoverlay.value ||
	     gl_max_texture_units <= 2 ||
	     r_texturecombiner.value <= 0) && flashcolor) {
		ST_FlashingScreen(st_flash_r, st_flash_g, st_flash_b,
				  st_flash_a);
	}

	if (iwadDemo)
		return;

	checkautomap = (!automapactive || am_overlay.value);

	//
	// draw hud
	//

	if (checkautomap && st_drawhud.value) {
		//Status graphics
		ST_DrawStatus();

		// original hud layout
		if (st_drawhud.value == 1) {
			//Draw Ammo counter
			if (weaponinfo[plyr->readyweapon].ammo != am_noammo)
				Draw_Number(160, 215,
					    plyr->ammo[weaponinfo
						       [plyr->readyweapon].
						       ammo], 0,
					    REDALPHA(0x7f));

			//Draw Health
			Draw_Number(49, 215, plyr->health, 0, REDALPHA(0x7f));

			//Draw Armor
			Draw_Number(271, 215, plyr->armorpoints, 0,
				    REDALPHA(0x7f));
		}
		// arranged hud layout
		else if (st_drawhud.value >= 2) {
			int wpn;

			if (plyr->pendingweapon == wp_nochange)
				wpn = plyr->readyweapon;
			else
				wpn = plyr->pendingweapon;

			// display ammo sprite
			switch (weaponinfo[wpn].ammo) {
			case am_clip:
				Draw_Sprite2D(SPR_CLIP, 0, 0, 524, 460, 0.5f, 0,
					      WHITEALPHA(0xC0));
				break;
			case am_shell:
				Draw_Sprite2D(SPR_SHEL, 0, 0, 524, 460, 0.5f, 0,
					      WHITEALPHA(0xC0));
				break;
			case am_misl:
				Draw_Sprite2D(SPR_RCKT, 0, 0, 524, 464, 0.5f, 0,
					      WHITEALPHA(0xC0));
				break;
			case am_cell:
				Draw_Sprite2D(SPR_CELL, 0, 0, 524, 464, 0.5f, 0,
					      WHITEALPHA(0xC0));
				break;
			default:
				break;
			}

			// display artifact sprites
			if (plyr->artifacts & (1 << ART_TRIPLE))
				Draw_Sprite2D(SPR_ART3, 0, 0, 260, 872, 0.275f,
					      0, WHITEALPHA(0xC0));

			if (plyr->artifacts & (1 << ART_DOUBLE))
				Draw_Sprite2D(SPR_ART2, 0, 0, 296, 872, 0.275f,
					      0, WHITEALPHA(0xC0));

			if (plyr->artifacts & (1 << ART_FAST))
				Draw_Sprite2D(SPR_ART1, 0, 0, 332, 872, 0.275f,
					      0, WHITEALPHA(0xC0));

			// display medkit/armor
			Draw_Sprite2D(SPR_MEDI, 0, 0, 50, 662, 0.35f, 0,
				      WHITEALPHA(0xC0));
			Draw_Sprite2D(SPR_ARM1, 0, 0, 50, 632, 0.35f, 0,
				      WHITEALPHA(0xC0));

			GL_SetOrthoScale(0.5f);

			//Draw Health
			Draw_Number(96, 448, plyr->health, 2, REDALPHA(0xC0));
			Draw_BigText(104, 450, REDALPHA(0xC0), "%");

			//Draw Armor
			Draw_Number(96, 424, plyr->armorpoints, 2,
				    REDALPHA(0xC0));
			Draw_BigText(104, 426, REDALPHA(0xC0), "%");

			//Draw Ammo counter
			if (weaponinfo[wpn].ammo != am_noammo)
				Draw_Number(550, 448,
					    plyr->ammo[weaponinfo[wpn].ammo], 1,
					    REDALPHA(0xC0));

			GL_SetOrthoScale(1.0f);
		}
	}
	//
	// draw messages
	//

	if (st_hasjmsg && st_regionmsg.value && plyr->messagepic >= 0) {
		ST_DrawJMessage(plyr->messagepic);
	} else if (st_msg && (int)m_messages.value) {
		Draw_Text(20, 20,
			  ST_MSGCOLOR(automapactive ? 0xff : st_msgalpha), 1,
			  false, st_msg);
	} else if (automapactive) {
		char str[128];
		mapdef_t *map = P_GetMapInfo(gamemap);

		if (map) {
			dmemset(&str, 0, 128);

			if (map->type == 2)
				sprintf(str, "%s", map->mapname);
			else
				sprintf(str, "Level %i: %s", gamemap,
					map->mapname);

			Draw_Text(20, 20, ST_MSGCOLOR(0xff), 1, false, str);
		}
	}
	//
	// draw chat text and player names
	//

	if (netgame) {
		ST_DrawChatText();

		if (checkautomap) {
			int i;

			for (i = 0; i < MAXPLAYERS; i++) {
				if (playeringame[i])
					ST_DisplayName(i);
			}
		}
	}
	//
	// draw crosshairs
	//

	if (st_crosshairs && !automapactive) {
		int x = (SCREENWIDTH / 2) - (ST_CROSSHAIRSIZE / 8);
		int y = (SCREENHEIGHT / 2) - (ST_CROSSHAIRSIZE / 8);
		int alpha = (int)st_crosshairopacity.value;

		if (alpha > 0xff)
			alpha = 0xff;

		if (alpha < 0)
			alpha = 0;

		ST_DrawCrosshair(x, y, (int)st_crosshair.value, 2,
				 WHITEALPHA(alpha));
	}
	//
	// use action context
	//

	if (p_usecontext.value) {
		if (P_UseLines(&players[consoleplayer], true)) {
			char usestring[16];
			char contextstring[32];
			float x;

#ifdef _USE_XINPUT		// XINPUT
			if (xgamepad.connected) {
				M_DrawXInputButton(140, 156, XINPUT_GAMEPAD_A);
				Draw_Text(213, 214, WHITEALPHA(0xA0), 0.75,
					  false, "Use");
			} else
#endif
			{
				G_GetActionBindings(usestring, "+use");
				sprintf(contextstring, "(%s)Use", usestring);

				x = (160 / 0.75f) -
				    ((dstrlen(contextstring) * 8) / 2);

				Draw_Text((int)x, 214, WHITEALPHA(0xA0), 0.75f,
					  false, contextstring);
			}
		}
	}
	//
	// damage indicator
	//

	if (p_damageindicator.value)
		ST_DrawDamageMarkers();

	//
	// display pending weapon
	//

	if (st_showpendingweapon.value)
		ST_DrawPendingWeapon();

	//
	// display stats in automap
	//

	if (st_showstats.value && automapactive) {
		Draw_Text(20, 430, WHITE, 0.5f, false,
			  "Monsters:  %i / %i", plyr->killcount, totalkills);
		Draw_Text(20, 440, WHITE, 0.5f, false,
			  "Items:     %i / %i", plyr->itemcount, totalitems);
		Draw_Text(20, 450, WHITE, 0.5f, false,
			  "Secrets:   %i / %i", plyr->secretcount, totalsecret);
		Draw_Text(20, 460, WHITE, 0.5f, false,
			  "Time:      %2.2d:%2.2d", (leveltime / TICRATE) / 60,
			  (leveltime / TICRATE) % 60);
	}
}
Пример #16
0
void OverRender(ShaderProgram* program, SDL_Window* displayWindow, GLuint text_sprites){
	glClear(GL_COLOR_BUFFER_BIT);
	Draw_Text(program, text_sprites, -1.25f, 0.0f, 0.25f, 0.0f, "GAME OVER");
	SDL_GL_SwapWindow(displayWindow);
}