xml
This commit is contained in:
@@ -9,6 +9,9 @@
|
|||||||
#include "RageMath.h"
|
#include "RageMath.h"
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
#include "CommonMetrics.h"
|
#include "CommonMetrics.h"
|
||||||
|
#include "ActorUtil.h"
|
||||||
|
|
||||||
|
REGISTER_ACTOR_CLASS(GrooveRadar)
|
||||||
|
|
||||||
#define LABEL_OFFSET_X( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetX",i+1))
|
#define LABEL_OFFSET_X( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetX",i+1))
|
||||||
#define LABEL_OFFSET_Y( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetY",i+1))
|
#define LABEL_OFFSET_Y( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetY",i+1))
|
||||||
@@ -47,6 +50,11 @@ GrooveRadar::GrooveRadar()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GrooveRadar::LoadFromNode( const RString& sDir, const XNode* pNode )
|
||||||
|
{
|
||||||
|
ActorFrame::LoadFromNode( sDir, pNode );
|
||||||
|
}
|
||||||
|
|
||||||
void GrooveRadar::TweenOnScreen()
|
void GrooveRadar::TweenOnScreen()
|
||||||
{
|
{
|
||||||
for( int c=0; c<NUM_SHOWN_RADAR_CATEGORIES; c++ )
|
for( int c=0; c<NUM_SHOWN_RADAR_CATEGORIES; c++ )
|
||||||
@@ -82,6 +90,29 @@ void GrooveRadar::TweenOffScreen()
|
|||||||
m_Frame.SetZoom( 0 );
|
m_Frame.SetZoom( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GrooveRadar::SetEmpty( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
SetFromSteps( pn, NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GrooveRadar::SetFromRadarValues( PlayerNumber pn, const RadarValues &rv )
|
||||||
|
{
|
||||||
|
m_GrooveRadarValueMap[pn].SetFromSteps( rv );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GrooveRadar::SetFromSteps( PlayerNumber pn, Steps* pSteps ) // NULL means no Song
|
||||||
|
{
|
||||||
|
if( pSteps == NULL )
|
||||||
|
{
|
||||||
|
m_GrooveRadarValueMap[pn].SetEmpty();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const RadarValues &rv = pSteps->GetRadarValues( pn );
|
||||||
|
m_GrooveRadarValueMap[pn].SetFromSteps( rv );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
GrooveRadar::GrooveRadarValueMap::GrooveRadarValueMap()
|
GrooveRadar::GrooveRadarValueMap::GrooveRadarValueMap()
|
||||||
{
|
{
|
||||||
m_bValuesVisible = false;
|
m_bValuesVisible = false;
|
||||||
@@ -94,28 +125,25 @@ GrooveRadar::GrooveRadarValueMap::GrooveRadarValueMap()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GrooveRadar::GrooveRadarValueMap::SetFromSteps( PlayerNumber pn, const Steps* pSteps ) // NULL means no song
|
void GrooveRadar::GrooveRadarValueMap::SetEmpty()
|
||||||
{
|
{
|
||||||
if( pSteps != NULL )
|
m_bValuesVisible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GrooveRadar::GrooveRadarValueMap::SetFromSteps( const RadarValues &rv )
|
||||||
{
|
{
|
||||||
|
m_bValuesVisible = true;
|
||||||
for( int c=0; c<NUM_SHOWN_RADAR_CATEGORIES; c++ )
|
for( int c=0; c<NUM_SHOWN_RADAR_CATEGORIES; c++ )
|
||||||
{
|
{
|
||||||
const float fValueCurrent = m_fValuesOld[c] * (1-m_PercentTowardNew) + m_fValuesNew[c] * m_PercentTowardNew;
|
const float fValueCurrent = m_fValuesOld[c] * (1-m_PercentTowardNew) + m_fValuesNew[c] * m_PercentTowardNew;
|
||||||
m_fValuesOld[c] = fValueCurrent;
|
m_fValuesOld[c] = fValueCurrent;
|
||||||
m_fValuesNew[c] = pSteps->GetRadarValues( pn )[c];
|
m_fValuesNew[c] = rv[c];
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !m_bValuesVisible ) // the values WERE invisible
|
if( !m_bValuesVisible ) // the values WERE invisible
|
||||||
m_PercentTowardNew = 1;
|
m_PercentTowardNew = 1;
|
||||||
else
|
else
|
||||||
m_PercentTowardNew = 0;
|
m_PercentTowardNew = 0;
|
||||||
|
|
||||||
m_bValuesVisible = true;
|
|
||||||
}
|
|
||||||
else // pSteps == NULL
|
|
||||||
{
|
|
||||||
m_bValuesVisible = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GrooveRadar::GrooveRadarValueMap::Update( float fDeltaTime )
|
void GrooveRadar::GrooveRadarValueMap::Update( float fDeltaTime )
|
||||||
@@ -190,6 +218,46 @@ void GrooveRadar::GrooveRadarValueMap::DrawPrimitives()
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// lua start
|
||||||
|
#include "LuaBinding.h"
|
||||||
|
|
||||||
|
class LunaGrooveRadar: public Luna<GrooveRadar>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LunaGrooveRadar() { LUA->Register( Register ); }
|
||||||
|
|
||||||
|
static int SetFromRadarValues( T* p, lua_State *L )
|
||||||
|
{
|
||||||
|
PlayerNumber pn = (PlayerNumber)IArg(1);
|
||||||
|
if( lua_isnil(L,2) )
|
||||||
|
{
|
||||||
|
p->SetEmpty( pn );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RadarValues *pRV = Luna<RadarValues>::check(L,2);
|
||||||
|
p->SetFromRadarValues( pn, *pRV );
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static int SetEmpty( T* p, lua_State *L ) { p->SetEmpty( (PlayerNumber)IArg(1) ); return 0; }
|
||||||
|
static int tweenonscreen( T* p, lua_State *L ) { p->TweenOnScreen(); return 0; }
|
||||||
|
static int tweenoffscreen( T* p, lua_State *L ) { p->TweenOffScreen(); return 0; }
|
||||||
|
|
||||||
|
static void Register(lua_State *L)
|
||||||
|
{
|
||||||
|
ADD_METHOD( SetFromRadarValues );
|
||||||
|
ADD_METHOD( SetEmpty );
|
||||||
|
ADD_METHOD( tweenonscreen );
|
||||||
|
ADD_METHOD( tweenoffscreen );
|
||||||
|
|
||||||
|
Luna<T>::Register( L );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
LUA_REGISTER_DERIVED_CLASS( GrooveRadar, ActorFrame )
|
||||||
|
// lua end
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2001-2004 Chris Danford
|
* (c) 2001-2004 Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
+11
-11
@@ -8,26 +8,25 @@
|
|||||||
#include "PlayerNumber.h"
|
#include "PlayerNumber.h"
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
class Steps;
|
class Steps;
|
||||||
|
struct RadarValues;
|
||||||
|
|
||||||
class GrooveRadar : public ActorFrame
|
class GrooveRadar : public ActorFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GrooveRadar();
|
GrooveRadar();
|
||||||
|
virtual Actor *Copy() const;
|
||||||
|
virtual void LoadFromNode( const RString& sDir, const XNode* pNode );
|
||||||
|
|
||||||
void SetEmpty( PlayerNumber pn )
|
void SetEmpty( PlayerNumber pn );
|
||||||
{
|
void SetFromRadarValues( PlayerNumber pn, const RadarValues &rv );
|
||||||
SetFromSteps( pn, NULL );
|
void SetFromSteps( PlayerNumber pn, Steps* pSteps ); // NULL means no Steps
|
||||||
}
|
|
||||||
|
|
||||||
void SetFromSteps( PlayerNumber pn, Steps* pSteps ) // NULL means no Song
|
|
||||||
{
|
|
||||||
m_GrooveRadarValueMap[pn].SetFromSteps( pn, pSteps );
|
|
||||||
}
|
|
||||||
|
|
||||||
void TweenOnScreen();
|
void TweenOnScreen();
|
||||||
void TweenOffScreen();
|
void TweenOffScreen();
|
||||||
|
|
||||||
|
// Lua
|
||||||
|
void PushSelf( lua_State *L );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// the value map must be a separate Actor so we can tween it separately from the labels
|
// the value map must be a separate Actor so we can tween it separately from the labels
|
||||||
@@ -39,7 +38,8 @@ protected:
|
|||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
virtual void DrawPrimitives();
|
virtual void DrawPrimitives();
|
||||||
|
|
||||||
void SetFromSteps( PlayerNumber pn, const Steps* pSteps ); // NULL means no Song
|
void SetEmpty();
|
||||||
|
void SetFromSteps( const RadarValues &rv );
|
||||||
|
|
||||||
void SetRadius( float f ) { m_size.x = f; m_size.y = f; }
|
void SetRadius( float f ) { m_size.x = f; m_size.y = f; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user