All pastes #584244 Raw Edit

sda

public cpp v1 · immutable
·published 2007-06-22 17:43 UTC
rendered paste body
#include "d3dfont.h"#include "cGUI.h"#pragma warning( disable : 4244 )/*I changed the void* shit back to bool, bool is FINE. It only affects the toggle, Multival takes care of its self * To use a toggle button bool cvar; AddButton(true,...., &cvar,...); then you can no if its been toggled by if(cvar) { } * a multival button AddButton(false, ...., 0, 0); if(Forms.FormButtons[X].ClickVal == 2) { our button is 2 val } */void cRectMenu::FormPostReset( char *szFontType, DWORD dwFontSize, DWORD dwFontFlags, LPDIRECT3DDEVICE8 pDevice ){	text = new CD3DFont( szFontType, dwFontSize, dwFontFlags );	text->InitDeviceObjects( pDev );	text->RestoreDeviceObjects( );}void cRectMenu::FormPreReset( ){	text->InvalidateDeviceObjects( );	text->DeleteDeviceObjects( );	text = NULL;}void cRectMenu::AddMainForm(float x, float y, float w, float h,  DWORD dwOutlineColor, DWORD dwBGColor, char *Header = ""){	Forms.X = x;	Forms.Y = y;	Forms.W = w;	Forms.H = h;	Forms.BorderColor = dwOutlineColor;	Forms.BGColor = dwBGColor;	Forms.Header = Header;}void cRectMenu::AddButton(bool Toggle, int max, int min, char* text, bool *cvar, int key){	if(key == NULL) { Forms.FormButtons[ButtonNum].vKey = 0x0; }	else			{ Forms.FormButtons[ButtonNum].vKey = key; }	Forms.FormButtons[ButtonNum].Text = text;	Forms.FormButtons[ButtonNum].Cvar = cvar;	Forms.FormButtons[ButtonNum].MaxClick = max;	Forms.FormButtons[ButtonNum].MinClick = min;	Forms.FormButtons[ButtonNum].IsToggle = Toggle;	ButtonNum++;}void __cdecl add_log (const char *fmt, ...);void cRectMenu::DrawForm(){    DrawRect(Forms.X, Forms.Y,        Forms.W, Forms.H,  Forms.BGColor);    DrawRect(Forms.X, Forms.Y - 25, Forms.W, 20,  Forms.BGColor); 	text->DrawText( Forms.X + 4, Forms.Y - 23, 0xFFFFFFFF, Forms.Header); 	DrawBorder(Forms.X, Forms.Y,	  Forms.W,	Forms.H,	FormBorderColor);		  	DrawBorder(Forms.X, Forms.Y - 25, Forms.W,	20,	FormBorderColor);	 	for(int i = 0; i < this->ButtonNum; i++)	{		Ratio =  ((20 * Forms.H) / (32 *  (ButtonNum) )); 		TextOffset =  Forms.Y + ( ( Ratio / 2 * 1.4) ) + (i * ( Ratio + ( Ratio / 2 )));		MathVar = Forms.Y + ( Ratio / 2 ) + (i * ( Ratio + ( Ratio / 2 )));		DrawRect( Forms.X + 15, MathVar, (Forms.W - 31), Ratio,   ButtonBG );		DrawBorder(	Forms.X + 15, MathVar, (Forms.W - 31), Ratio,   ButtonBorder);				if(Forms.FormButtons[i].IsToggle)		{			if( Forms.FormButtons[i].Cvar && *Forms.FormButtons[i].Cvar == 1 ) 			{				text->DrawText(	Forms.X + this->Ratio, TextOffset, 0xFF0000FF, Forms.FormButtons[i].Text);			}			else			{				text->DrawText(	Forms.X + this->Ratio, TextOffset, White, Forms.FormButtons[i].Text);			}		}		else		{			sprintf( theNum, "%s: %i", Forms.FormButtons[i].Text, Forms.FormButtons[i].ClickNum );			text->DrawText(	Forms.X + Ratio, TextOffset, White, theNum );		}			this->CheckClicks(Forms.X + this->Ratio, TextOffset, i);	}}void cRectMenu::CheckButtonKeys() {}void cRectMenu::DrawRect(float x, float y, float w, float h, DWORD color){    Verts vertices[4] =    {         //meh you have yours ;p    };   pDev->SetVertexShader(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);   pDev->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vertices, sizeof(Verts) );}void __cdecl add_log (const char *fmt, ...);void cRectMenu::DrawBorder(float x, float y, float w, float h, DWORD color){    Verts vertices[5] =    {        	  //same as above, just one more vert to finish the rect...    };   pDev->SetVertexShader(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);   pDev->DrawPrimitiveUP( D3DPT_LINESTRIP, 4, vertices, sizeof(Verts) );}int cRectMenu::checkField(int x, int y, int w, int h){	POINT Cur;	GetCursorPos(&Cur);	if(Cur.x > x && Cur.x < x + w && Cur.y > y && Cur.y < y+h)	{		if(GetAsyncKeyState(VK_LBUTTON)&1)		{			return 1;		}		if(GetAsyncKeyState(VK_RBUTTON)&1)		{			return 2;		}		if(GetAsyncKeyState(VK_LBUTTON))		{			return 3;		}		return 4;	}	return 0;}void cRectMenu::CheckClicks(int x, int y, int Item){	int iCheck = checkField(x, y, (Forms.W - 31), 10);	if(Forms.FormButtons[Item].IsToggle)	{		if(iCheck == 1)		{			if(Forms.FormButtons[Item].Cvar)				*Forms.FormButtons[Item].Cvar =! *Forms.FormButtons[Item].Cvar;		}	}	else if (!Forms.FormButtons[Item].IsToggle)	{		if(iCheck == 1)		{			if(Forms.FormButtons[Item].ClickNum < Forms.FormButtons[Item].MaxClick)Forms.FormButtons[Item].ClickNum++;		}		else if(iCheck == 2)		{			if(Forms.FormButtons[Item].ClickNum > Forms.FormButtons[Item].MinClick)Forms.FormButtons[Item].ClickNum--;		}	} else { }	if(Forms.FormButtons[Item].IsToggle && Forms.FormButtons[Item].vKey != 0x0)//multival hotkey support can be added	{		if(GetAsyncKeyState(Forms.FormButtons[Item].vKey)&1)		{			*Forms.FormButtons[Item].Cvar =! *Forms.FormButtons[Item].Cvar;		}	}	CheckDragAndResize();}void cRectMenu::CheckDragAndResize(){	POINT Cur;	GetCursorPos(&Cur);	int pSize = checkField(Forms.X + Forms.W - 10, Forms.Y + Forms.H - 10, 15, 15);		if(pSize == 3)	{		Forms.W = (Cur.x - Forms.X);		Forms.H = (Cur.y - Forms.Y);		SetCursorPos(Forms.X + Forms.W, Forms.Y + Forms.H);	}	//Add form drag code here...}