mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 01:24:18 +00:00
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
This commit is contained in:
parent
d01fb2eb78
commit
4d8c4ffadb
BIN
data/demo_buttons.png
Normal file
BIN
data/demo_buttons.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 599 B |
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue