mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
refactor UI scrollbars
This commit is contained in:
parent
5c46efc892
commit
053981ee4c
|
@ -79,7 +79,6 @@ CMenus::CMenus()
|
||||||
m_MenuActive = true;
|
m_MenuActive = true;
|
||||||
m_ShowStart = true;
|
m_ShowStart = true;
|
||||||
m_UseMouseButtons = true;
|
m_UseMouseButtons = true;
|
||||||
m_MouseSlow = false;
|
|
||||||
|
|
||||||
m_EscapePressed = false;
|
m_EscapePressed = false;
|
||||||
m_EnterPressed = false;
|
m_EnterPressed = false;
|
||||||
|
@ -119,15 +118,6 @@ CMenus::CMenus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float CMenus::ButtonColorMul(const void *pID)
|
|
||||||
{
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
return ButtonColorMulActive();
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
return ButtonColorMulHot();
|
|
||||||
return ButtonColorMulDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
int CMenus::DoButton_Icon(int ImageId, int SpriteId, const CUIRect *pRect)
|
int CMenus::DoButton_Icon(int ImageId, int SpriteId, const CUIRect *pRect)
|
||||||
{
|
{
|
||||||
int x = pRect->x;
|
int x = pRect->x;
|
||||||
|
@ -199,7 +189,7 @@ int CMenus::DoButton_Menu(const void *pID, const char *pText, int Checked, const
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!MouseInsideColorPicker)
|
if(!MouseInsideColorPicker)
|
||||||
Color.a *= ButtonColorMul(pID);
|
Color.a *= UI()->ButtonColorMul(pID);
|
||||||
RenderTools()->DrawUIRect(pRect, Color, Corners, r);
|
RenderTools()->DrawUIRect(pRect, Color, Corners, r);
|
||||||
|
|
||||||
if(pImageName)
|
if(pImageName)
|
||||||
|
@ -234,7 +224,7 @@ int CMenus::DoButton_Menu(const void *pID, const char *pText, int Checked, const
|
||||||
|
|
||||||
void CMenus::DoButton_KeySelect(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
void CMenus::DoButton_KeySelect(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
||||||
{
|
{
|
||||||
RenderTools()->DrawUIRect(pRect, ColorRGBA(1, 1, 1, 0.5f * ButtonColorMul(pID)), CUI::CORNER_ALL, 5.0f);
|
RenderTools()->DrawUIRect(pRect, ColorRGBA(1, 1, 1, 0.5f * UI()->ButtonColorMul(pID)), CUI::CORNER_ALL, 5.0f);
|
||||||
CUIRect Temp;
|
CUIRect Temp;
|
||||||
pRect->HMargin(1.0f, &Temp);
|
pRect->HMargin(1.0f, &Temp);
|
||||||
UI()->DoLabel(&Temp, pText, Temp.h * ms_FontmodHeight, 0);
|
UI()->DoLabel(&Temp, pText, Temp.h * ms_FontmodHeight, 0);
|
||||||
|
@ -343,7 +333,7 @@ int CMenus::DoButton_CheckBox_Common(const void *pID, const char *pText, const c
|
||||||
t.VSplitLeft(5.0f, 0, &t);
|
t.VSplitLeft(5.0f, 0, &t);
|
||||||
|
|
||||||
c.Margin(2.0f, &c);
|
c.Margin(2.0f, &c);
|
||||||
RenderTools()->DrawUIRect(&c, ColorRGBA(1, 1, 1, 0.25f * ButtonColorMul(pID)), CUI::CORNER_ALL, 3.0f);
|
RenderTools()->DrawUIRect(&c, ColorRGBA(1, 1, 1, 0.25f * UI()->ButtonColorMul(pID)), CUI::CORNER_ALL, 3.0f);
|
||||||
|
|
||||||
bool CheckAble = *pBoxText == 'X';
|
bool CheckAble = *pBoxText == 'X';
|
||||||
if(CheckAble)
|
if(CheckAble)
|
||||||
|
@ -623,7 +613,7 @@ int CMenus::DoClearableEditBox(void *pID, void *pClearID, const CUIRect *pRect,
|
||||||
}
|
}
|
||||||
|
|
||||||
TextRender()->SetRenderFlags(ETextRenderFlags::TEXT_RENDER_FLAG_ONLY_ADVANCE_WIDTH | ETextRenderFlags::TEXT_RENDER_FLAG_NO_X_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_Y_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT);
|
TextRender()->SetRenderFlags(ETextRenderFlags::TEXT_RENDER_FLAG_ONLY_ADVANCE_WIDTH | ETextRenderFlags::TEXT_RENDER_FLAG_NO_X_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_Y_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT);
|
||||||
RenderTools()->DrawUIRect(&ClearButton, ColorRGBA(1, 1, 1, 0.33f * ButtonColorMul(pClearID)), Corners & ~CUI::CORNER_L, 3.0f);
|
RenderTools()->DrawUIRect(&ClearButton, ColorRGBA(1, 1, 1, 0.33f * UI()->ButtonColorMul(pClearID)), Corners & ~CUI::CORNER_L, 3.0f);
|
||||||
UI()->DoLabel(&ClearButton, "×", ClearButton.h * ms_FontmodHeight, 0, -1, 0);
|
UI()->DoLabel(&ClearButton, "×", ClearButton.h * ms_FontmodHeight, 0, -1, 0);
|
||||||
TextRender()->SetRenderFlags(0);
|
TextRender()->SetRenderFlags(0);
|
||||||
if(UI()->DoButtonLogic(pClearID, "×", 0, &ClearButton))
|
if(UI()->DoButtonLogic(pClearID, "×", 0, &ClearButton))
|
||||||
|
@ -635,140 +625,6 @@ int CMenus::DoClearableEditBox(void *pID, void *pClearID, const CUIRect *pRect,
|
||||||
return ReturnValue;
|
return ReturnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
float CMenus::DoScrollbarV(const void *pID, const CUIRect *pRect, float Current)
|
|
||||||
{
|
|
||||||
CUIRect Handle;
|
|
||||||
static float OffsetY;
|
|
||||||
pRect->HSplitTop(33, &Handle, 0);
|
|
||||||
|
|
||||||
Current = clamp(Current, 0.0f, 1.0f);
|
|
||||||
Handle.y = pRect->y + (pRect->h - Handle.h) * Current;
|
|
||||||
|
|
||||||
// logic
|
|
||||||
float ReturnValue = Current;
|
|
||||||
int Inside = UI()->MouseInside(&Handle);
|
|
||||||
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
{
|
|
||||||
if(!UI()->MouseButton(0))
|
|
||||||
UI()->SetActiveItem(0);
|
|
||||||
|
|
||||||
if(Input()->KeyIsPressed(KEY_LSHIFT) || Input()->KeyIsPressed(KEY_RSHIFT))
|
|
||||||
m_MouseSlow = true;
|
|
||||||
|
|
||||||
float Min = pRect->y;
|
|
||||||
float Max = pRect->h - Handle.h;
|
|
||||||
float Cur = UI()->MouseY() - OffsetY;
|
|
||||||
ReturnValue = (Cur - Min) / Max;
|
|
||||||
if(ReturnValue < 0.0f)
|
|
||||||
ReturnValue = 0.0f;
|
|
||||||
if(ReturnValue > 1.0f)
|
|
||||||
ReturnValue = 1.0f;
|
|
||||||
}
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
{
|
|
||||||
if(UI()->MouseButton(0))
|
|
||||||
{
|
|
||||||
UI()->SetActiveItem(pID);
|
|
||||||
OffsetY = UI()->MouseY() - Handle.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Inside)
|
|
||||||
UI()->SetHotItem(pID);
|
|
||||||
|
|
||||||
// render
|
|
||||||
RenderTools()->DrawUIRect(pRect, ColorRGBA(0, 0, 0, 0.25f), CUI::CORNER_ALL, 5.0f);
|
|
||||||
|
|
||||||
float ColorSlider = 0;
|
|
||||||
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
ColorSlider = 1.0f;
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
ColorSlider = 0.9f;
|
|
||||||
else
|
|
||||||
ColorSlider = 0.75f;
|
|
||||||
|
|
||||||
RenderTools()->DrawUIRect(&Handle, ColorRGBA(ColorSlider, ColorSlider, ColorSlider, 0.75f), CUI::CORNER_ALL, 5.0f);
|
|
||||||
|
|
||||||
return ReturnValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
float CMenus::DoScrollbarH(const void *pID, const CUIRect *pRect, float Current, bool ColorPickerSlider, ColorRGBA *pColorInner)
|
|
||||||
{
|
|
||||||
CUIRect Handle;
|
|
||||||
static float OffsetX;
|
|
||||||
pRect->VSplitLeft(ColorPickerSlider ? 8 : 33, &Handle, 0);
|
|
||||||
|
|
||||||
Handle.x += (pRect->w - Handle.w) * Current;
|
|
||||||
|
|
||||||
// logic
|
|
||||||
float ReturnValue = Current;
|
|
||||||
int Inside = UI()->MouseInside(&Handle);
|
|
||||||
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
{
|
|
||||||
if(!UI()->MouseButton(0))
|
|
||||||
UI()->SetActiveItem(0);
|
|
||||||
|
|
||||||
if(Input()->KeyIsPressed(KEY_LSHIFT) || Input()->KeyIsPressed(KEY_RSHIFT))
|
|
||||||
m_MouseSlow = true;
|
|
||||||
|
|
||||||
float Min = pRect->x;
|
|
||||||
float Max = pRect->w - Handle.w;
|
|
||||||
float Cur = UI()->MouseX() - OffsetX;
|
|
||||||
ReturnValue = (Cur - Min) / Max;
|
|
||||||
if(ReturnValue < 0.0f)
|
|
||||||
ReturnValue = 0.0f;
|
|
||||||
if(ReturnValue > 1.0f)
|
|
||||||
ReturnValue = 1.0f;
|
|
||||||
}
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
{
|
|
||||||
if(UI()->MouseButton(0))
|
|
||||||
{
|
|
||||||
UI()->SetActiveItem(pID);
|
|
||||||
OffsetX = UI()->MouseX() - Handle.x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Inside)
|
|
||||||
UI()->SetHotItem(pID);
|
|
||||||
|
|
||||||
// render
|
|
||||||
if(!ColorPickerSlider)
|
|
||||||
{
|
|
||||||
CUIRect Rail;
|
|
||||||
pRect->HMargin(5.0f, &Rail);
|
|
||||||
RenderTools()->DrawUIRect(&Rail, ColorRGBA(1, 1, 1, 0.25f), 0, 0.0f);
|
|
||||||
|
|
||||||
CUIRect Slider = Handle;
|
|
||||||
Slider.h = Rail.y - Slider.y;
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_T, 2.5f);
|
|
||||||
Slider.y = Rail.y + Rail.h;
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_B, 2.5f);
|
|
||||||
|
|
||||||
Slider = Handle;
|
|
||||||
Slider.Margin(5.0f, &Slider);
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f * ButtonColorMul(pID)), CUI::CORNER_ALL, 2.5f);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CUIRect Slider = Handle;
|
|
||||||
float MarginW = 4.0f;
|
|
||||||
float MarginH = 9.0f;
|
|
||||||
Slider.x -= MarginW / 2;
|
|
||||||
Slider.y -= MarginH / 2;
|
|
||||||
Slider.w += MarginW;
|
|
||||||
Slider.h += MarginH;
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(0.15f, 0.15f, 0.15f, 1.0f), CUI::CORNER_ALL, 5.0f);
|
|
||||||
Slider.Margin(2, &Slider);
|
|
||||||
RenderTools()->DrawUIRect(&Slider, *pColorInner, CUI::CORNER_ALL, 3.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ReturnValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CMenus::DoKeyReader(void *pID, const CUIRect *pRect, int Key, int Modifier, int *NewModifier)
|
int CMenus::DoKeyReader(void *pID, const CUIRect *pRect, int Key, int Modifier, int *NewModifier)
|
||||||
{
|
{
|
||||||
// process
|
// process
|
||||||
|
@ -1452,8 +1308,7 @@ int CMenus::Render()
|
||||||
|
|
||||||
CUIRect Screen = *UI()->Screen();
|
CUIRect Screen = *UI()->Screen();
|
||||||
UI()->MapScreen();
|
UI()->MapScreen();
|
||||||
|
m_UIEx.ResetMouseSlow();
|
||||||
m_MouseSlow = false;
|
|
||||||
|
|
||||||
static int s_Frame = 0;
|
static int s_Frame = 0;
|
||||||
if(s_Frame == 0)
|
if(s_Frame == 0)
|
||||||
|
@ -2555,19 +2410,10 @@ bool CMenus::OnMouseMove(float x, float y)
|
||||||
if(!m_MenuActive)
|
if(!m_MenuActive)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
UI()->ConvertMouseMove(&x, &y);
|
m_UIEx.ConvertMouseMove(&x, &y);
|
||||||
if(m_MouseSlow)
|
|
||||||
{
|
m_MousePos.x = clamp(m_MousePos.x + x, 0.f, (float)Graphics()->WindowWidth());
|
||||||
m_MousePos.x += x * 0.05f;
|
m_MousePos.y = clamp(m_MousePos.y + y, 0.f, (float)Graphics()->WindowHeight());
|
||||||
m_MousePos.y += y * 0.05f;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_MousePos.x += x;
|
|
||||||
m_MousePos.y += y;
|
|
||||||
}
|
|
||||||
m_MousePos.x = clamp(m_MousePos.x, 0.f, (float)Graphics()->WindowWidth());
|
|
||||||
m_MousePos.y = clamp(m_MousePos.y, 0.f, (float)Graphics()->WindowHeight());
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,11 +75,6 @@ class CMenus : public CComponent
|
||||||
|
|
||||||
CUIEx m_UIEx;
|
CUIEx m_UIEx;
|
||||||
|
|
||||||
float ButtonColorMulActive() { return 0.5f; }
|
|
||||||
float ButtonColorMulHot() { return 1.5f; }
|
|
||||||
float ButtonColorMulDefault() { return 1.0f; }
|
|
||||||
float ButtonColorMul(const void *pID);
|
|
||||||
|
|
||||||
int DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
int DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
||||||
int DoButton_Sprite(const void *pID, int ImageID, int SpriteID, int Checked, const CUIRect *pRect, int Corners);
|
int DoButton_Sprite(const void *pID, int ImageID, int SpriteID, int Checked, const CUIRect *pRect, int Corners);
|
||||||
int DoButton_Toggle(const void *pID, int Checked, const CUIRect *pRect, bool Active);
|
int DoButton_Toggle(const void *pID, int Checked, const CUIRect *pRect, bool Active);
|
||||||
|
@ -92,32 +87,16 @@ class CMenus : public CComponent
|
||||||
int DoButton_CheckBox_Number(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
int DoButton_CheckBox_Number(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
||||||
ColorHSLA DoLine_ColorPicker(int *pResetID, const float LineSize, const float WantedPickerPosition, const float LabelSize, const float BottomMargin, CUIRect *pMainRect, const char *pText, unsigned int *pColorValue, const ColorRGBA DefaultColor, bool CheckBoxSpacing = true, bool UseCheckBox = false, int *pCheckBoxValue = NULL);
|
ColorHSLA DoLine_ColorPicker(int *pResetID, const float LineSize, const float WantedPickerPosition, const float LabelSize, const float BottomMargin, CUIRect *pMainRect, const char *pText, unsigned int *pColorValue, const ColorRGBA DefaultColor, bool CheckBoxSpacing = true, bool UseCheckBox = false, int *pCheckBoxValue = NULL);
|
||||||
void DoLaserPreview(const CUIRect *pRect, const ColorHSLA OutlineColor, const ColorHSLA InnerColor);
|
void DoLaserPreview(const CUIRect *pRect, const ColorHSLA OutlineColor, const ColorHSLA InnerColor);
|
||||||
/*static void ui_draw_menu_button(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
static void ui_draw_keyselect_button(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
static void ui_draw_menu_tab_button(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
static void ui_draw_settings_tab_button(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
*/
|
|
||||||
int DoValueSelector(void *pID, CUIRect *pRect, const char *pLabel, bool UseScroll, int Current, int Min, int Max, int Step, float Scale, bool IsHex, float Round, ColorRGBA *Color);
|
int DoValueSelector(void *pID, CUIRect *pRect, const char *pLabel, bool UseScroll, int Current, int Min, int Max, int Step, float Scale, bool IsHex, float Round, ColorRGBA *Color);
|
||||||
int DoButton_Icon(int ImageId, int SpriteId, const CUIRect *pRect);
|
int DoButton_Icon(int ImageId, int SpriteId, const CUIRect *pRect);
|
||||||
int DoButton_GridHeader(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
int DoButton_GridHeader(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
||||||
|
|
||||||
//static void ui_draw_browse_icon(int what, const CUIRect *r);
|
|
||||||
//static void ui_draw_grid_header(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
|
|
||||||
/*static void ui_draw_checkbox_common(const void *id, const char *text, const char *boxtext, const CUIRect *r, const void *extra);
|
|
||||||
static void ui_draw_checkbox(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
static void ui_draw_checkbox_number(const void *id, const char *text, int checked, const CUIRect *r, const void *extra);
|
|
||||||
*/
|
|
||||||
int DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
int DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
||||||
int DoClearableEditBox(void *pID, void *pClearID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
int DoClearableEditBox(void *pID, void *pClearID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
||||||
//static int ui_do_edit_box(void *id, const CUIRect *rect, char *str, unsigned str_size, float font_size, bool hidden=false);
|
|
||||||
|
|
||||||
float DoScrollbarV(const void *pID, const CUIRect *pRect, float Current);
|
|
||||||
float DoScrollbarH(const void *pID, const CUIRect *pRect, float Current, bool ColorPickerSlider = false, ColorRGBA *pColorInner = NULL);
|
|
||||||
void DoButton_KeySelect(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
void DoButton_KeySelect(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
|
||||||
int DoKeyReader(void *pID, const CUIRect *pRect, int Key, int Modifier, int *NewModifier);
|
int DoKeyReader(void *pID, const CUIRect *pRect, int Key, int Modifier, int *NewModifier);
|
||||||
|
|
||||||
//static int ui_do_key_reader(void *id, const CUIRect *rect, int key);
|
|
||||||
void UiDoGetButtons(int Start, int Stop, CUIRect View, CUIRect ScopeView);
|
void UiDoGetButtons(int Start, int Stop, CUIRect View, CUIRect ScopeView);
|
||||||
|
|
||||||
void RenderColorPicker();
|
void RenderColorPicker();
|
||||||
|
@ -168,11 +147,11 @@ class CMenus : public CComponent
|
||||||
{
|
{
|
||||||
Color.a = RealColor.a;
|
Color.a = RealColor.a;
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
Color.a *= ButtonColorMulActive();
|
Color.a *= UI()->ButtonColorMulActive();
|
||||||
else if(i == 1)
|
else if(i == 1)
|
||||||
Color.a *= ButtonColorMulHot();
|
Color.a *= UI()->ButtonColorMulHot();
|
||||||
else if(i == 2)
|
else if(i == 2)
|
||||||
Color.a *= ButtonColorMulDefault();
|
Color.a *= UI()->ButtonColorMulDefault();
|
||||||
Graphics()->SetColor(Color);
|
Graphics()->SetColor(Color);
|
||||||
|
|
||||||
CUIElement::SUIElementRect &NewRect = *UIElement.Get(i);
|
CUIElement::SUIElementRect &NewRect = *UIElement.Get(i);
|
||||||
|
@ -224,9 +203,6 @@ class CMenus : public CComponent
|
||||||
|
|
||||||
int UiLogicGetCurrentClickedItem();
|
int UiLogicGetCurrentClickedItem();
|
||||||
|
|
||||||
//static void demolist_listdir_callback(const char *name, int is_dir, void *user);
|
|
||||||
//static void demolist_list_callback(const CUIRect *rect, int index, void *user);
|
|
||||||
|
|
||||||
// menus_settings_assets.cpp
|
// menus_settings_assets.cpp
|
||||||
public:
|
public:
|
||||||
struct SCustomItem
|
struct SCustomItem
|
||||||
|
@ -287,7 +263,6 @@ protected:
|
||||||
bool m_MenuActive;
|
bool m_MenuActive;
|
||||||
bool m_UseMouseButtons;
|
bool m_UseMouseButtons;
|
||||||
vec2 m_MousePos;
|
vec2 m_MousePos;
|
||||||
bool m_MouseSlow;
|
|
||||||
|
|
||||||
char m_aNextServer[256];
|
char m_aNextServer[256];
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
|
||||||
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), 0, 0);
|
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), 0, 0);
|
||||||
|
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
View.VSplitRight(10, &View, &Scroll);
|
View.VSplitRight(20.0f, &View, &Scroll);
|
||||||
|
|
||||||
int NumServers = ServerBrowser()->NumSortedServers();
|
int NumServers = ServerBrowser()->NumSortedServers();
|
||||||
|
|
||||||
|
@ -188,10 +188,9 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
|
||||||
UI()->DoLabelScaled(&MsgBox, Localize("No servers match your filter criteria"), 16.0f, 0);
|
UI()->DoLabelScaled(&MsgBox, Localize("No servers match your filter criteria"), 16.0f, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
|
|
||||||
s_ScrollValue = DoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
s_ScrollValue = m_UIEx.DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
|
|
||||||
if(Input()->KeyPress(KEY_TAB) && m_pClient->m_GameConsole.IsClosed())
|
if(Input()->KeyPress(KEY_TAB) && m_pClient->m_GameConsole.IsClosed())
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,14 +26,14 @@
|
||||||
|
|
||||||
int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
||||||
{
|
{
|
||||||
RenderTools()->DrawUIRect(pRect, ColorRGBA(1, 1, 1, (Checked ? 0.10f : 0.5f) * ButtonColorMul(pID)), CUI::CORNER_ALL, 5.0f);
|
RenderTools()->DrawUIRect(pRect, ColorRGBA(1, 1, 1, (Checked ? 0.10f : 0.5f) * UI()->ButtonColorMul(pID)), CUI::CORNER_ALL, 5.0f);
|
||||||
UI()->DoLabel(pRect, pText, 14.0f, 0);
|
UI()->DoLabel(pRect, pText, 14.0f, 0);
|
||||||
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMenus::DoButton_Sprite(const void *pID, int ImageID, int SpriteID, int Checked, const CUIRect *pRect, int Corners)
|
int CMenus::DoButton_Sprite(const void *pID, int ImageID, int SpriteID, int Checked, const CUIRect *pRect, int Corners)
|
||||||
{
|
{
|
||||||
RenderTools()->DrawUIRect(pRect, ColorRGBA(1.0f, 1.0f, 1.0f, (Checked ? 0.10f : 0.5f) * ButtonColorMul(pID)), Corners, 5.0f);
|
RenderTools()->DrawUIRect(pRect, ColorRGBA(1.0f, 1.0f, 1.0f, (Checked ? 0.10f : 0.5f) * UI()->ButtonColorMul(pID)), Corners, 5.0f);
|
||||||
Graphics()->TextureSet(g_pData->m_aImages[ImageID].m_Id);
|
Graphics()->TextureSet(g_pData->m_aImages[ImageID].m_Id);
|
||||||
Graphics()->QuadsBegin();
|
Graphics()->QuadsBegin();
|
||||||
if(!Checked)
|
if(!Checked)
|
||||||
|
@ -527,7 +527,7 @@ void CMenus::UiDoListboxStart(const void *pID, const CUIRect *pRect, float RowHe
|
||||||
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), CUI::CORNER_ALL, 5.0f);
|
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), CUI::CORNER_ALL, 5.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
View.VSplitRight(10, &View, &Scroll);
|
View.VSplitRight(20.0f, &View, &Scroll);
|
||||||
|
|
||||||
// setup the variables
|
// setup the variables
|
||||||
gs_ListBoxOriginalView = View;
|
gs_ListBoxOriginalView = View;
|
||||||
|
@ -563,7 +563,7 @@ void CMenus::UiDoListboxStart(const void *pID, const CUIRect *pRect, float RowHe
|
||||||
if(Num == 0)
|
if(Num == 0)
|
||||||
gs_ListBoxScrollValue = 0;
|
gs_ListBoxScrollValue = 0;
|
||||||
else
|
else
|
||||||
gs_ListBoxScrollValue = clamp(DoScrollbarV(pID, &Scroll, gs_ListBoxScrollValue), 0.0f, 1.0f);
|
gs_ListBoxScrollValue = m_UIEx.DoScrollbarV(pID, &Scroll, gs_ListBoxScrollValue);
|
||||||
|
|
||||||
// the list
|
// the list
|
||||||
gs_ListBoxView = gs_ListBoxOriginalView;
|
gs_ListBoxView = gs_ListBoxOriginalView;
|
||||||
|
@ -1069,13 +1069,11 @@ void CMenus::RenderDemoList(CUIRect MainView)
|
||||||
|
|
||||||
// scrollbar
|
// scrollbar
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ListBox.VSplitRight(15, &ListBox, &Scroll);
|
ListBox.VSplitRight(20.0f, &ListBox, &Scroll);
|
||||||
|
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
|
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
s_ScrollValue = m_UIEx.DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
s_ScrollValue = DoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
int PreviousIndex = m_DemolistSelectedIndex;
|
int PreviousIndex = m_DemolistSelectedIndex;
|
||||||
HandleListInputs(ListBox, s_ScrollValue, 3.0f, &m_ScrollOffset, s_aCols[0].m_Rect.h, m_DemolistSelectedIndex, m_lDemos.size());
|
HandleListInputs(ListBox, s_ScrollValue, 3.0f, &m_ScrollOffset, s_aCols[0].m_Rect.h, m_DemolistSelectedIndex, m_lDemos.size());
|
||||||
|
|
|
@ -1033,14 +1033,13 @@ void CMenus::RenderGhost(CUIRect MainView)
|
||||||
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), 0, 0);
|
RenderTools()->DrawUIRect(&View, ColorRGBA(0, 0, 0, 0.15f), 0, 0);
|
||||||
|
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
View.VSplitRight(10, &View, &Scroll);
|
View.VSplitRight(20.0f, &View, &Scroll);
|
||||||
|
|
||||||
int NumGhosts = m_lGhosts.size();
|
int NumGhosts = m_lGhosts.size();
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
static int s_SelectedIndex = 0;
|
static int s_SelectedIndex = 0;
|
||||||
|
|
||||||
s_ScrollValue = DoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
s_ScrollValue = m_UIEx.DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
|
|
||||||
HandleListInputs(View, s_ScrollValue, 1.0f, nullptr, s_aCols[0].m_Rect.h, s_SelectedIndex, NumGhosts);
|
HandleListInputs(View, s_ScrollValue, 1.0f, nullptr, s_aCols[0].m_Rect.h, s_SelectedIndex, NumGhosts);
|
||||||
|
|
||||||
|
|
|
@ -161,8 +161,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Name plates size"), g_Config.m_ClNameplatesSize);
|
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Name plates size"), g_Config.m_ClNameplatesSize);
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Button.HMargin(2.0f, &Button);
|
g_Config.m_ClNameplatesSize = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClNameplatesSize, &Button, g_Config.m_ClNameplatesSize / 100.0f) * 100.0f + 0.1f);
|
||||||
g_Config.m_ClNameplatesSize = (int)(DoScrollbarH(&g_Config.m_ClNameplatesSize, &Button, g_Config.m_ClNameplatesSize / 100.0f) * 100.0f + 0.1f);
|
|
||||||
|
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
if(DoButton_CheckBox(&g_Config.m_ClNameplatesTeamcolors, Localize("Use team colors for name plates"), g_Config.m_ClNameplatesTeamcolors, &Button))
|
if(DoButton_CheckBox(&g_Config.m_ClNameplatesTeamcolors, Localize("Use team colors for name plates"), g_Config.m_ClNameplatesTeamcolors, &Button))
|
||||||
|
@ -180,8 +179,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Clan plates size"), g_Config.m_ClNameplatesClanSize);
|
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Clan plates size"), g_Config.m_ClNameplatesClanSize);
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Button.HMargin(2.0f, &Button);
|
g_Config.m_ClNameplatesClanSize = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClNameplatesClanSize, &Button, g_Config.m_ClNameplatesClanSize / 100.0f) * 100.0f + 0.1f);
|
||||||
g_Config.m_ClNameplatesClanSize = (int)(DoScrollbarH(&g_Config.m_ClNameplatesClanSize, &Button, g_Config.m_ClNameplatesClanSize / 100.0f) * 100.0f + 0.1f);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,8 +217,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max demos"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max demos"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
Button.HMargin(2.0f, &Button);
|
g_Config.m_ClAutoDemoMax = static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClAutoDemoMax, &Button, g_Config.m_ClAutoDemoMax / 1000.0f) * 1000.0f + 0.1f);
|
||||||
g_Config.m_ClAutoDemoMax = static_cast<int>(DoScrollbarH(&g_Config.m_ClAutoDemoMax, &Button, g_Config.m_ClAutoDemoMax / 1000.0f) * 1000.0f + 0.1f);
|
|
||||||
|
|
||||||
Right.HSplitTop(SliderGroupMargin, 0, &Right);
|
Right.HSplitTop(SliderGroupMargin, 0, &Right);
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
|
@ -234,8 +231,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max Screenshots"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max Screenshots"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
Button.HMargin(2.0f, &Button);
|
g_Config.m_ClAutoScreenshotMax = static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClAutoScreenshotMax, &Button, g_Config.m_ClAutoScreenshotMax / 1000.0f) * 1000.0f + 0.1f);
|
||||||
g_Config.m_ClAutoScreenshotMax = static_cast<int>(DoScrollbarH(&g_Config.m_ClAutoScreenshotMax, &Button, g_Config.m_ClAutoScreenshotMax / 1000.0f) * 1000.0f + 0.1f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Left.HSplitTop(10.0f, 0, &Left);
|
Left.HSplitTop(10.0f, 0, &Left);
|
||||||
|
@ -247,8 +243,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Refresh Rate"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Refresh Rate"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Left.HSplitTop(20.0f, &Button, &Left);
|
Left.HSplitTop(20.0f, &Button, &Left);
|
||||||
Button.HMargin(2.0f, &Button);
|
g_Config.m_ClRefreshRate = static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClRefreshRate, &Button, g_Config.m_ClRefreshRate / 10000.0f) * 10000.0f + 0.1f);
|
||||||
g_Config.m_ClRefreshRate = static_cast<int>(DoScrollbarH(&g_Config.m_ClRefreshRate, &Button, g_Config.m_ClRefreshRate / 10000.0f) * 10000.0f + 0.1f);
|
|
||||||
|
|
||||||
#if defined(CONF_FAMILY_WINDOWS)
|
#if defined(CONF_FAMILY_WINDOWS)
|
||||||
Left.HSplitTop(10.0f, 0, &Left);
|
Left.HSplitTop(10.0f, 0, &Left);
|
||||||
|
@ -301,9 +296,8 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max Screenshots"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max Screenshots"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
g_Config.m_ClAutoStatboardScreenshotMax =
|
g_Config.m_ClAutoStatboardScreenshotMax =
|
||||||
static_cast<int>(DoScrollbarH(&g_Config.m_ClAutoStatboardScreenshotMax,
|
static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClAutoStatboardScreenshotMax,
|
||||||
&Button,
|
&Button,
|
||||||
g_Config.m_ClAutoStatboardScreenshotMax / 1000.0f) *
|
g_Config.m_ClAutoStatboardScreenshotMax / 1000.0f) *
|
||||||
1000.0f +
|
1000.0f +
|
||||||
|
@ -328,9 +322,8 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max CSVs"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Max CSVs"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 13.0f, -1);
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
g_Config.m_ClAutoCSVMax =
|
g_Config.m_ClAutoCSVMax =
|
||||||
static_cast<int>(DoScrollbarH(&g_Config.m_ClAutoCSVMax,
|
static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClAutoCSVMax,
|
||||||
&Button,
|
&Button,
|
||||||
g_Config.m_ClAutoCSVMax / 1000.0f) *
|
g_Config.m_ClAutoCSVMax / 1000.0f) *
|
||||||
1000.0f +
|
1000.0f +
|
||||||
|
@ -928,8 +921,7 @@ void CMenus::RenderSettingsControls(CUIRect MainView)
|
||||||
Button.VSplitLeft(160.0f, &Label, &Button);
|
Button.VSplitLeft(160.0f, &Label, &Button);
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Mouse sens."), g_Config.m_InpMousesens);
|
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Mouse sens."), g_Config.m_InpMousesens);
|
||||||
UI()->DoLabel(&Label, aBuf, 14.0f * UI()->Scale(), -1);
|
UI()->DoLabel(&Label, aBuf, 14.0f * UI()->Scale(), -1);
|
||||||
Button.HMargin(2.0f, &Button);
|
int NewValue = (int)(m_UIEx.DoScrollbarH(&g_Config.m_InpMousesens, &Button, (minimum(g_Config.m_InpMousesens, 500) - 1) / 500.0f) * 500.0f) + 1;
|
||||||
int NewValue = (int)(DoScrollbarH(&g_Config.m_InpMousesens, &Button, (minimum(g_Config.m_InpMousesens, 500) - 1) / 500.0f) * 500.0f) + 1;
|
|
||||||
if(g_Config.m_InpMousesens < 500 || NewValue < 500)
|
if(g_Config.m_InpMousesens < 500 || NewValue < 500)
|
||||||
g_Config.m_InpMousesens = minimum(NewValue, 500);
|
g_Config.m_InpMousesens = minimum(NewValue, 500);
|
||||||
MovementSettings.HSplitTop(20.0f, 0, &MovementSettings);
|
MovementSettings.HSplitTop(20.0f, 0, &MovementSettings);
|
||||||
|
@ -941,8 +933,7 @@ void CMenus::RenderSettingsControls(CUIRect MainView)
|
||||||
Button.VSplitLeft(160.0f, &Label, &Button);
|
Button.VSplitLeft(160.0f, &Label, &Button);
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("UI mouse s."), g_Config.m_UiMousesens);
|
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("UI mouse s."), g_Config.m_UiMousesens);
|
||||||
UI()->DoLabel(&Label, aBuf, 14.0f * UI()->Scale(), -1);
|
UI()->DoLabel(&Label, aBuf, 14.0f * UI()->Scale(), -1);
|
||||||
Button.HMargin(2.0f, &Button);
|
int NewValue = (int)(m_UIEx.DoScrollbarH(&g_Config.m_UiMousesens, &Button, (minimum(g_Config.m_UiMousesens, 500) - 1) / 500.0f) * 500.0f) + 1;
|
||||||
int NewValue = (int)(DoScrollbarH(&g_Config.m_UiMousesens, &Button, (minimum(g_Config.m_UiMousesens, 500) - 1) / 500.0f) * 500.0f) + 1;
|
|
||||||
if(g_Config.m_UiMousesens < 500 || NewValue < 500)
|
if(g_Config.m_UiMousesens < 500 || NewValue < 500)
|
||||||
g_Config.m_UiMousesens = minimum(NewValue, 500);
|
g_Config.m_UiMousesens = minimum(NewValue, 500);
|
||||||
MovementSettings.HSplitTop(20.0f, 0, &MovementSettings);
|
MovementSettings.HSplitTop(20.0f, 0, &MovementSettings);
|
||||||
|
@ -1286,8 +1277,7 @@ void CMenus::RenderSettingsGraphics(CUIRect MainView)
|
||||||
else
|
else
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Refresh Rate"), "∞");
|
str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Refresh Rate"), "∞");
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
||||||
Button.HMargin(2.0f, &Button);
|
int NewRefreshRate = static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_GfxRefreshRate, &Button, (minimum(g_Config.m_GfxRefreshRate, 1000)) / 1000.0f) * 1000.0f + 0.1f);
|
||||||
int NewRefreshRate = static_cast<int>(DoScrollbarH(&g_Config.m_GfxRefreshRate, &Button, (minimum(g_Config.m_GfxRefreshRate, 1000)) / 1000.0f) * 1000.0f + 0.1f);
|
|
||||||
if(g_Config.m_GfxRefreshRate <= 1000 || NewRefreshRate < 1000)
|
if(g_Config.m_GfxRefreshRate <= 1000 || NewRefreshRate < 1000)
|
||||||
g_Config.m_GfxRefreshRate = NewRefreshRate;
|
g_Config.m_GfxRefreshRate = NewRefreshRate;
|
||||||
|
|
||||||
|
@ -1391,9 +1381,8 @@ void CMenus::RenderSettingsSound(CUIRect MainView)
|
||||||
MainView.HSplitTop(5.0f, &Button, &MainView);
|
MainView.HSplitTop(5.0f, &Button, &MainView);
|
||||||
MainView.HSplitTop(20.0f, &Button, &MainView);
|
MainView.HSplitTop(20.0f, &Button, &MainView);
|
||||||
Button.VSplitLeft(190.0f, &Label, &Button);
|
Button.VSplitLeft(190.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Sound volume"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Sound volume"), 14.0f, -1);
|
||||||
g_Config.m_SndVolume = (int)(DoScrollbarH(&g_Config.m_SndVolume, &Button, g_Config.m_SndVolume / 100.0f) * 100.0f);
|
g_Config.m_SndVolume = (int)(m_UIEx.DoScrollbarH(&g_Config.m_SndVolume, &Button, g_Config.m_SndVolume / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// volume slider game sounds
|
// volume slider game sounds
|
||||||
|
@ -1402,9 +1391,8 @@ void CMenus::RenderSettingsSound(CUIRect MainView)
|
||||||
MainView.HSplitTop(5.0f, &Button, &MainView);
|
MainView.HSplitTop(5.0f, &Button, &MainView);
|
||||||
MainView.HSplitTop(20.0f, &Button, &MainView);
|
MainView.HSplitTop(20.0f, &Button, &MainView);
|
||||||
Button.VSplitLeft(190.0f, &Label, &Button);
|
Button.VSplitLeft(190.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Game sound volume"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Game sound volume"), 14.0f, -1);
|
||||||
g_Config.m_SndGameSoundVolume = (int)(DoScrollbarH(&g_Config.m_SndGameSoundVolume, &Button, g_Config.m_SndGameSoundVolume / 100.0f) * 100.0f);
|
g_Config.m_SndGameSoundVolume = (int)(m_UIEx.DoScrollbarH(&g_Config.m_SndGameSoundVolume, &Button, g_Config.m_SndGameSoundVolume / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// volume slider gui sounds
|
// volume slider gui sounds
|
||||||
|
@ -1413,9 +1401,8 @@ void CMenus::RenderSettingsSound(CUIRect MainView)
|
||||||
MainView.HSplitTop(5.0f, &Button, &MainView);
|
MainView.HSplitTop(5.0f, &Button, &MainView);
|
||||||
MainView.HSplitTop(20.0f, &Button, &MainView);
|
MainView.HSplitTop(20.0f, &Button, &MainView);
|
||||||
Button.VSplitLeft(190.0f, &Label, &Button);
|
Button.VSplitLeft(190.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Chat sound volume"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Chat sound volume"), 14.0f, -1);
|
||||||
g_Config.m_SndChatSoundVolume = (int)(DoScrollbarH(&g_Config.m_SndChatSoundVolume, &Button, g_Config.m_SndChatSoundVolume / 100.0f) * 100.0f);
|
g_Config.m_SndChatSoundVolume = (int)(m_UIEx.DoScrollbarH(&g_Config.m_SndChatSoundVolume, &Button, g_Config.m_SndChatSoundVolume / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// volume slider map sounds
|
// volume slider map sounds
|
||||||
|
@ -1424,9 +1411,8 @@ void CMenus::RenderSettingsSound(CUIRect MainView)
|
||||||
MainView.HSplitTop(5.0f, &Button, &MainView);
|
MainView.HSplitTop(5.0f, &Button, &MainView);
|
||||||
MainView.HSplitTop(20.0f, &Button, &MainView);
|
MainView.HSplitTop(20.0f, &Button, &MainView);
|
||||||
Button.VSplitLeft(190.0f, &Label, &Button);
|
Button.VSplitLeft(190.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Map sound volume"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Map sound volume"), 14.0f, -1);
|
||||||
g_Config.m_SndMapSoundVolume = (int)(DoScrollbarH(&g_Config.m_SndMapSoundVolume, &Button, g_Config.m_SndMapSoundVolume / 100.0f) * 100.0f);
|
g_Config.m_SndMapSoundVolume = (int)(m_UIEx.DoScrollbarH(&g_Config.m_SndMapSoundVolume, &Button, g_Config.m_SndMapSoundVolume / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// volume slider background music
|
// volume slider background music
|
||||||
|
@ -1435,9 +1421,8 @@ void CMenus::RenderSettingsSound(CUIRect MainView)
|
||||||
MainView.HSplitTop(5.0f, &Button, &MainView);
|
MainView.HSplitTop(5.0f, &Button, &MainView);
|
||||||
MainView.HSplitTop(20.0f, &Button, &MainView);
|
MainView.HSplitTop(20.0f, &Button, &MainView);
|
||||||
Button.VSplitLeft(190.0f, &Label, &Button);
|
Button.VSplitLeft(190.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Background music volume"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Background music volume"), 14.0f, -1);
|
||||||
g_Config.m_SndBackgroundMusicVolume = (int)(DoScrollbarH(&g_Config.m_SndBackgroundMusicVolume, &Button, g_Config.m_SndBackgroundMusicVolume / 100.0f) * 100.0f);
|
g_Config.m_SndBackgroundMusicVolume = (int)(m_UIEx.DoScrollbarH(&g_Config.m_SndBackgroundMusicVolume, &Button, g_Config.m_SndBackgroundMusicVolume / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1678,7 +1663,7 @@ ColorHSLA CMenus::RenderHSLColorPicker(const CUIRect *pRect, unsigned int *pColo
|
||||||
|
|
||||||
ColorRGBA Outline(1, 1, 1, 0.25f);
|
ColorRGBA Outline(1, 1, 1, 0.25f);
|
||||||
const float OutlineSize = 3.0f;
|
const float OutlineSize = 3.0f;
|
||||||
Outline.a *= ButtonColorMul(pColor);
|
Outline.a *= UI()->ButtonColorMul(pColor);
|
||||||
|
|
||||||
CUIRect Rect;
|
CUIRect Rect;
|
||||||
pRect->Margin(OutlineSize, &Rect);
|
pRect->Margin(OutlineSize, &Rect);
|
||||||
|
@ -2005,7 +1990,9 @@ ColorHSLA CMenus::RenderHSLScrollbars(CUIRect *pRect, unsigned int *pColor, bool
|
||||||
|
|
||||||
RenderTools()->DrawUIRect(&Button, ColorRGBA(0.15f, 0.15f, 0.15f, 1.0f), CUI::CORNER_ALL, 1.0f);
|
RenderTools()->DrawUIRect(&Button, ColorRGBA(0.15f, 0.15f, 0.15f, 1.0f), CUI::CORNER_ALL, 1.0f);
|
||||||
|
|
||||||
Button.Margin(2.0f, &Button);
|
CUIRect Rail;
|
||||||
|
Button.Margin(2.0f, &Rail);
|
||||||
|
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %03d", aLabels[i], (int)(*paComponent[i] * 255));
|
str_format(aBuf, sizeof(aBuf), "%s: %03d", aLabels[i], (int)(*paComponent[i] * 255));
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
||||||
|
|
||||||
|
@ -2016,17 +2003,17 @@ ColorHSLA CMenus::RenderHSLScrollbars(CUIRect *pRect, unsigned int *pColor, bool
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
{
|
{
|
||||||
ColorInner = CurColorPure;
|
ColorInner = CurColorPure;
|
||||||
RenderHSLColorsRect(&Button);
|
RenderHSLColorsRect(&Rail);
|
||||||
}
|
}
|
||||||
else if(i == 1)
|
else if(i == 1)
|
||||||
{
|
{
|
||||||
RenderHSLSatRect(&Button, CurColorPure);
|
RenderHSLSatRect(&Rail, CurColorPure);
|
||||||
ColorInner = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], CurColorPureHSLA.b, 1));
|
ColorInner = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], CurColorPureHSLA.b, 1));
|
||||||
}
|
}
|
||||||
else if(i == 2)
|
else if(i == 2)
|
||||||
{
|
{
|
||||||
ColorRGBA CurColorSat = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], 0.5f, 1));
|
ColorRGBA CurColorSat = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], 0.5f, 1));
|
||||||
RenderHSLLightRect(&Button, CurColorSat);
|
RenderHSLLightRect(&Rail, CurColorSat);
|
||||||
float LightVal = *paComponent[2];
|
float LightVal = *paComponent[2];
|
||||||
if(ClampedLight)
|
if(ClampedLight)
|
||||||
LightVal = ColorHSLA::DARKEST_LGT + LightVal * (1.0f - ColorHSLA::DARKEST_LGT);
|
LightVal = ColorHSLA::DARKEST_LGT + LightVal * (1.0f - ColorHSLA::DARKEST_LGT);
|
||||||
|
@ -2035,14 +2022,14 @@ ColorHSLA CMenus::RenderHSLScrollbars(CUIRect *pRect, unsigned int *pColor, bool
|
||||||
else if(i == 3)
|
else if(i == 3)
|
||||||
{
|
{
|
||||||
ColorRGBA CurColorFull = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], *paComponent[2], 1));
|
ColorRGBA CurColorFull = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], *paComponent[2], 1));
|
||||||
RenderHSLAlphaRect(&Button, CurColorFull);
|
RenderHSLAlphaRect(&Rail, CurColorFull);
|
||||||
float LightVal = *paComponent[2];
|
float LightVal = *paComponent[2];
|
||||||
if(ClampedLight)
|
if(ClampedLight)
|
||||||
LightVal = ColorHSLA::DARKEST_LGT + LightVal * (1.0f - ColorHSLA::DARKEST_LGT);
|
LightVal = ColorHSLA::DARKEST_LGT + LightVal * (1.0f - ColorHSLA::DARKEST_LGT);
|
||||||
ColorInner = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], LightVal, *paComponent[3]));
|
ColorInner = color_cast<ColorRGBA>(ColorHSLA(CurColorPureHSLA.r, *paComponent[1], LightVal, *paComponent[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
*paComponent[i] = DoScrollbarH(&((char *)pColor)[i], &Button, *paComponent[i], true, &ColorInner);
|
*paComponent[i] = m_UIEx.DoScrollbarH(&((char *)pColor)[i], &Button, *paComponent[i], &ColorInner);
|
||||||
}
|
}
|
||||||
|
|
||||||
*pColor = Color.Pack(Alpha);
|
*pColor = Color.Pack(Alpha);
|
||||||
|
@ -2402,12 +2389,11 @@ void CMenus::RenderSettingsDDNet(CUIRect MainView)
|
||||||
Button.VSplitLeft(160.0f, &LeftLeft, &Button);
|
Button.VSplitLeft(160.0f, &LeftLeft, &Button);
|
||||||
|
|
||||||
Button.VSplitLeft(140.0f, &Label, &Button);
|
Button.VSplitLeft(140.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
char aBuf[256];
|
char aBuf[256];
|
||||||
str_format(aBuf, sizeof(aBuf), Localize("Default length: %d"), g_Config.m_ClReplayLength);
|
str_format(aBuf, sizeof(aBuf), Localize("Default length: %d"), g_Config.m_ClReplayLength);
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
||||||
|
|
||||||
int NewValue = (int)(DoScrollbarH(&g_Config.m_ClReplayLength, &Button, (minimum(g_Config.m_ClReplayLength, 600) - 10) / 590.0f) * 590.0f) + 10;
|
int NewValue = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClReplayLength, &Button, (minimum(g_Config.m_ClReplayLength, 600) - 10) / 590.0f) * 590.0f) + 10;
|
||||||
if(g_Config.m_ClReplayLength < 600 || NewValue < 600)
|
if(g_Config.m_ClReplayLength < 600 || NewValue < 600)
|
||||||
g_Config.m_ClReplayLength = minimum(NewValue, 600);
|
g_Config.m_ClReplayLength = minimum(NewValue, 600);
|
||||||
|
|
||||||
|
@ -2461,9 +2447,8 @@ void CMenus::RenderSettingsDDNet(CUIRect MainView)
|
||||||
CUIRect Button, Label;
|
CUIRect Button, Label;
|
||||||
Left.HSplitTop(20.0f, &Button, &Left);
|
Left.HSplitTop(20.0f, &Button, &Left);
|
||||||
Button.VSplitLeft(120.0f, &Label, &Button);
|
Button.VSplitLeft(120.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Overlay entities"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Overlay entities"), 14.0f, -1);
|
||||||
g_Config.m_ClOverlayEntities = (int)(DoScrollbarH(&g_Config.m_ClOverlayEntities, &Button, g_Config.m_ClOverlayEntities / 100.0f) * 100.0f);
|
g_Config.m_ClOverlayEntities = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClOverlayEntities, &Button, g_Config.m_ClOverlayEntities / 100.0f) * 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -2472,9 +2457,8 @@ void CMenus::RenderSettingsDDNet(CUIRect MainView)
|
||||||
Button.VSplitMid(&LeftLeft, &Button);
|
Button.VSplitMid(&LeftLeft, &Button);
|
||||||
|
|
||||||
Button.VSplitLeft(50.0f, &Label, &Button);
|
Button.VSplitLeft(50.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Size"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Size"), 14.0f, -1);
|
||||||
g_Config.m_ClTextEntitiesSize = (int)(DoScrollbarH(&g_Config.m_ClTextEntitiesSize, &Button, g_Config.m_ClTextEntitiesSize / 100.0f) * 100.0f);
|
g_Config.m_ClTextEntitiesSize = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClTextEntitiesSize, &Button, g_Config.m_ClTextEntitiesSize / 100.0f) * 100.0f);
|
||||||
|
|
||||||
if(DoButton_CheckBox(&g_Config.m_ClTextEntities, Localize("Show text entities"), g_Config.m_ClTextEntities, &LeftLeft))
|
if(DoButton_CheckBox(&g_Config.m_ClTextEntities, Localize("Show text entities"), g_Config.m_ClTextEntities, &LeftLeft))
|
||||||
{
|
{
|
||||||
|
@ -2488,9 +2472,8 @@ void CMenus::RenderSettingsDDNet(CUIRect MainView)
|
||||||
Button.VSplitMid(&LeftLeft, &Button);
|
Button.VSplitMid(&LeftLeft, &Button);
|
||||||
|
|
||||||
Button.VSplitLeft(50.0f, &Label, &Button);
|
Button.VSplitLeft(50.0f, &Label, &Button);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
UI()->DoLabelScaled(&Label, Localize("Alpha"), 14.0f, -1);
|
UI()->DoLabelScaled(&Label, Localize("Alpha"), 14.0f, -1);
|
||||||
g_Config.m_ClShowOthersAlpha = (int)(DoScrollbarH(&g_Config.m_ClShowOthersAlpha, &Button, g_Config.m_ClShowOthersAlpha / 100.0f) * 100.0f);
|
g_Config.m_ClShowOthersAlpha = (int)(m_UIEx.DoScrollbarH(&g_Config.m_ClShowOthersAlpha, &Button, g_Config.m_ClShowOthersAlpha / 100.0f) * 100.0f);
|
||||||
|
|
||||||
if(DoButton_CheckBox(&g_Config.m_ClShowOthers, Localize("Show others"), g_Config.m_ClShowOthers == 1, &LeftLeft))
|
if(DoButton_CheckBox(&g_Config.m_ClShowOthers, Localize("Show others"), g_Config.m_ClShowOthers == 1, &LeftLeft))
|
||||||
{
|
{
|
||||||
|
@ -2517,9 +2500,7 @@ void CMenus::RenderSettingsDDNet(CUIRect MainView)
|
||||||
char aBuf[64];
|
char aBuf[64];
|
||||||
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Default zoom"), g_Config.m_ClDefaultZoom);
|
str_format(aBuf, sizeof(aBuf), "%s: %i", Localize("Default zoom"), g_Config.m_ClDefaultZoom);
|
||||||
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
UI()->DoLabelScaled(&Label, aBuf, 14.0f, -1);
|
||||||
//Right.HSplitTop(20.0f, &Button, 0);
|
g_Config.m_ClDefaultZoom = static_cast<int>(m_UIEx.DoScrollbarH(&g_Config.m_ClDefaultZoom, &Button, g_Config.m_ClDefaultZoom / 20.0f) * 20.0f + 0.1f);
|
||||||
Button.HMargin(2.0f, &Button);
|
|
||||||
g_Config.m_ClDefaultZoom = static_cast<int>(DoScrollbarH(&g_Config.m_ClDefaultZoom, &Button, g_Config.m_ClDefaultZoom / 20.0f) * 20.0f + 0.1f);
|
|
||||||
|
|
||||||
Right.HSplitTop(20.0f, &Button, &Right);
|
Right.HSplitTop(20.0f, &Button, &Right);
|
||||||
if(DoButton_CheckBox(&g_Config.m_ClAntiPing, Localize("AntiPing"), g_Config.m_ClAntiPing, &Button))
|
if(DoButton_CheckBox(&g_Config.m_ClAntiPing, Localize("AntiPing"), g_Config.m_ClAntiPing, &Button))
|
||||||
|
|
|
@ -135,11 +135,9 @@ int CUI::Update(float Mx, float My, float Mwx, float Mwy, int Buttons)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CUI::MouseInside(const CUIRect *r) const
|
bool CUI::MouseInside(const CUIRect *pRect) const
|
||||||
{
|
{
|
||||||
if(m_MouseX >= r->x && m_MouseX < r->x + r->w && m_MouseY >= r->y && m_MouseY < r->y + r->h)
|
return pRect->Inside(m_MouseX, m_MouseY);
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUI::ConvertMouseMove(float *x, float *y) const
|
void CUI::ConvertMouseMove(float *x, float *y) const
|
||||||
|
@ -149,6 +147,15 @@ void CUI::ConvertMouseMove(float *x, float *y) const
|
||||||
*y = *y * Fac;
|
*y = *y * Fac;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float CUI::ButtonColorMul(const void *pID)
|
||||||
|
{
|
||||||
|
if(ActiveItem() == pID)
|
||||||
|
return ButtonColorMulActive();
|
||||||
|
else if(HotItem() == pID)
|
||||||
|
return ButtonColorMulHot();
|
||||||
|
return ButtonColorMulDefault();
|
||||||
|
}
|
||||||
|
|
||||||
CUIRect *CUI::Screen()
|
CUIRect *CUI::Screen()
|
||||||
{
|
{
|
||||||
float Aspect = Graphics()->ScreenAspect();
|
float Aspect = Graphics()->ScreenAspect();
|
||||||
|
@ -367,6 +374,11 @@ void CUIRect::HMargin(float Cut, CUIRect *pOtherRect) const
|
||||||
pOtherRect->h = r.h - 2 * Cut;
|
pOtherRect->h = r.h - 2 * Cut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CUIRect::Inside(float x, float y) const
|
||||||
|
{
|
||||||
|
return x >= this->x && x < this->x + this->w && y >= this->y && y < this->y + this->h;
|
||||||
|
}
|
||||||
|
|
||||||
int CUI::DoButtonLogic(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
int CUI::DoButtonLogic(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
|
||||||
{
|
{
|
||||||
return DoButtonLogic(pID, Checked, pRect);
|
return DoButtonLogic(pID, Checked, pRect);
|
||||||
|
|
|
@ -100,6 +100,8 @@ public:
|
||||||
* @param pOtherRect The CUIRect to place inside *this* CUIRect
|
* @param pOtherRect The CUIRect to place inside *this* CUIRect
|
||||||
*/
|
*/
|
||||||
void HMargin(float Cut, CUIRect *pOtherRect) const;
|
void HMargin(float Cut, CUIRect *pOtherRect) const;
|
||||||
|
|
||||||
|
bool Inside(float x, float y) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SUIAnimator
|
struct SUIAnimator
|
||||||
|
@ -256,9 +258,14 @@ public:
|
||||||
const void *ActiveItem() const { return m_pActiveItem; }
|
const void *ActiveItem() const { return m_pActiveItem; }
|
||||||
const void *LastActiveItem() const { return m_pLastActiveItem; }
|
const void *LastActiveItem() const { return m_pLastActiveItem; }
|
||||||
|
|
||||||
int MouseInside(const CUIRect *pRect) const;
|
bool MouseInside(const CUIRect *pRect) const;
|
||||||
void ConvertMouseMove(float *x, float *y) const;
|
void ConvertMouseMove(float *x, float *y) const;
|
||||||
|
|
||||||
|
float ButtonColorMulActive() { return 0.5f; }
|
||||||
|
float ButtonColorMulHot() { return 1.5f; }
|
||||||
|
float ButtonColorMulDefault() { return 1.0f; }
|
||||||
|
float ButtonColorMul(const void *pID);
|
||||||
|
|
||||||
CUIRect *Screen();
|
CUIRect *Screen();
|
||||||
void MapScreen();
|
void MapScreen();
|
||||||
float PixelSize();
|
float PixelSize();
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
CUIEx::CUIEx(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount)
|
CUIEx::CUIEx(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount)
|
||||||
{
|
{
|
||||||
Init(pUI, pKernel, pRenderTools, pInputEventsArray, pInputEventCount);
|
Init(pUI, pKernel, pRenderTools, pInputEventsArray, pInputEventCount);
|
||||||
|
|
||||||
|
m_MouseSlow = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUIEx::Init(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount)
|
void CUIEx::Init(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount)
|
||||||
|
@ -31,6 +33,181 @@ void CUIEx::Init(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput:
|
||||||
m_pTextRender = Kernel()->RequestInterface<ITextRender>();
|
m_pTextRender = Kernel()->RequestInterface<ITextRender>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CUIEx::ConvertMouseMove(float *pX, float *pY) const
|
||||||
|
{
|
||||||
|
UI()->ConvertMouseMove(pX, pY);
|
||||||
|
|
||||||
|
if(m_MouseSlow)
|
||||||
|
{
|
||||||
|
const float SlowMouseFactor = 0.05f;
|
||||||
|
*pX *= SlowMouseFactor;
|
||||||
|
*pY *= SlowMouseFactor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float CUIEx::DoScrollbarV(const void *pID, const CUIRect *pRect, float Current)
|
||||||
|
{
|
||||||
|
static float s_OffsetY;
|
||||||
|
|
||||||
|
CUIRect Rail;
|
||||||
|
pRect->Margin(5.0f, &Rail);
|
||||||
|
|
||||||
|
CUIRect Handle;
|
||||||
|
Rail.HSplitTop(clamp(33.0f, Rail.h / 8.0f, Rail.h), &Handle, 0);
|
||||||
|
Current = clamp(Current, 0.0f, 1.0f);
|
||||||
|
Handle.y = Rail.y + (Rail.h - Handle.h) * Current;
|
||||||
|
|
||||||
|
// logic
|
||||||
|
const bool InsideRail = UI()->MouseInside(&Rail);
|
||||||
|
const bool InsideHandle = UI()->MouseInside(&Handle);
|
||||||
|
bool Grabbed = false; // whether to apply the offset
|
||||||
|
|
||||||
|
if(UI()->ActiveItem() == pID)
|
||||||
|
{
|
||||||
|
if(UI()->MouseButton(0))
|
||||||
|
{
|
||||||
|
Grabbed = true;
|
||||||
|
if(Input()->KeyIsPressed(KEY_LSHIFT) || Input()->KeyIsPressed(KEY_RSHIFT))
|
||||||
|
m_MouseSlow = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(UI()->HotItem() == pID)
|
||||||
|
{
|
||||||
|
if(UI()->MouseButton(0))
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(pID);
|
||||||
|
s_OffsetY = UI()->MouseY() - Handle.y;
|
||||||
|
Grabbed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(UI()->MouseButtonClicked(0) && !InsideHandle && InsideRail)
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(pID);
|
||||||
|
s_OffsetY = Handle.h * 0.5f;
|
||||||
|
Grabbed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(InsideHandle)
|
||||||
|
UI()->SetHotItem(pID);
|
||||||
|
|
||||||
|
float ReturnValue = Current;
|
||||||
|
if(Grabbed)
|
||||||
|
{
|
||||||
|
const float Min = Rail.y;
|
||||||
|
const float Max = Rail.h - Handle.h;
|
||||||
|
const float Cur = UI()->MouseY() - s_OffsetY;
|
||||||
|
ReturnValue = clamp((Cur - Min) / Max, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// render
|
||||||
|
RenderTools()->DrawUIRect(&Rail, ColorRGBA(0, 0, 0, 0.25f), CUI::CORNER_ALL, Rail.w / 2.0f);
|
||||||
|
|
||||||
|
float ColorSlider;
|
||||||
|
if(UI()->ActiveItem() == pID)
|
||||||
|
ColorSlider = 1.0f;
|
||||||
|
else if(UI()->HotItem() == pID)
|
||||||
|
ColorSlider = 0.9f;
|
||||||
|
else
|
||||||
|
ColorSlider = 0.75f;
|
||||||
|
|
||||||
|
RenderTools()->DrawUIRect(&Handle, ColorRGBA(ColorSlider, ColorSlider, ColorSlider, 0.75f), CUI::CORNER_ALL, Handle.w / 2.0f);
|
||||||
|
|
||||||
|
return ReturnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
float CUIEx::DoScrollbarH(const void *pID, const CUIRect *pRect, float Current, const ColorRGBA *pColorInner)
|
||||||
|
{
|
||||||
|
static float s_OffsetX;
|
||||||
|
|
||||||
|
CUIRect Rail;
|
||||||
|
if(pColorInner)
|
||||||
|
Rail = *pRect;
|
||||||
|
else
|
||||||
|
pRect->HMargin(5.0f, &Rail);
|
||||||
|
|
||||||
|
CUIRect Handle;
|
||||||
|
Rail.VSplitLeft(pColorInner ? 8.0f : clamp(33.0f, Rail.w / 8.0f, Rail.w), &Handle, 0);
|
||||||
|
Current = clamp(Current, 0.0f, 1.0f);
|
||||||
|
Handle.x += (Rail.w - Handle.w) * Current;
|
||||||
|
|
||||||
|
// logic
|
||||||
|
const bool InsideRail = UI()->MouseInside(&Rail);
|
||||||
|
const bool InsideHandle = UI()->MouseInside(&Handle);
|
||||||
|
bool Grabbed = false; // whether to apply the offset
|
||||||
|
|
||||||
|
if(UI()->ActiveItem() == pID)
|
||||||
|
{
|
||||||
|
if(UI()->MouseButton(0))
|
||||||
|
{
|
||||||
|
Grabbed = true;
|
||||||
|
if(Input()->KeyIsPressed(KEY_LSHIFT) || Input()->KeyIsPressed(KEY_RSHIFT))
|
||||||
|
m_MouseSlow = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(UI()->HotItem() == pID)
|
||||||
|
{
|
||||||
|
if(UI()->MouseButton(0))
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(pID);
|
||||||
|
s_OffsetX = UI()->MouseX() - Handle.x;
|
||||||
|
Grabbed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(UI()->MouseButtonClicked(0) && !InsideHandle && InsideRail)
|
||||||
|
{
|
||||||
|
UI()->SetActiveItem(pID);
|
||||||
|
s_OffsetX = Handle.w * 0.5f;
|
||||||
|
Grabbed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(InsideHandle)
|
||||||
|
UI()->SetHotItem(pID);
|
||||||
|
|
||||||
|
float ReturnValue = Current;
|
||||||
|
if(Grabbed)
|
||||||
|
{
|
||||||
|
const float Min = Rail.x;
|
||||||
|
const float Max = Rail.w - Handle.w;
|
||||||
|
const float Cur = UI()->MouseX() - s_OffsetX;
|
||||||
|
ReturnValue = clamp((Cur - Min) / Max, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// render
|
||||||
|
if(pColorInner)
|
||||||
|
{
|
||||||
|
CUIRect Slider;
|
||||||
|
Handle.VMargin(-2.0f, &Slider);
|
||||||
|
Slider.HMargin(-3.0f, &Slider);
|
||||||
|
RenderTools()->DrawUIRect(&Slider, ColorRGBA(0.15f, 0.15f, 0.15f, 1.0f), CUI::CORNER_ALL, 5.0f);
|
||||||
|
Slider.Margin(2.0f, &Slider);
|
||||||
|
RenderTools()->DrawUIRect(&Slider, *pColorInner, CUI::CORNER_ALL, 3.0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RenderTools()->DrawUIRect(&Rail, ColorRGBA(0, 0, 0, 0.25f), CUI::CORNER_ALL, Rail.h / 2.0f);
|
||||||
|
|
||||||
|
float ColorSlider;
|
||||||
|
if(UI()->ActiveItem() == pID)
|
||||||
|
ColorSlider = 1.0f;
|
||||||
|
else if(UI()->HotItem() == pID)
|
||||||
|
ColorSlider = 0.9f;
|
||||||
|
else
|
||||||
|
ColorSlider = 0.75f;
|
||||||
|
|
||||||
|
RenderTools()->DrawUIRect(&Handle, ColorRGBA(ColorSlider, ColorSlider, ColorSlider, 0.75f), CUI::CORNER_ALL, Handle.h / 2.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ReturnValue;
|
||||||
|
}
|
||||||
|
|
||||||
int CUIEx::DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden, int Corners, const char *pEmptyText)
|
int CUIEx::DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden, int Corners, const char *pEmptyText)
|
||||||
{
|
{
|
||||||
int Inside = UI()->MouseInside(pRect);
|
int Inside = UI()->MouseInside(pRect);
|
||||||
|
|
|
@ -32,6 +32,7 @@ class CUIEx
|
||||||
int m_MousePressY = 0;
|
int m_MousePressY = 0;
|
||||||
int m_MouseCurX = 0;
|
int m_MouseCurX = 0;
|
||||||
int m_MouseCurY = 0;
|
int m_MouseCurY = 0;
|
||||||
|
bool m_MouseSlow;
|
||||||
int m_CurSelStart = 0;
|
int m_CurSelStart = 0;
|
||||||
int m_CurSelEnd = 0;
|
int m_CurSelEnd = 0;
|
||||||
void *m_pSelItem = nullptr;
|
void *m_pSelItem = nullptr;
|
||||||
|
@ -39,12 +40,12 @@ class CUIEx
|
||||||
int m_CurCursor = 0;
|
int m_CurCursor = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CUI *UI() { return m_pUI; }
|
CUI *UI() const { return m_pUI; }
|
||||||
IInput *Input() { return m_pInput; }
|
IInput *Input() const { return m_pInput; }
|
||||||
ITextRender *TextRender() { return m_pTextRender; }
|
ITextRender *TextRender() const { return m_pTextRender; }
|
||||||
IKernel *Kernel() { return m_pKernel; }
|
IKernel *Kernel() const { return m_pKernel; }
|
||||||
IGraphics *Graphics() { return m_pGraphics; }
|
IGraphics *Graphics() const { return m_pGraphics; }
|
||||||
CRenderTools *RenderTools() { return m_pRenderTools; }
|
CRenderTools *RenderTools() const { return m_pRenderTools; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CUIEx(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount);
|
CUIEx(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount);
|
||||||
|
@ -52,6 +53,11 @@ public:
|
||||||
|
|
||||||
void Init(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount);
|
void Init(CUI *pUI, IKernel *pKernel, CRenderTools *pRenderTools, IInput::CEvent *pInputEventsArray, int *pInputEventCount);
|
||||||
|
|
||||||
|
void ConvertMouseMove(float *pX, float *pY) const;
|
||||||
|
void ResetMouseSlow() { m_MouseSlow = false; }
|
||||||
|
|
||||||
|
float DoScrollbarV(const void *pID, const CUIRect *pRect, float Current);
|
||||||
|
float DoScrollbarH(const void *pID, const CUIRect *pRect, float Current, const ColorRGBA *pColorInner = NULL);
|
||||||
int DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
int DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrSize, float FontSize, float *Offset, bool Hidden = false, int Corners = CUI::CORNER_ALL, const char *pEmptyText = "");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -315,7 +315,7 @@ int CEditor::DoClearableEditBox(void *pID, void *pClearID, const CUIRect *pRect,
|
||||||
ReturnValue = true;
|
ReturnValue = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderTools()->DrawUIRect(&ClearButton, ColorRGBA(1, 1, 1, 0.33f * ButtonColorMul(pClearID)), Corners & ~CUI::CORNER_L, 3.0f);
|
RenderTools()->DrawUIRect(&ClearButton, ColorRGBA(1, 1, 1, 0.33f * UI()->ButtonColorMul(pClearID)), Corners & ~CUI::CORNER_L, 3.0f);
|
||||||
UI()->DoLabel(&ClearButton, "×", ClearButton.h * 0.8f, 0);
|
UI()->DoLabel(&ClearButton, "×", ClearButton.h * 0.8f, 0);
|
||||||
if(UI()->DoButtonLogic(pClearID, "×", 0, &ClearButton))
|
if(UI()->DoButtonLogic(pClearID, "×", 0, &ClearButton))
|
||||||
{
|
{
|
||||||
|
@ -333,71 +333,6 @@ int CEditor::DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned Str
|
||||||
return m_UIEx.DoEditBox(pID, pRect, pStr, StrSize, FontSize, Offset, Hidden, Corners);
|
return m_UIEx.DoEditBox(pID, pRect, pStr, StrSize, FontSize, Offset, Hidden, Corners);
|
||||||
}
|
}
|
||||||
|
|
||||||
float CEditor::ButtonColorMul(const void *pID)
|
|
||||||
{
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
return 0.5f;
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
return 1.5f;
|
|
||||||
return 1.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
float CEditor::UiDoScrollbarV(const void *pID, const CUIRect *pRect, float Current)
|
|
||||||
{
|
|
||||||
CUIRect Handle;
|
|
||||||
static float s_OffsetY;
|
|
||||||
pRect->HSplitTop(33, &Handle, 0);
|
|
||||||
|
|
||||||
Handle.y += (pRect->h - Handle.h) * Current;
|
|
||||||
|
|
||||||
// logic
|
|
||||||
float Ret = Current;
|
|
||||||
int Inside = UI()->MouseInside(&Handle);
|
|
||||||
|
|
||||||
if(UI()->ActiveItem() == pID)
|
|
||||||
{
|
|
||||||
if(!UI()->MouseButton(0))
|
|
||||||
UI()->SetActiveItem(0);
|
|
||||||
|
|
||||||
float Min = pRect->y;
|
|
||||||
float Max = pRect->h - Handle.h;
|
|
||||||
float Cur = UI()->MouseY() - s_OffsetY;
|
|
||||||
Ret = (Cur - Min) / Max;
|
|
||||||
if(Ret < 0.0f)
|
|
||||||
Ret = 0.0f;
|
|
||||||
if(Ret > 1.0f)
|
|
||||||
Ret = 1.0f;
|
|
||||||
}
|
|
||||||
else if(UI()->HotItem() == pID)
|
|
||||||
{
|
|
||||||
if(UI()->MouseButton(0))
|
|
||||||
{
|
|
||||||
UI()->SetActiveItem(pID);
|
|
||||||
s_OffsetY = UI()->MouseY() - Handle.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Inside)
|
|
||||||
UI()->SetHotItem(pID);
|
|
||||||
|
|
||||||
// render
|
|
||||||
CUIRect Rail;
|
|
||||||
pRect->VMargin(5.0f, &Rail);
|
|
||||||
RenderTools()->DrawUIRect(&Rail, ColorRGBA(1, 1, 1, 0.25f), 0, 0.0f);
|
|
||||||
|
|
||||||
CUIRect Slider = Handle;
|
|
||||||
Slider.w = Rail.x - Slider.x;
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_L, 2.5f);
|
|
||||||
Slider.x = Rail.x + Rail.w;
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_R, 2.5f);
|
|
||||||
|
|
||||||
Slider = Handle;
|
|
||||||
Slider.Margin(5.0f, &Slider);
|
|
||||||
RenderTools()->DrawUIRect(&Slider, ColorRGBA(1, 1, 1, 0.25f * ButtonColorMul(pID)), CUI::CORNER_ALL, 2.5f);
|
|
||||||
|
|
||||||
return Ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ColorRGBA CEditor::GetButtonColor(const void *pID, int Checked)
|
ColorRGBA CEditor::GetButtonColor(const void *pID, int Checked)
|
||||||
{
|
{
|
||||||
if(Checked < 0)
|
if(Checked < 0)
|
||||||
|
@ -3127,16 +3062,14 @@ int CEditor::DoProperties(CUIRect *pToolBox, CProperty *pProps, int *pIDs, int *
|
||||||
|
|
||||||
void CEditor::RenderLayers(CUIRect ToolBox, CUIRect View)
|
void CEditor::RenderLayers(CUIRect ToolBox, CUIRect View)
|
||||||
{
|
{
|
||||||
CUIRect LayersBox = ToolBox;
|
|
||||||
|
|
||||||
if(!m_GuiActive)
|
if(!m_GuiActive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
CUIRect LayersBox = ToolBox;
|
||||||
CUIRect Slot, Button;
|
CUIRect Slot, Button;
|
||||||
char aBuf[64];
|
char aBuf[64];
|
||||||
|
|
||||||
float LayersHeight = 12.0f; // Height of AddGroup button
|
float LayersHeight = 12.0f; // Height of AddGroup button
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
|
|
||||||
for(int g = 0; g < m_Map.m_lGroups.size(); g++)
|
for(int g = 0; g < m_Map.m_lGroups.size(); g++)
|
||||||
|
@ -3153,10 +3086,8 @@ void CEditor::RenderLayers(CUIRect ToolBox, CUIRect View)
|
||||||
if(LayersHeight > LayersBox.h) // Do we even need a scrollbar?
|
if(LayersHeight > LayersBox.h) // Do we even need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
LayersBox.VSplitRight(15.0f, &LayersBox, &Scroll);
|
LayersBox.VSplitRight(20.0f, &LayersBox, &Scroll);
|
||||||
LayersBox.VSplitRight(3.0f, &LayersBox, 0); // extra spacing
|
s_ScrollValue = UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&LayersBox))
|
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&LayersBox))
|
||||||
{
|
{
|
||||||
|
@ -3791,21 +3722,18 @@ void CEditor::SortImages()
|
||||||
|
|
||||||
void CEditor::RenderImages(CUIRect ToolBox, CUIRect View)
|
void CEditor::RenderImages(CUIRect ToolBox, CUIRect View)
|
||||||
{
|
{
|
||||||
static int s_ScrollBar = 0;
|
if(!m_GuiActive)
|
||||||
|
return;
|
||||||
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
float ImagesHeight = 30.0f + 14.0f * m_Map.m_lImages.size() + 27.0f;
|
float ImagesHeight = 30.0f + 14.0f * m_Map.m_lImages.size() + 27.0f;
|
||||||
float ScrollDifference = ImagesHeight - ToolBox.h;
|
float ScrollDifference = ImagesHeight - ToolBox.h;
|
||||||
|
|
||||||
if(!m_GuiActive)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(ImagesHeight > ToolBox.h) // Do we even need a scrollbar?
|
if(ImagesHeight > ToolBox.h) // Do we even need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ToolBox.VSplitRight(15.0f, &ToolBox, &Scroll);
|
ToolBox.VSplitRight(20.0f, &ToolBox, &Scroll);
|
||||||
ToolBox.VSplitRight(3.0f, &ToolBox, 0); // extra spacing
|
s_ScrollValue = UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ToolBox))
|
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ToolBox))
|
||||||
{
|
{
|
||||||
|
@ -4012,21 +3940,18 @@ void CEditor::RenderImages(CUIRect ToolBox, CUIRect View)
|
||||||
|
|
||||||
void CEditor::RenderSounds(CUIRect ToolBox, CUIRect View)
|
void CEditor::RenderSounds(CUIRect ToolBox, CUIRect View)
|
||||||
{
|
{
|
||||||
static int s_ScrollBar = 0;
|
if(!m_GuiActive)
|
||||||
|
return;
|
||||||
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
float SoundsHeight = 30.0f + 14.0f * m_Map.m_lSounds.size() + 27.0f;
|
float SoundsHeight = 30.0f + 14.0f * m_Map.m_lSounds.size() + 27.0f;
|
||||||
float ScrollDifference = SoundsHeight - ToolBox.h;
|
float ScrollDifference = SoundsHeight - ToolBox.h;
|
||||||
|
|
||||||
if(!m_GuiActive)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(SoundsHeight > ToolBox.h) // Do we even need a scrollbar?
|
if(SoundsHeight > ToolBox.h) // Do we even need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ToolBox.VSplitRight(15.0f, &ToolBox, &Scroll);
|
ToolBox.VSplitRight(20.0f, &ToolBox, &Scroll);
|
||||||
ToolBox.VSplitRight(3.0f, &ToolBox, 0); // extra spacing
|
s_ScrollValue = UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ToolBox))
|
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ToolBox))
|
||||||
{
|
{
|
||||||
|
@ -4219,7 +4144,7 @@ void CEditor::RenderFileDialog()
|
||||||
View.HSplitBottom(10.0f, &View, 0); // some spacing
|
View.HSplitBottom(10.0f, &View, 0); // some spacing
|
||||||
if(m_FileDialogFileType == CEditor::FILETYPE_IMG)
|
if(m_FileDialogFileType == CEditor::FILETYPE_IMG)
|
||||||
View.VSplitMid(&View, &Preview);
|
View.VSplitMid(&View, &Preview);
|
||||||
View.VSplitRight(15.0f, &View, &Scroll);
|
View.VSplitRight(20.0f, &View, &Scroll);
|
||||||
|
|
||||||
// title
|
// title
|
||||||
RenderTools()->DrawUIRect(&Title, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_ALL, 4.0f);
|
RenderTools()->DrawUIRect(&Title, ColorRGBA(1, 1, 1, 0.25f), CUI::CORNER_ALL, 4.0f);
|
||||||
|
@ -4269,7 +4194,7 @@ void CEditor::RenderFileDialog()
|
||||||
// clearSearchbox button
|
// clearSearchbox button
|
||||||
{
|
{
|
||||||
static int s_ClearButton = 0;
|
static int s_ClearButton = 0;
|
||||||
RenderTools()->DrawUIRect(&ClearBox, ColorRGBA(1, 1, 1, 0.33f * ButtonColorMul(&s_ClearButton)), CUI::CORNER_R, 3.0f);
|
RenderTools()->DrawUIRect(&ClearBox, ColorRGBA(1, 1, 1, 0.33f * UI()->ButtonColorMul(&s_ClearButton)), CUI::CORNER_R, 3.0f);
|
||||||
UI()->DoLabel(&ClearBox, "×", 10.0f, 0);
|
UI()->DoLabel(&ClearBox, "×", 10.0f, 0);
|
||||||
if(UI()->DoButtonLogic(&s_ClearButton, "×", 0, &ClearBox))
|
if(UI()->DoButtonLogic(&s_ClearButton, "×", 0, &ClearBox))
|
||||||
{
|
{
|
||||||
|
@ -4285,9 +4210,7 @@ void CEditor::RenderFileDialog()
|
||||||
m_FileDialogOpening = false;
|
m_FileDialogOpening = false;
|
||||||
|
|
||||||
int Num = (int)(View.h / 17.0f) + 1;
|
int Num = (int)(View.h / 17.0f) + 1;
|
||||||
static int ScrollBar = 0;
|
m_FileDialogScrollValue = UIEx()->DoScrollbarV(&m_FileDialogScrollValue, &Scroll, m_FileDialogScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
m_FileDialogScrollValue = UiDoScrollbarV(&ScrollBar, &Scroll, m_FileDialogScrollValue);
|
|
||||||
|
|
||||||
int ScrollNum = 0;
|
int ScrollNum = 0;
|
||||||
for(int i = 0; i < m_FileList.size(); i++)
|
for(int i = 0; i < m_FileList.size(); i++)
|
||||||
|
@ -4674,11 +4597,8 @@ void CEditor::RenderUndoList(CUIRect View)
|
||||||
{
|
{
|
||||||
CUIRect List, Preview, Scroll, Button;
|
CUIRect List, Preview, Scroll, Button;
|
||||||
View.VSplitMid(&List, &Preview);
|
View.VSplitMid(&List, &Preview);
|
||||||
List.VSplitRight(15.0f, &List, &Scroll);
|
List.VSplitRight(20.0f, &List, &Scroll);
|
||||||
//int Num = (int)(List.h/17.0f)+1;
|
m_UndoScrollValue = UIEx()->DoScrollbarV(&m_UndoScrollValue, &Scroll, m_UndoScrollValue);
|
||||||
static int ScrollBar = 0;
|
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
m_UndoScrollValue = UiDoScrollbarV(&ScrollBar, &Scroll, m_UndoScrollValue);
|
|
||||||
|
|
||||||
float TopY = List.y;
|
float TopY = List.y;
|
||||||
float Height = List.h;
|
float Height = List.h;
|
||||||
|
@ -5428,7 +5348,6 @@ void CEditor::RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEd
|
||||||
View.Margin(1.0f, &ListBox);
|
View.Margin(1.0f, &ListBox);
|
||||||
|
|
||||||
float ListHeight = 17.0f * m_Map.m_lSettings.size();
|
float ListHeight = 17.0f * m_Map.m_lSettings.size();
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
|
|
||||||
float ScrollDifference = ListHeight - ListBox.h;
|
float ScrollDifference = ListHeight - ListBox.h;
|
||||||
|
@ -5436,10 +5355,8 @@ void CEditor::RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEd
|
||||||
if(ListHeight > ListBox.h) // Do we even need a scrollbar?
|
if(ListHeight > ListBox.h) // Do we even need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ListBox.VSplitRight(15.0f, &ListBox, &Scroll);
|
ListBox.VSplitRight(20.0f, &ListBox, &Scroll);
|
||||||
ListBox.VSplitRight(3.0f, &ListBox, 0); // extra spacing
|
s_ScrollValue = UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ListBox))
|
if(UI()->MouseInside(&Scroll) || UI()->MouseInside(&ListBox))
|
||||||
{
|
{
|
||||||
|
@ -6325,7 +6242,8 @@ void CEditor::UpdateAndRender()
|
||||||
float rx = 0, ry = 0;
|
float rx = 0, ry = 0;
|
||||||
{
|
{
|
||||||
Input()->MouseRelative(&rx, &ry);
|
Input()->MouseRelative(&rx, &ry);
|
||||||
UI()->ConvertMouseMove(&rx, &ry);
|
m_UIEx.ConvertMouseMove(&rx, &ry);
|
||||||
|
m_UIEx.ResetMouseSlow();
|
||||||
|
|
||||||
m_MouseDeltaX = rx;
|
m_MouseDeltaX = rx;
|
||||||
m_MouseDeltaY = ry;
|
m_MouseDeltaY = ry;
|
||||||
|
|
|
@ -652,6 +652,7 @@ public:
|
||||||
class ITextRender *TextRender() { return m_pTextRender; };
|
class ITextRender *TextRender() { return m_pTextRender; };
|
||||||
class IStorage *Storage() { return m_pStorage; };
|
class IStorage *Storage() { return m_pStorage; };
|
||||||
CUI *UI() { return &m_UI; }
|
CUI *UI() { return &m_UI; }
|
||||||
|
CUIEx *UIEx() { return &m_UIEx; }
|
||||||
CRenderTools *RenderTools() { return &m_RenderTools; }
|
CRenderTools *RenderTools() { return &m_RenderTools; }
|
||||||
|
|
||||||
CEditor() :
|
CEditor() :
|
||||||
|
@ -1024,8 +1025,6 @@ public:
|
||||||
void PopupSelectSoundInvoke(int Current, float x, float y);
|
void PopupSelectSoundInvoke(int Current, float x, float y);
|
||||||
int PopupSelectSoundResult();
|
int PopupSelectSoundResult();
|
||||||
|
|
||||||
float ButtonColorMul(const void *pID);
|
|
||||||
|
|
||||||
void DoQuadEnvelopes(const array<CQuad> &m_lQuads, IGraphics::CTextureHandle Texture = IGraphics::CTextureHandle());
|
void DoQuadEnvelopes(const array<CQuad> &m_lQuads, IGraphics::CTextureHandle Texture = IGraphics::CTextureHandle());
|
||||||
void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex);
|
void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex);
|
||||||
void DoQuadPoint(CQuad *pQuad, int QuadIndex, int v);
|
void DoQuadPoint(CQuad *pQuad, int QuadIndex, int v);
|
||||||
|
@ -1035,7 +1034,6 @@ public:
|
||||||
void DoMapEditor(CUIRect View);
|
void DoMapEditor(CUIRect View);
|
||||||
void DoToolbar(CUIRect Toolbar);
|
void DoToolbar(CUIRect Toolbar);
|
||||||
void DoQuad(CQuad *pQuad, int Index);
|
void DoQuad(CQuad *pQuad, int Index);
|
||||||
float UiDoScrollbarV(const void *pID, const CUIRect *pRect, float Current);
|
|
||||||
ColorRGBA GetButtonColor(const void *pID, int Checked);
|
ColorRGBA GetButtonColor(const void *pID, int Checked);
|
||||||
|
|
||||||
static void ReplaceImage(const char *pFilename, int StorageType, void *pUser);
|
static void ReplaceImage(const char *pFilename, int StorageType, void *pUser);
|
||||||
|
|
|
@ -1207,7 +1207,6 @@ int CEditor::PopupSelectImage(CEditor *pEditor, CUIRect View, void *pContext)
|
||||||
|
|
||||||
int ShowImage = g_SelectImageCurrent;
|
int ShowImage = g_SelectImageCurrent;
|
||||||
|
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
float ImagesHeight = pEditor->m_Map.m_lImages.size() * 14;
|
float ImagesHeight = pEditor->m_Map.m_lImages.size() * 14;
|
||||||
float ScrollDifference = ImagesHeight - ButtonBar.h;
|
float ScrollDifference = ImagesHeight - ButtonBar.h;
|
||||||
|
@ -1215,10 +1214,8 @@ int CEditor::PopupSelectImage(CEditor *pEditor, CUIRect View, void *pContext)
|
||||||
if(pEditor->m_Map.m_lImages.size() > 20) // Do we need a scrollbar?
|
if(pEditor->m_Map.m_lImages.size() > 20) // Do we need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ButtonBar.VSplitRight(15.0f, &ButtonBar, &Scroll);
|
ButtonBar.VSplitRight(20.0f, &ButtonBar, &Scroll);
|
||||||
ButtonBar.VSplitRight(3.0f, &ButtonBar, 0); // extra spacing
|
s_ScrollValue = pEditor->UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = pEditor->UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(pEditor->UI()->MouseInside(&Scroll) || pEditor->UI()->MouseInside(&ButtonBar))
|
if(pEditor->UI()->MouseInside(&Scroll) || pEditor->UI()->MouseInside(&ButtonBar))
|
||||||
{
|
{
|
||||||
|
@ -1317,7 +1314,6 @@ int CEditor::PopupSelectSound(CEditor *pEditor, CUIRect View, void *pContext)
|
||||||
View.VSplitLeft(80.0f, &ButtonBar, &View);
|
View.VSplitLeft(80.0f, &ButtonBar, &View);
|
||||||
View.Margin(10.0f, &SoundView);
|
View.Margin(10.0f, &SoundView);
|
||||||
|
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
float SoundsHeight = pEditor->m_Map.m_lSounds.size() * 14;
|
float SoundsHeight = pEditor->m_Map.m_lSounds.size() * 14;
|
||||||
float ScrollDifference = SoundsHeight - ButtonBar.h;
|
float ScrollDifference = SoundsHeight - ButtonBar.h;
|
||||||
|
@ -1325,10 +1321,8 @@ int CEditor::PopupSelectSound(CEditor *pEditor, CUIRect View, void *pContext)
|
||||||
if(pEditor->m_Map.m_lSounds.size() > 20) // Do we need a scrollbar?
|
if(pEditor->m_Map.m_lSounds.size() > 20) // Do we need a scrollbar?
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
ButtonBar.VSplitRight(15.0f, &ButtonBar, &Scroll);
|
ButtonBar.VSplitRight(20.0f, &ButtonBar, &Scroll);
|
||||||
ButtonBar.VSplitRight(3.0f, &ButtonBar, 0); // extra spacing
|
s_ScrollValue = pEditor->UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.0f, &Scroll);
|
|
||||||
s_ScrollValue = pEditor->UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(pEditor->UI()->MouseInside(&Scroll) || pEditor->UI()->MouseInside(&ButtonBar))
|
if(pEditor->UI()->MouseInside(&Scroll) || pEditor->UI()->MouseInside(&ButtonBar))
|
||||||
{
|
{
|
||||||
|
@ -1448,7 +1442,6 @@ int CEditor::PopupSelectConfigAutoMap(CEditor *pEditor, CUIRect View, void *pCon
|
||||||
const float ButtonHeight = 12.0f;
|
const float ButtonHeight = 12.0f;
|
||||||
const float ButtonMargin = 2.0f;
|
const float ButtonMargin = 2.0f;
|
||||||
|
|
||||||
static int s_ScrollBar = 0;
|
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
|
|
||||||
// Add 1 more for the "None" option.
|
// Add 1 more for the "None" option.
|
||||||
|
@ -1459,10 +1452,8 @@ int CEditor::PopupSelectConfigAutoMap(CEditor *pEditor, CUIRect View, void *pCon
|
||||||
if(ListHeight > View.h)
|
if(ListHeight > View.h)
|
||||||
{
|
{
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
View.VSplitRight(15.f, &View, &Scroll);
|
View.VSplitRight(20.0f, &View, &Scroll);
|
||||||
|
s_ScrollValue = pEditor->UIEx()->DoScrollbarV(&s_ScrollValue, &Scroll, s_ScrollValue);
|
||||||
Scroll.HMargin(5.f, &Scroll);
|
|
||||||
s_ScrollValue = pEditor->UiDoScrollbarV(&s_ScrollBar, &Scroll, s_ScrollValue);
|
|
||||||
|
|
||||||
if(pEditor->UI()->MouseInside(&View) || pEditor->UI()->MouseInside(&Scroll))
|
if(pEditor->UI()->MouseInside(&View) || pEditor->UI()->MouseInside(&Scroll))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue