networking
This commit is contained in:
206
external/steamworks/steamworksexample/musicplayer.cpp
vendored
Normal file
206
external/steamworks/steamworksexample/musicplayer.cpp
vendored
Normal file
@@ -0,0 +1,206 @@
|
||||
//========= Copyright <20> 1996-2009, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: Class for tracking leaderboards
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "musicplayer.h"
|
||||
#include "BaseMenu.h"
|
||||
#include <math.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Menu that shows a music player
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMusicPlayerMenu : public CBaseMenu< MusicPlayerMenuItem_t >
|
||||
{
|
||||
public:
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CMusicPlayerMenu( IGameEngine *pGameEngine )
|
||||
: CBaseMenu< MusicPlayerMenuItem_t >( pGameEngine )
|
||||
, m_menuItemPause( "Pause" )
|
||||
, m_menuItemPlay( "Play" )
|
||||
, m_menuItemPlayPrevious( "Play Previous" )
|
||||
, m_menuItemPlayNext( "Play Next" )
|
||||
, m_menuItemIncreaseVolume( "Increase Volume" )
|
||||
, m_menuItemDecreaseVolume( "Decrease Volume" )
|
||||
, m_menuItemBack( "Back" )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Creates menu
|
||||
//-----------------------------------------------------------------------------
|
||||
void Rebuild()
|
||||
{
|
||||
PushSelectedItem();
|
||||
ClearMenuItems();
|
||||
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Pause", m_menuItemPause ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Play", m_menuItemPlay ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Play Previous", m_menuItemPlayPrevious ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Play Next", m_menuItemPlayNext ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Increase Volume", m_menuItemIncreaseVolume ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Decrease Volume", m_menuItemDecreaseVolume ) );
|
||||
AddMenuItem( CMusicPlayerMenu::MenuItem_t( "Return to main menu", m_menuItemBack ) );
|
||||
|
||||
UpdateHeading();
|
||||
|
||||
PopSelectedItem();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void UpdateHeading()
|
||||
{
|
||||
const char *pchEnabled = "Disabled";
|
||||
|
||||
if ( SteamMusic()->BIsEnabled() )
|
||||
{
|
||||
pchEnabled = "Enabled";
|
||||
}
|
||||
|
||||
const char *pchPlaybackStatus = "";
|
||||
AudioPlayback_Status nStatus = SteamMusic()->GetPlaybackStatus();
|
||||
switch( nStatus )
|
||||
{
|
||||
case AudioPlayback_Undefined:
|
||||
pchPlaybackStatus = "Undefined";
|
||||
break;
|
||||
case AudioPlayback_Playing:
|
||||
pchPlaybackStatus = "Playing";
|
||||
break;
|
||||
case AudioPlayback_Paused:
|
||||
pchPlaybackStatus = "Paused";
|
||||
break;
|
||||
case AudioPlayback_Idle:
|
||||
pchPlaybackStatus = "Done";
|
||||
break;
|
||||
};
|
||||
|
||||
|
||||
// Music Volume is between 0.0 and 1.0: multiply by ten, so its equivalent to Big Picture display.
|
||||
float flVolume = SteamMusic()->GetVolume();
|
||||
int nVolume = int( flVolume * 10 );
|
||||
|
||||
sprintf_safe( m_szHeadingString, "Music: %s Status: %s Volume: %d", pchEnabled, pchPlaybackStatus, nVolume );
|
||||
SetHeading( m_szHeadingString );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: variables
|
||||
//-----------------------------------------------------------------------------
|
||||
char m_szHeadingString[255]; // String to show in server browser
|
||||
|
||||
MusicPlayerMenuItem_t m_menuItemPause;
|
||||
MusicPlayerMenuItem_t m_menuItemPlay;
|
||||
MusicPlayerMenuItem_t m_menuItemPlayPrevious;
|
||||
MusicPlayerMenuItem_t m_menuItemPlayNext;
|
||||
|
||||
MusicPlayerMenuItem_t m_menuItemIncreaseVolume;
|
||||
MusicPlayerMenuItem_t m_menuItemDecreaseVolume;
|
||||
|
||||
MusicPlayerMenuItem_t m_menuItemBack;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CMusicPlayer::CMusicPlayer( IGameEngine *pGameEngine )
|
||||
: m_pGameEngine( pGameEngine )
|
||||
, m_CallbackVolumeChanged( this, &CMusicPlayer::OnVolumeChanged )
|
||||
, m_CallbackPlaybackStatusHasChanged( this, &CMusicPlayer::OnPlaybackStatusHasChanged )
|
||||
{
|
||||
m_pMusicPlayerMenu = new CMusicPlayerMenu( pGameEngine );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Run a frame
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMusicPlayer::RunFrame()
|
||||
{
|
||||
m_pMusicPlayerMenu->RunFrame();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handles menu actions
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMusicPlayer::OnMenuSelection( MusicPlayerMenuItem_t selection )
|
||||
{
|
||||
if (selection == m_pMusicPlayerMenu->m_menuItemPlay)
|
||||
{
|
||||
SteamMusic()->Play();
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemPause)
|
||||
{
|
||||
SteamMusic()->Pause();
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemPlayPrevious)
|
||||
{
|
||||
SteamMusic()->PlayPrevious();
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemPlayNext)
|
||||
{
|
||||
SteamMusic()->PlayNext();
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemIncreaseVolume)
|
||||
{
|
||||
// conversion necessary, because the UI in big picture shows 10 bars,
|
||||
// but volume is a value between 0.0 and 1.0
|
||||
float flVolume = SteamMusic()->GetVolume();
|
||||
int nVolume = int( flVolume * 10 );
|
||||
nVolume = MIN( nVolume + 1, 10 );
|
||||
SteamMusic()->SetVolume( (float)nVolume * 0.1f );
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemDecreaseVolume)
|
||||
{
|
||||
// conversion necessary, because the UI in big picture shows 10 bars,
|
||||
// but volume is a value between 0.0 and 1.0
|
||||
float flVolume = SteamMusic()->GetVolume();
|
||||
int nVolume = int( flVolume * 10 );
|
||||
nVolume = MAX( nVolume - 1, 0 );
|
||||
SteamMusic()->SetVolume( (float)nVolume * 0.1f );
|
||||
}
|
||||
else if (selection == m_pMusicPlayerMenu->m_menuItemBack)
|
||||
{
|
||||
SpaceWarClient()->SetGameState(k_EClientGameMenu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Shows / Refreshes
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMusicPlayer::Show()
|
||||
{
|
||||
m_pMusicPlayerMenu->Rebuild();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMusicPlayer::OnPlaybackStatusHasChanged( PlaybackStatusHasChanged_t *pPlaybackStatusHasChanged )
|
||||
{
|
||||
m_pMusicPlayerMenu->UpdateHeading();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMusicPlayer::OnVolumeChanged( VolumeHasChanged_t *pVolumeChanged )
|
||||
{
|
||||
m_pMusicPlayerMenu->UpdateHeading();
|
||||
}
|
||||
Reference in New Issue
Block a user