diff options
| author | oy <Tom_Adams@web.de> | 2011-04-06 20:18:31 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-04-06 20:18:31 +0200 |
| commit | b985fdc20ad7c7072bcef0ec58e0c1146f6aa7e0 (patch) | |
| tree | 852a1ba5435d35fc4eeba8518978029789184d34 /src/game/client/components | |
| parent | 3fc6e2d2eb8ef4eddd2c9ec56802111a9f8539ea (diff) | |
| download | zcatch-b985fdc20ad7c7072bcef0ec58e0c1146f6aa7e0.tar.gz zcatch-b985fdc20ad7c7072bcef0ec58e0c1146f6aa7e0.zip | |
added new friend/mute buttons by Crises and reworked the player options like Landil suggested. Closes #579
Diffstat (limited to 'src/game/client/components')
| -rw-r--r-- | src/game/client/components/menus.cpp | 38 | ||||
| -rw-r--r-- | src/game/client/components/menus.h | 3 | ||||
| -rw-r--r-- | src/game/client/components/menus_ingame.cpp | 74 |
3 files changed, 86 insertions, 29 deletions
diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp index d8ddb276..568b3a6e 100644 --- a/src/game/client/components/menus.cpp +++ b/src/game/client/components/menus.cpp @@ -92,6 +92,23 @@ int CMenus::DoButton_Icon(int ImageId, int SpriteId, const CUIRect *pRect) return 0; } +int CMenus::DoButton_Toggle(const void *pID, int Checked, const CUIRect *pRect) +{ + Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GUIBUTTONS].m_Id); + Graphics()->QuadsBegin(); + RenderTools()->SelectSprite(Checked?SPRITE_GUIBUTTON_ON:SPRITE_GUIBUTTON_OFF); + IGraphics::CQuadItem QuadItem(pRect->x, pRect->y, pRect->w, pRect->h); + Graphics()->QuadsDrawTL(&QuadItem, 1); + if((UI()->HotItem() == pID)) + { + RenderTools()->SelectSprite(SPRITE_GUIBUTTON_HOVER); + IGraphics::CQuadItem QuadItem(pRect->x, pRect->y, pRect->w, pRect->h); + Graphics()->QuadsDrawTL(&QuadItem, 1); + } + Graphics()->QuadsEnd(); + + return UI()->DoButtonLogic(pID, "", Checked, pRect); +} int CMenus::DoButton_Menu(const void *pID, const char *pText, int Checked, const CUIRect *pRect) { @@ -555,22 +572,23 @@ int CMenus::RenderMenubar(CUIRect r) // online menus Box.VSplitLeft(90.0f, &Button, &Box); static int s_GameButton=0; - if(DoButton_MenuTab(&s_GameButton, Localize("Game"), m_ActivePage==PAGE_GAME, &Button, CUI::CORNER_T)) + if(DoButton_MenuTab(&s_GameButton, Localize("Game"), m_ActivePage==PAGE_GAME, &Button, CUI::CORNER_TL)) NewPage = PAGE_GAME; - Box.VSplitLeft(4.0f, 0, &Box); - Box.VSplitLeft(140.0f, &Button, &Box); + Box.VSplitLeft(90.0f, &Button, &Box); + static int s_PlayersButton=0; + if(DoButton_MenuTab(&s_PlayersButton, Localize("Players"), m_ActivePage==PAGE_PLAYERS, &Button, 0)) + NewPage = PAGE_PLAYERS; + + Box.VSplitLeft(130.0f, &Button, &Box); static int s_ServerInfoButton=0; - if(DoButton_MenuTab(&s_ServerInfoButton, Localize("Server info"), m_ActivePage==PAGE_SERVER_INFO, &Button, CUI::CORNER_T)) + if(DoButton_MenuTab(&s_ServerInfoButton, Localize("Server info"), m_ActivePage==PAGE_SERVER_INFO, &Button, 0)) NewPage = PAGE_SERVER_INFO; - Box.VSplitLeft(4.0f, 0, &Box); - Box.VSplitLeft(140.0f, &Button, &Box); + Box.VSplitLeft(130.0f, &Button, &Box); static int s_CallVoteButton=0; - if(DoButton_MenuTab(&s_CallVoteButton, Localize("Call vote"), m_ActivePage==PAGE_CALLVOTE, &Button, CUI::CORNER_T)) + if(DoButton_MenuTab(&s_CallVoteButton, Localize("Call vote"), m_ActivePage==PAGE_CALLVOTE, &Button, CUI::CORNER_TR)) NewPage = PAGE_CALLVOTE; - - Box.VSplitLeft(30.0f, 0, &Box); } /* @@ -799,6 +817,8 @@ int CMenus::Render() { if(m_GamePage == PAGE_GAME) RenderGame(MainView); + else if(m_GamePage == PAGE_PLAYERS) + RenderPlayers(MainView); else if(m_GamePage == PAGE_SERVER_INFO) RenderServerInfo(MainView); else if(m_GamePage == PAGE_CALLVOTE) diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h index 758bcd3d..11047a0b 100644 --- a/src/game/client/components/menus.h +++ b/src/game/client/components/menus.h @@ -39,6 +39,7 @@ class CMenus : public CComponent 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_Toggle(const void *pID, int Checked, const CUIRect *pRect); int DoButton_Menu(const void *pID, const char *pText, int Checked, const CUIRect *pRect); int DoButton_MenuTab(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Corners); @@ -111,6 +112,7 @@ class CMenus : public CComponent { PAGE_NEWS=1, PAGE_GAME, + PAGE_PLAYERS, PAGE_SERVER_INFO, PAGE_CALLVOTE, PAGE_INTERNET, @@ -215,6 +217,7 @@ class CMenus : public CComponent // found in menus_ingame.cpp void RenderGame(CUIRect MainView); + void RenderPlayers(CUIRect MainView); void RenderServerInfo(CUIRect MainView); void RenderServerControl(CUIRect MainView); void RenderServerControlKick(CUIRect MainView, bool FilterSpectators); diff --git a/src/game/client/components/menus_ingame.cpp b/src/game/client/components/menus_ingame.cpp index d3e9933f..254faade 100644 --- a/src/game/client/components/menus_ingame.cpp +++ b/src/game/client/components/menus_ingame.cpp @@ -5,6 +5,7 @@ #include <engine/config.h> #include <engine/demo.h> #include <engine/friends.h> +#include <engine/graphics.h> #include <engine/serverbrowser.h> #include <engine/textrender.h> #include <engine/shared/config.h> @@ -24,11 +25,11 @@ void CMenus::RenderGame(CUIRect MainView) { - CUIRect Button, ButtonBar, Options; - RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f); + CUIRect Button, ButtonBar; + MainView.HSplitTop(45.0f, &ButtonBar, &MainView); + RenderTools()->DrawUIRect(&ButtonBar, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f); // button bar - MainView.HSplitTop(45.0f, &ButtonBar, &MainView); ButtonBar.HSplitTop(10.0f, 0, &ButtonBar); ButtonBar.HSplitTop(25.0f, &ButtonBar, 0); ButtonBar.VMargin(10.0f, &ButtonBar); @@ -106,6 +107,12 @@ void CMenus::RenderGame(CUIRect MainView) else Client()->DemoRecorder_Stop(); } +} + +void CMenus::RenderPlayers(CUIRect MainView) +{ + CUIRect Button, ButtonBar, Options, Player; + RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f); // player options MainView.Margin(10.0f, &Options); @@ -114,14 +121,40 @@ void CMenus::RenderGame(CUIRect MainView) Options.HSplitTop(50.0f, &Button, &Options); UI()->DoLabelScaled(&Button, Localize("Player options"), 34.0f, -1); - CUIRect Player; - static int s_aPlayerIDs[MAX_CLIENTS][4] = {{0}}; - for(int i = 0; i < MAX_CLIENTS; ++i) + // headline + Options.HSplitTop(34.0f, &ButtonBar, &Options); + ButtonBar.VSplitRight(220.0f, &Player, &ButtonBar); + UI()->DoLabelScaled(&Player, Localize("Player"), 24.0f, -1); + + ButtonBar.HMargin(1.0f, &ButtonBar); + float Width = ButtonBar.h*2.0f; + ButtonBar.VSplitLeft(Width, &Button, &ButtonBar); + Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GUIICONS].m_Id); + Graphics()->QuadsBegin(); + RenderTools()->SelectSprite(SPRITE_GUIICON_MUTE); + IGraphics::CQuadItem QuadItem(Button.x, Button.y, Button.w, Button.h); + Graphics()->QuadsDrawTL(&QuadItem, 1); + Graphics()->QuadsEnd(); + + ButtonBar.VSplitLeft(20.0f, 0, &ButtonBar); + ButtonBar.VSplitLeft(Width, &Button, &ButtonBar); + Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GUIICONS].m_Id); + Graphics()->QuadsBegin(); + RenderTools()->SelectSprite(SPRITE_GUIICON_FRIEND); + QuadItem = IGraphics::CQuadItem(Button.x, Button.y, Button.w, Button.h); + Graphics()->QuadsDrawTL(&QuadItem, 1); + Graphics()->QuadsEnd(); + + // options + static int s_aPlayerIDs[MAX_CLIENTS][2] = {{0}}; + for(int i = 0, Count = 0; i < MAX_CLIENTS; ++i) { if(!m_pClient->m_Snap.m_paPlayerInfos[i] || i == m_pClient->m_Snap.m_LocalClientID) continue; Options.HSplitTop(28.0f, &ButtonBar, &Options); + if(Count++%2 == 0) + RenderTools()->DrawUIRect(&ButtonBar, vec4(1.0f, 1.0f, 1.0f, 0.25f), CUI::CORNER_ALL, 10.0f); ButtonBar.VSplitRight(220.0f, &Player, &ButtonBar); // player info @@ -142,22 +175,23 @@ void CMenus::RenderGame(CUIRect MainView) TextRender()->TextEx(&Cursor, m_pClient->m_aClients[i].m_aClan, -1); // ignore button - ButtonBar.HMargin(1.0f, &ButtonBar); - ButtonBar.VSplitLeft(ButtonBar.h*2.0f, &Button, &ButtonBar); - if(DoButton_Sprite(&s_aPlayerIDs[i][0], IMAGE_GUIBUTTONS, SPRITE_GUIBUTTON_CHATON, !m_pClient->m_aClients[i].m_ChatIgnore, &Button, CUI::CORNER_L)) - m_pClient->m_aClients[i].m_ChatIgnore = 0; - ButtonBar.VSplitLeft(ButtonBar.h*2.0f, &Button, &ButtonBar); - if(DoButton_Sprite(&s_aPlayerIDs[i][1], IMAGE_GUIBUTTONS, SPRITE_GUIBUTTON_CHATOFF, m_pClient->m_aClients[i].m_ChatIgnore, &Button, CUI::CORNER_R)) - m_pClient->m_aClients[i].m_ChatIgnore = 1; + ButtonBar.HMargin(2.0f, &ButtonBar); + ButtonBar.VSplitLeft(Width, &Button, &ButtonBar); + Button.VSplitLeft((Width-Button.h)/4.0f, 0, &Button); + Button.VSplitLeft(Button.h, &Button, 0); + if(DoButton_Toggle(&s_aPlayerIDs[i][0], m_pClient->m_aClients[i].m_ChatIgnore, &Button)) + m_pClient->m_aClients[i].m_ChatIgnore ^= 1; // friend button - ButtonBar.VSplitLeft(10.0f, 0, &ButtonBar); - ButtonBar.VSplitLeft(ButtonBar.h*2.0f, &Button, &ButtonBar); - if(DoButton_Sprite(&s_aPlayerIDs[i][2], IMAGE_GUIBUTTONS, SPRITE_GUIBUTTON_FRIENDREM, !m_pClient->m_aClients[i].m_Friend, &Button, CUI::CORNER_L)) - m_pClient->Friends()->RemoveFriend(m_pClient->m_aClients[i].m_aName, m_pClient->m_aClients[i].m_aClan); - ButtonBar.VSplitLeft(ButtonBar.h*2.0f, &Button, &ButtonBar); - if(DoButton_Sprite(&s_aPlayerIDs[i][3], IMAGE_GUIBUTTONS, SPRITE_GUIBUTTON_FRIENDADD, m_pClient->m_aClients[i].m_Friend, &Button, CUI::CORNER_R)) - m_pClient->Friends()->AddFriend(m_pClient->m_aClients[i].m_aName, m_pClient->m_aClients[i].m_aClan); + ButtonBar.VSplitLeft(20.0f, &Button, &ButtonBar); + ButtonBar.VSplitLeft(Width, &Button, &ButtonBar); + Button.VSplitLeft((Width-Button.h)/4.0f, 0, &Button); + Button.VSplitLeft(Button.h, &Button, 0); + if(DoButton_Toggle(&s_aPlayerIDs[i][1], m_pClient->m_aClients[i].m_Friend, &Button)) + if(m_pClient->m_aClients[i].m_Friend) + m_pClient->Friends()->RemoveFriend(m_pClient->m_aClients[i].m_aName, m_pClient->m_aClients[i].m_aClan); + else + m_pClient->Friends()->AddFriend(m_pClient->m_aClients[i].m_aName, m_pClient->m_aClients[i].m_aClan); } /* |