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...}