changed some stupid things

This commit is contained in:
SushiTee 2012-08-12 18:41:49 +02:00
parent 509be82c4b
commit 37c970bc49
6 changed files with 108 additions and 138 deletions

View file

@ -649,147 +649,37 @@ static int gs_ListBoxItemsPerRow;
static float gs_ListBoxScrollValue;
static bool gs_ListBoxItemActivated;
void CMenus::UiDoListboxStart(const void *pID, const CUIRect *pRect, float RowHeight, const char *pTitle, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue)
void CMenus::UiDoListboxHeader(const CUIRect *pRect, const char *pTitle, float HeaderHeight, float Spaceing)
{
CUIRect Scroll, Row;
CUIRect Header;
CUIRect View = *pRect;
CUIRect Header, Footer;
// background
RenderTools()->DrawUIRect(&View, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 5.0f);
View.HSplitTop(ms_ListheaderHeight+Spaceing, &Header, 0);
RenderTools()->DrawUIRect(&Header, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_T, 5.0f);
// draw header
View.HSplitTop(ms_ListheaderHeight, &Header, &View);
UI()->DoLabel(&Header, pTitle, Header.h*ms_FontmodHeight, 0);
// draw footers
View.HSplitBottom(ms_ListheaderHeight, &View, &Footer);
Footer.VSplitLeft(10.0f, 0, &Footer);
UI()->DoLabel(&Footer, pBottomText, Footer.h*ms_FontmodHeight, 0);
// list background
View.HSplitTop(2.0f, 0, &View);
RenderTools()->DrawUIRect(&View, vec4(0.0f, 0.0f, 0.0f, 0.25f), 0, 0.0f);
// prepare the scroll
View.VSplitRight(20.0f, &View, &Scroll);
View.HSplitTop(Spaceing, &Header, &View);
// setup the variables
gs_ListBoxOriginalView = View;
gs_ListBoxSelectedIndex = SelectedIndex;
gs_ListBoxNewSelected = SelectedIndex;
gs_ListBoxItemIndex = 0;
gs_ListBoxRowHeight = RowHeight;
gs_ListBoxNumItems = NumItems;
gs_ListBoxItemsPerRow = ItemsPerRow;
gs_ListBoxDoneEvents = 0;
gs_ListBoxScrollValue = ScrollValue;
gs_ListBoxItemActivated = false;
// do the scrollbar
View.HSplitTop(gs_ListBoxRowHeight, &Row, 0);
int NumViewable = (int)(gs_ListBoxOriginalView.h/Row.h) + 1;
int Num = (NumItems+gs_ListBoxItemsPerRow-1)/gs_ListBoxItemsPerRow-NumViewable+1;
if(Num < 0)
Num = 0;
if(Num > 0)
{
if(Input()->KeyPresses(KEY_MOUSE_WHEEL_UP) && UI()->MouseInside(&View))
gs_ListBoxScrollValue -= 3.0f/Num;
if(Input()->KeyPresses(KEY_MOUSE_WHEEL_DOWN) && UI()->MouseInside(&View))
gs_ListBoxScrollValue += 3.0f/Num;
if(gs_ListBoxScrollValue < 0.0f) gs_ListBoxScrollValue = 0.0f;
if(gs_ListBoxScrollValue > 1.0f) gs_ListBoxScrollValue = 1.0f;
}
Scroll.HMargin(5.0f, &Scroll);
gs_ListBoxScrollValue = DoScrollbarV(pID, &Scroll, gs_ListBoxScrollValue);
// the list
gs_ListBoxView = gs_ListBoxOriginalView;
gs_ListBoxView.VMargin(5.0f, &gs_ListBoxView);
UI()->ClipEnable(&gs_ListBoxView);
gs_ListBoxView.y -= gs_ListBoxScrollValue*Num*Row.h;
}
void CMenus::UiDoListboxStartVideo(const void *pID, const CUIRect *pRect, float RowHeight, const char *pTitle, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue, float ButtonHeight, float Spaceing)
void CMenus::UiDoListboxStart(const void *pID, float RowHeight, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue, const CUIRect *pRect)
{
CUIRect Scroll, Row, Left, Right;
CUIRect View = *pRect;
CUIRect View, Scroll, Row;
if(pRect)
View = *pRect;
else
View = gs_ListBoxOriginalView;
CUIRect Header, Footer;
// background
RenderTools()->DrawUIRect(&View, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 5.0f);
// draw header
View.HSplitTop(ms_ListheaderHeight, &Header, &View);
UI()->DoLabel(&Header, pTitle, Header.h*ms_FontmodHeight, 0);
// supported modes button
View.HSplitTop(Spaceing, 0, &View);
View.HSplitTop(ButtonHeight, &Left, &View);
Left.VSplitMid(&Left, &Right);
Left.VSplitRight(1.5f, &Left, 0);
Right.VSplitLeft(1.5f, 0, &Right);
static int s_GfxDisplayAllModes = 0;
if(DoButton_CheckBox(&s_GfxDisplayAllModes, Localize("Show only supported"), g_Config.m_GfxDisplayAllModes^1, &Left))
{
g_Config.m_GfxDisplayAllModes ^= 1;
m_NumModes = Graphics()->GetVideoModes(m_aModes, MAX_RESOLUTIONS);
UpdateVideoFormats();
bool Found = false;
for(int i = 0; i < m_NumVideoFormats; i++)
{
int G = gcd(g_Config.m_GfxScreenWidth, g_Config.m_GfxScreenHeight);
if(m_aVideoFormats[i].m_WidthValue == g_Config.m_GfxScreenWidth/G && m_aVideoFormats[i].m_HeightValue == g_Config.m_GfxScreenHeight/G)
{
m_CurrentVideoFormat = i;
Found = true;
break;
}
}
if(!Found)
m_CurrentVideoFormat = 0;
UpdatedFilteredVideoModes();
}
// format changer
{
RenderTools()->DrawUIRect(&Right, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 5.0f);
CUIRect Text, Value, Unit;
Right.VSplitLeft(Right.w/3.0f, &Text, &Right);
Right.VSplitMid(&Value, &Unit);
char aBuf[32];
str_format(aBuf, sizeof(aBuf), "%s:", Localize("Format"));
Text.y += 2.0f;
UI()->DoLabel(&Text, aBuf, Text.h*ms_FontmodHeight*0.8f, 0);
Unit.y += 2.0f;
if((float)m_aVideoFormats[m_CurrentVideoFormat].m_WidthValue/(float)m_aVideoFormats[m_CurrentVideoFormat].m_HeightValue >= 1.55f)
UI()->DoLabel(&Unit, Localize("Wide"), Unit.h*ms_FontmodHeight*0.8f, 0);
else
UI()->DoLabel(&Unit, Localize("Letterbox"), Unit.h*ms_FontmodHeight*0.8f, 0);
str_format(aBuf, sizeof(aBuf), "%d:%d", m_aVideoFormats[m_CurrentVideoFormat].m_WidthValue, m_aVideoFormats[m_CurrentVideoFormat].m_HeightValue);
static int s_VideoFormatButton = 0;
if(DoButton_Menu(&s_VideoFormatButton, aBuf, 0, &Value))
{
m_CurrentVideoFormat++;
if(m_CurrentVideoFormat == m_NumVideoFormats)
m_CurrentVideoFormat = 0;
UpdatedFilteredVideoModes();
}
}
RenderTools()->DrawUIRect(&View, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_B, 5.0f);
// draw footers
View.HSplitBottom(ms_ListheaderHeight, &View, &Footer);
@ -797,7 +687,6 @@ void CMenus::UiDoListboxStartVideo(const void *pID, const CUIRect *pRect, float
UI()->DoLabel(&Footer, pBottomText, Footer.h*ms_FontmodHeight, 0);
// list background
View.HSplitTop(Spaceing, 0, &View);
RenderTools()->DrawUIRect(&View, vec4(0.0f, 0.0f, 0.0f, 0.25f), 0, 0.0f);
// prepare the scroll
@ -1906,7 +1795,8 @@ int CMenus::Render()
ActSelection = Country;
static float s_ScrollValue = 0.0f;
int OldSelected = -1;
UiDoListboxStart(&s_ScrollValue, &Box, 50.0f, Localize("Country"), "", m_pClient->m_pCountryFlags->Num(), 6, OldSelected, s_ScrollValue);
UiDoListboxHeader(&Box, Localize("Country"), 20.0f, 2.0f);
UiDoListboxStart(&s_ScrollValue, 50.0f, "", m_pClient->m_pCountryFlags->Num(), 6, OldSelected, s_ScrollValue);
for(int i = 0; i < m_pClient->m_pCountryFlags->Num(); ++i)
{

View file

@ -99,10 +99,9 @@ class CMenus : public CComponent
CUIRect m_HitRect;
};
void UiDoListboxStart(const void *pID, const CUIRect *pRect, float RowHeight, const char *pTitle, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue);
void UiDoListboxStartVideo(const void *pID, const CUIRect *pRect, float RowHeight, const char *pTitle, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue, float ButtonHeight, float Spaceing);
void UiDoListboxHeader(const CUIRect *pRect, const char *pTitle, float HeaderHeight, float Spaceing);
void UiDoListboxStart(const void *pID, float RowHeight, const char *pBottomText, int NumItems,
int ItemsPerRow, int SelectedIndex, float ScrollValue, const CUIRect *pRect=0);
CListboxItem UiDoListboxNextItem(const void *pID, bool Selected = false);
CListboxItem UiDoListboxNextRow();
int UiDoListboxEnd(float *pScrollValue, bool *pItemActivated);

View file

@ -1153,7 +1153,8 @@ void CMenus::RenderServerbrowserFriends(CUIRect View)
// friends list(remove friend)
static float s_ScrollValue = 0;
static int s_FriendsList = 0;
UiDoListboxStart(&s_FriendsList, &List, 30.0f, "", "", m_lFriends.size(), 1, m_FriendlistSelectedIndex, s_ScrollValue);
UiDoListboxHeader(&List, "", 20.0f, 2.0f);
UiDoListboxStart(&s_FriendsList, 30.0f, "", m_lFriends.size(), 1, m_FriendlistSelectedIndex, s_ScrollValue);
m_lFriends.sort_range();
for(int i = 0; i < m_lFriends.size(); ++i)

View file

@ -416,7 +416,8 @@ void CMenus::RenderDemoList(CUIRect MainView)
static int s_DemoListId = 0;
static float s_ScrollValue = 0;
UiDoListboxStart(&s_DemoListId, &ListBox, 17.0f, Localize("Demos"), aFooterLabel, m_lDemos.size(), 1, m_DemolistSelectedIndex, s_ScrollValue);
UiDoListboxHeader(&ListBox, Localize("Demos"), 20.0f, 2.0f);
UiDoListboxStart(&s_DemoListId, 17.0f, aFooterLabel, m_lDemos.size(), 1, m_DemolistSelectedIndex, s_ScrollValue);
for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())
{
CListboxItem Item = UiDoListboxNextItem((void*)(&r.front()));

View file

@ -316,7 +316,8 @@ void CMenus::RenderServerControlServer(CUIRect MainView)
static int s_VoteList = 0;
static float s_ScrollValue = 0;
CUIRect List = MainView;
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", m_pClient->m_pVoting->m_NumVoteOptions, 1, m_CallvoteSelectedOption, s_ScrollValue);
UiDoListboxHeader(&List, "", 20.0f, 2.0f);
UiDoListboxStart(&s_VoteList, 24.0f, "", m_pClient->m_pVoting->m_NumVoteOptions, 1, m_CallvoteSelectedOption, s_ScrollValue);
for(CVoteOptionClient *pOption = m_pClient->m_pVoting->m_pFirst; pOption; pOption = pOption->m_pNext)
{
@ -351,7 +352,8 @@ void CMenus::RenderServerControlKick(CUIRect MainView, bool FilterSpectators)
static int s_VoteList = 0;
static float s_ScrollValue = 0;
CUIRect List = MainView;
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", NumOptions, 1, Selected, s_ScrollValue);
UiDoListboxHeader(&List, "", 20.0f, 2.0f);
UiDoListboxStart(&s_VoteList, 24.0f, "", NumOptions, 1, Selected, s_ScrollValue);
for(int i = 0; i < NumOptions; i++)
{

View file

@ -318,7 +318,8 @@ void CMenus::RenderSkinSelection(CUIRect MainView)
s_InitSkinlist = false;
}
UiDoListboxStart(&s_InitSkinlist, &MainView, 50.0f, Localize("Skins"), "", s_paSkinList.size(), 4, -1, s_ScrollValue);
UiDoListboxHeader(&MainView, Localize("Skins"), 20.0f, 2.0f);
UiDoListboxStart(&s_InitSkinlist, 50.0f, "", s_paSkinList.size(), 4, -1, s_ScrollValue);
for(int i = 0; i < s_paSkinList.size(); ++i)
{
@ -404,7 +405,8 @@ void CMenus::RenderSkinPartSelection(CUIRect MainView)
const char *const s_apTitles[6] = {Localize("Bodies"), Localize("Tattoos"), Localize("Decoration"),
Localize("Hands"), Localize("Feet"), Localize("Eyes")};
UiDoListboxStart(&s_InitSkinPartList, &MainView, 50.0f, s_apTitles[p], "", s_paList[p].size(), 4, -1, s_ScrollValue);
UiDoListboxHeader(&MainView, s_apTitles[p], 20.0f, 2.0f);
UiDoListboxStart(&s_InitSkinPartList, 50.0f, "", s_paList[p].size(), 4, -1, s_ScrollValue);
for(int i = 0; i < s_paList[p].size(); ++i)
{
@ -551,7 +553,8 @@ void CMenus::RenderLanguageSelection(CUIRect MainView)
int OldSelected = s_SelectedLanguage;
UiDoListboxStart(&s_LanguageList , &MainView, 24.0f, Localize("Language"), "", s_Languages.size(), 1, s_SelectedLanguage, s_ScrollValue);
UiDoListboxHeader(&MainView, Localize("Language"), 20.0f, 2.0f);
UiDoListboxStart(&s_LanguageList, 24.0f, "", s_Languages.size(), 1, s_SelectedLanguage, s_ScrollValue);
for(sorted_array<CLanguage>::range r = s_Languages.all(); !r.empty(); r.pop_front())
{
@ -780,7 +783,8 @@ void CMenus::RenderSettingsPlayer(CUIRect MainView)
MainView.HSplitTop(10.0f, 0, &MainView);
static float s_ScrollValue = 0.0f;
int OldSelected = -1;
UiDoListboxStart(&s_ScrollValue, &MainView, 40.0f, Localize("Country"), "", m_pClient->m_pCountryFlags->Num(), 18, OldSelected, s_ScrollValue);
UiDoListboxHeader(&MainView, Localize("Country"), 20.0f, 2.0f);
UiDoListboxStart(&s_ScrollValue, 40.0f, "", m_pClient->m_pCountryFlags->Num(), 18, OldSelected, s_ScrollValue);
for(int i = 0; i < m_pClient->m_pCountryFlags->Num(); ++i)
{
@ -1397,12 +1401,85 @@ void CMenus::RenderSettingsGraphics(CUIRect MainView)
// display mode list
{
// custom list header
CUIRect Header, Left, Right;
MainView.HSplitTop(ButtonHeight*2.0f+Spaceing*2.0f, &Header, 0);
RenderTools()->DrawUIRect(&Header, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_T, 5.0f);
// draw header
MainView.HSplitTop(ButtonHeight, &Header, &MainView);
UI()->DoLabel(&Header, Localize("Resolutions"), Header.h*ms_FontmodHeight, 0);
// supported modes button
MainView.HSplitTop(Spaceing, 0, &MainView);
MainView.HSplitTop(ButtonHeight, &Left, &MainView);
Left.VSplitMid(&Left, &Right);
Left.VSplitRight(1.5f, &Left, 0);
Right.VSplitLeft(1.5f, 0, &Right);
static int s_GfxDisplayAllModes = 0;
if(DoButton_CheckBox(&s_GfxDisplayAllModes, Localize("Show only supported"), g_Config.m_GfxDisplayAllModes^1, &Left))
{
g_Config.m_GfxDisplayAllModes ^= 1;
m_NumModes = Graphics()->GetVideoModes(m_aModes, MAX_RESOLUTIONS);
UpdateVideoFormats();
bool Found = false;
for(int i = 0; i < m_NumVideoFormats; i++)
{
int G = gcd(g_Config.m_GfxScreenWidth, g_Config.m_GfxScreenHeight);
if(m_aVideoFormats[i].m_WidthValue == g_Config.m_GfxScreenWidth/G && m_aVideoFormats[i].m_HeightValue == g_Config.m_GfxScreenHeight/G)
{
m_CurrentVideoFormat = i;
Found = true;
break;
}
}
if(!Found)
m_CurrentVideoFormat = 0;
UpdatedFilteredVideoModes();
}
// format changer
{
RenderTools()->DrawUIRect(&Right, vec4(0.0f, 0.0f, 0.0f, 0.25f), CUI::CORNER_ALL, 5.0f);
CUIRect Text, Value, Unit;
Right.VSplitLeft(Right.w/3.0f, &Text, &Right);
Right.VSplitMid(&Value, &Unit);
char aBuf[32];
str_format(aBuf, sizeof(aBuf), "%s:", Localize("Format"));
Text.y += 2.0f;
UI()->DoLabel(&Text, aBuf, Text.h*ms_FontmodHeight*0.8f, 0);
Unit.y += 2.0f;
if((float)m_aVideoFormats[m_CurrentVideoFormat].m_WidthValue/(float)m_aVideoFormats[m_CurrentVideoFormat].m_HeightValue >= 1.55f)
UI()->DoLabel(&Unit, Localize("Wide"), Unit.h*ms_FontmodHeight*0.8f, 0);
else
UI()->DoLabel(&Unit, Localize("Letterbox"), Unit.h*ms_FontmodHeight*0.8f, 0);
str_format(aBuf, sizeof(aBuf), "%d:%d", m_aVideoFormats[m_CurrentVideoFormat].m_WidthValue, m_aVideoFormats[m_CurrentVideoFormat].m_HeightValue);
static int s_VideoFormatButton = 0;
if(DoButton_Menu(&s_VideoFormatButton, aBuf, 0, &Value))
{
m_CurrentVideoFormat++;
if(m_CurrentVideoFormat == m_NumVideoFormats)
m_CurrentVideoFormat = 0;
UpdatedFilteredVideoModes();
}
}
MainView.HSplitTop(Spaceing, 0, &MainView);
static float s_ScrollValue = 0;
static int s_DisplayModeList = 0;
int OldSelected = -1;
int G = gcd(s_GfxScreenWidth, s_GfxScreenHeight);
str_format(aBuf, sizeof(aBuf), "%s: %dx%d %d bit (%d:%d)", Localize("Current"), s_GfxScreenWidth, s_GfxScreenHeight, s_GfxColorDepth, s_GfxScreenWidth/G, s_GfxScreenHeight/G);
UiDoListboxStartVideo(&s_DisplayModeList , &MainView, 24.0f, Localize("Display Modes"), aBuf, m_NumFilteredVideoModes, 1, OldSelected, s_ScrollValue, ButtonHeight, Spaceing); // ugly
UiDoListboxStart(&s_DisplayModeList, 24.0f, aBuf, m_NumFilteredVideoModes, 1, OldSelected, s_ScrollValue, &MainView);
for(int i = 0; i < m_NumFilteredVideoModes; ++i)
{