diff options
| author | Fujnky <larsfunke1996@gmail.com> | 2010-07-27 22:25:36 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-08-13 03:17:13 +0200 |
| commit | 4d8c4ffadb9c788eb83d244dc509e56251d09030 (patch) | |
| tree | ef0a850eee3f9d924dfbc88d191265d2dfb43019 | |
| parent | d01fb2eb7818c121ab892f29b929f55d66e4e7ce (diff) | |
| download | zcatch-4d8c4ffadb9c788eb83d244dc509e56251d09030.tar.gz zcatch-4d8c4ffadb9c788eb83d244dc509e56251d09030.zip | |
Improved the replay control buttons in the demo player a lot.
* Now there is a combined play/pause button + a reset button * Replaced the ugly strings with nice graphics
| -rw-r--r-- | data/demo_buttons.png | bin | 0 -> 599 bytes | |||
| -rw-r--r-- | datasrc/content.py | 12 | ||||
| -rw-r--r-- | src/game/client/components/menus.h | 1 | ||||
| -rw-r--r-- | src/game/client/components/menus_demo.cpp | 46 |
4 files changed, 43 insertions, 16 deletions
diff --git a/data/demo_buttons.png b/data/demo_buttons.png new file mode 100644 index 00000000..47a5c2f1 --- /dev/null +++ b/data/demo_buttons.png Binary files differdiff --git a/datasrc/content.py b/datasrc/content.py index e510a19f..a11988b4 100644 --- a/datasrc/content.py +++ b/datasrc/content.py @@ -225,6 +225,7 @@ image_particles = Image("particles", "particles.png") image_game = Image("game", "game.png") image_browseicons = Image("browseicons", "browse_icons.png") image_emoticons = Image("emoticons", "emoticons.png") +image_demobuttons = Image("demobuttons", "demo_buttons.png") container.images.Add(image_null) container.images.Add(image_game) @@ -235,6 +236,7 @@ container.images.Add(image_emoticons) container.images.Add(image_browseicons) container.images.Add(Image("console_bg", "console.png")) container.images.Add(Image("console_bar", "console_bar.png")) +container.images.Add(image_demobuttons) container.pickups.Add(Pickup("health")) container.pickups.Add(Pickup("armor")) @@ -246,12 +248,14 @@ set_game = SpriteSet("game", image_game, 32, 16) set_tee = SpriteSet("tee", image_null, 8, 4) set_browseicons = SpriteSet("browseicons", image_browseicons, 4, 1) set_emoticons = SpriteSet("emoticons", image_emoticons, 4, 4) +set_demobuttons = SpriteSet("demobuttons", image_demobuttons, 5, 1) container.spritesets.Add(set_particles) container.spritesets.Add(set_game) container.spritesets.Add(set_tee) container.spritesets.Add(set_browseicons) container.spritesets.Add(set_emoticons) +container.spritesets.Add(set_demobuttons) container.sprites.Add(Sprite("part_slice", set_particles, 0,0,1,1)) container.sprites.Add(Sprite("part_ball", set_particles, 1,0,1,1)) @@ -358,11 +362,17 @@ container.sprites.Add(Sprite("blank1", set_emoticons, 1, 3, 1, 1)) container.sprites.Add(Sprite("deadtee", set_emoticons, 2, 3, 1, 1)) container.sprites.Add(Sprite("blank2", set_emoticons, 3, 3, 1, 1)) - container.sprites.Add(Sprite("browse_lock", set_browseicons, 0,0,1,1)) container.sprites.Add(Sprite("browse_heart", set_browseicons, 1,0,1,1)) container.sprites.Add(Sprite("browse_unpure", set_browseicons, 3,0,1,1)) +container.sprites.Add(Sprite("demobutton_play", set_demobuttons, 0,0,1,1)) +container.sprites.Add(Sprite("demobutton_pause", set_demobuttons, 1,0,1,1)) +container.sprites.Add(Sprite("demobutton_reset", set_demobuttons, 2,0,1,1)) +container.sprites.Add(Sprite("demobutton_slower", set_demobuttons, 3,0,1,1)) +container.sprites.Add(Sprite("demobutton_faster", set_demobuttons, 4,0,1,1)) + + anim = Animation("base") anim.body.frames.Add(AnimKeyframe(0, 0, -4, 0)) anim.back_foot.frames.Add(AnimKeyframe(0, 0, 10, 0)) diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h index 3ad737e5..53f81954 100644 --- a/src/game/client/components/menus.h +++ b/src/game/client/components/menus.h @@ -33,6 +33,7 @@ class CMenus : public CComponent int DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect); + int DoButton_DemoPlayer_Sprite(const void *pID, int spriteId, 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); int DoButton_SettingsTab(const void *pID, const char *pText, int Checked, const CUIRect *pRect); diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp index 231cd83a..18d9ddee 100644 --- a/src/game/client/components/menus_demo.cpp +++ b/src/game/client/components/menus_demo.cpp @@ -1,9 +1,9 @@ #include <base/math.h> - #include <engine/demo.h> #include <engine/keys.h> +#include <engine/graphics.h> #include <game/client/render.h> #include <game/client/gameclient.h> @@ -11,6 +11,8 @@ #include <game/client/ui.h> +#include <game/generated/client_data.h> + #include "menus.h" int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect) @@ -20,6 +22,19 @@ int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, return UI()->DoButtonLogic(pID, pText, Checked, pRect); } +int CMenus::DoButton_DemoPlayer_Sprite(const void *pID, int spriteId, int Checked, const CUIRect *pRect) +{ + RenderTools()->DrawUIRect(pRect, vec4(1,1,1, Checked ? 0.10f : 0.5f)*ButtonColorMul(pID), CUI::CORNER_ALL, 5.0f); + Graphics()->TextureSet(g_pData->m_aImages[IMAGE_DEMOBUTTONS].m_Id); + Graphics()->QuadsBegin(); + RenderTools()->SelectSprite(spriteId); + IGraphics::CQuadItem QuadItem(pRect->x, pRect->y, pRect->w, pRect->h); + Graphics()->QuadsDrawTL(&QuadItem, 1); + Graphics()->QuadsEnd(); + + return UI()->DoButtonLogic(pID, "", Checked, pRect); +} + void CMenus::RenderDemoPlayer(CUIRect MainView) { const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo(); @@ -111,33 +126,34 @@ void CMenus::RenderDemoPlayer(CUIRect MainView) { // do buttons CUIRect Button; - - // pause button + + // combined play and pause button ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar); - static int s_PauseButton = 0; - if(DoButton_DemoPlayer(&s_PauseButton, "| |", pInfo->m_Paused, &Button)) + static int s_PlayPauseButton = 0; + if(!pInfo->m_Paused) { - if(pInfo->m_Paused) - DemoPlayer()->Unpause(); - else + if(DoButton_DemoPlayer_Sprite(&s_PlayPauseButton, SPRITE_DEMOBUTTON_PAUSE, pInfo->m_Paused, &Button)) DemoPlayer()->Pause(); } + else + { + if(DoButton_DemoPlayer_Sprite(&s_PlayPauseButton, SPRITE_DEMOBUTTON_PLAY, !pInfo->m_Paused, &Button)) + DemoPlayer()->Unpause(); + } - // play button ButtonBar.VSplitLeft(Margins, 0, &ButtonBar); ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar); - static int s_PlayButton = 0; - if(DoButton_DemoPlayer(&s_PlayButton, ">", !pInfo->m_Paused, &Button)) + static int s_ResetButton = 0; + if(DoButton_DemoPlayer_Sprite(&s_ResetButton, SPRITE_DEMOBUTTON_RESET, false, &Button)) { - DemoPlayer()->Unpause(); - DemoPlayer()->SetSpeed(1.0f); + DemoPlayer()->SetPos(0); } // slowdown ButtonBar.VSplitLeft(Margins, 0, &ButtonBar); ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar); static int s_SlowDownButton = 0; - if(DoButton_DemoPlayer(&s_SlowDownButton, "<<", 0, &Button)) + if(DoButton_DemoPlayer_Sprite(&s_SlowDownButton, SPRITE_DEMOBUTTON_SLOWER, 0, &Button)) { if(pInfo->m_Speed > 4.0f) DemoPlayer()->SetSpeed(4.0f); else if(pInfo->m_Speed > 2.0f) DemoPlayer()->SetSpeed(2.0f); @@ -150,7 +166,7 @@ void CMenus::RenderDemoPlayer(CUIRect MainView) ButtonBar.VSplitLeft(Margins, 0, &ButtonBar); ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar); static int s_FastForwardButton = 0; - if(DoButton_DemoPlayer(&s_FastForwardButton, ">>", 0, &Button)) + if(DoButton_DemoPlayer_Sprite(&s_FastForwardButton, SPRITE_DEMOBUTTON_FASTER, 0, &Button)) { if(pInfo->m_Speed < 0.5f) DemoPlayer()->SetSpeed(0.5f); else if(pInfo->m_Speed < 1.0f) DemoPlayer()->SetSpeed(1.0f); |