172 lines
2.3 KiB
C++
172 lines
2.3 KiB
C++
|
||
|
||
#define NUM_OF_TABS 3
|
||
|
||
enum
|
||
{
|
||
FL_DISABLEDRAG = (1 << 1)
|
||
};
|
||
|
||
enum
|
||
{
|
||
AIMTAB,
|
||
ESPTAB,
|
||
MISCTAB
|
||
};
|
||
|
||
enum
|
||
{
|
||
ONOFF,
|
||
DROPDOWN,
|
||
SLIDER,
|
||
ADDER
|
||
};
|
||
|
||
typedef struct DropDown_s
|
||
{
|
||
int x, y;
|
||
int iCount;
|
||
|
||
float *fValues;
|
||
float *cvar;
|
||
|
||
char **ppszNames;
|
||
} DropDown_t;
|
||
|
||
class cMenuSection
|
||
{
|
||
public:
|
||
void Draw(int x, int y, int w, int h);
|
||
|
||
void AddElement(int iType, int add_to_x, const wchar_t *pszElementName, float *cvar, float min = 0, float max = 1, float step = 1);
|
||
|
||
void DrawAllDropDowns();
|
||
|
||
void PostSection()
|
||
{
|
||
DrawAllDropDowns();
|
||
}
|
||
|
||
void ClearSection()
|
||
{
|
||
vecDropDowns.clear();
|
||
|
||
RestartSection();
|
||
}
|
||
|
||
void RestartSection()
|
||
{
|
||
iSection = 0;
|
||
}
|
||
|
||
void PostElement(int increment = 1)
|
||
{
|
||
iSection += increment;
|
||
}
|
||
|
||
void SetSlider(int &iCurrentSlider, bool bColor = false, float fLen = 360.0f)
|
||
{
|
||
bColored = bColor;
|
||
|
||
fLength = fLen;
|
||
|
||
iCurrentSlider++;
|
||
}
|
||
|
||
void SetSectionPos(int x, int y)
|
||
{
|
||
s_x = x;
|
||
s_y = y;
|
||
}
|
||
|
||
void SetValueNames(char **szArrayArray, float *fArray, int iCount)
|
||
{
|
||
ppszValueNames = szArrayArray;
|
||
fValueList = fArray;
|
||
iValueCount = iCount;
|
||
}
|
||
|
||
void ClearAllElementSpecifics()
|
||
{
|
||
SetValueNames(NULL,NULL,0);
|
||
}
|
||
|
||
private:
|
||
void AddDropDownToDrawList(DropDown_t ddNew)
|
||
{
|
||
vecDropDowns.push_back(ddNew);
|
||
}
|
||
|
||
int iSection;
|
||
int s_x, s_y;
|
||
|
||
//dropdown specifics
|
||
//----------------------
|
||
float *fValueList;
|
||
char **ppszValueNames;
|
||
int iValueCount;
|
||
bool bActiveDropDown[50];
|
||
std::vector<DropDown_t> vecDropDowns;
|
||
//----------------------
|
||
|
||
//slider specifics
|
||
//----------------------
|
||
bool bColored;
|
||
float fLength;
|
||
};
|
||
|
||
class cMenu
|
||
{
|
||
public:
|
||
cMenu(int x, int y, int w, int h);
|
||
|
||
void InitMenuElements();
|
||
|
||
void DrawMenu();
|
||
|
||
void SetMenuPos(int x, int y)
|
||
{
|
||
m_x = x;
|
||
m_y = y;
|
||
}
|
||
|
||
void GetMenuPos(int &out_x, int &out_y)
|
||
{
|
||
out_x = m_x;
|
||
out_y = m_y;
|
||
}
|
||
|
||
void GetMenuSize(int &out_w, int &out_h)
|
||
{
|
||
out_w = m_w;
|
||
out_h = m_h;
|
||
}
|
||
|
||
bool IsHandlingItem()
|
||
{
|
||
return (iMenuFlags & FL_DISABLEDRAG);
|
||
}
|
||
|
||
void AddMenuFlag(int iFlag)
|
||
{
|
||
iMenuFlags |= iFlag;
|
||
}
|
||
|
||
void RemoveMenuFlag(int iFlag)
|
||
{
|
||
iMenuFlags &= ~iFlag;
|
||
}
|
||
|
||
int GetTabIndex()
|
||
{
|
||
return iTabIndex;
|
||
}
|
||
private:
|
||
void DrawTab(int index, int &setindex, int x, int y, const char *pszTitle);
|
||
|
||
int m_x, m_y, m_w, m_h;
|
||
int iMenuFlags;
|
||
int iTabIndex;
|
||
};
|
||
|
||
extern cMenu g_Menu; |