#include "stdafx.h" /* ----------------------------------------------------------------------------- Class: GrooveRadar Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "RageUtil.h" #include "GrooveRadar.h" #include "PrefsManager.h" #include "RageBitmapTexture.h" #include "GameConstantsAndTypes.h" float RADAR_VALUE_ROTATION( int iValueIndex ) { return D3DX_PI/2 + D3DX_PI*2 / 5.0f * iValueIndex; } const float RADAR_EDGE_WIDTH = 2; GrooveRadar::GrooveRadar() { this->AddSubActor( &m_GrooveRadarValueMap ); for( int c=0; c 1 ) fX += fX/fabsf(fX) * 40; break; case 2: case 3: if( fabsf(fX) > 1 ) fX += fX/fabsf(fX) * 50; break; default: ASSERT( false ); } const float fY = -sinf(fRotation) * fRadius * 1.15f; m_sprRadarLabels[c].Load( THEME->GetPathTo(GRAPHIC_SELECT_MUSIC_RADAR_WORDS) ); m_sprRadarLabels[c].StopAnimating(); m_sprRadarLabels[c].SetState( c ); m_sprRadarLabels[c].SetXY( fX, fY ); this->AddSubActor( &m_sprRadarLabels[c] ); } } void GrooveRadar::TweenOnScreen() { for( int c=0; cGetPathTo(GRAPHIC_SELECT_MUSIC_RADAR_BASE) ); this->AddSubActor( &m_sprRadarBase ); for( int p=0; pm_fRadarValues[c]; } if( m_bValuesVisible[p] == false ) // the values WERE invisible m_PercentTowardNew[p] = 1; else m_PercentTowardNew[p] = 0; m_bValuesVisible[p] = true; } else // pNotes == NULL { m_bValuesVisible[p] = false; } } void GrooveRadar::GrooveRadarValueMap::Update( float fDeltaTime ) { ActorFrame::Update( fDeltaTime ); for( int p=0; pGetVertexBuffer(); LPDIRECT3DDEVICE8 pd3dDevice = DISPLAY->GetDevice(); pd3dDevice->SetTexture( 0, NULL ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE ); pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2 ); RAGEVERTEX* v; for( int p=0; pLock( 0, 0, (BYTE**)&v, 0 ); D3DXCOLOR color = PlayerToColor( (PlayerNumber)p ); color.a = 0.5f; v[0].p = D3DXVECTOR3( 0, 0, 0 ); v[0].color = color; int i; for( i=0; iUnlock(); pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 5 ); // // use a strip to draw the thick line // pVB->Lock( 0, 0, (BYTE**)&v, 0 ); for( i=0; iUnlock(); pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 10 ); } } void GrooveRadar::GrooveRadarValueMap::TweenOnScreen() { SetZoom( 0.5f ); SetRotation( D3DX_PI*4 ); BeginTweening( 0.6f ); SetTweenZoom( 1 ); SetTweenRotationZ( 0 ); } void GrooveRadar::GrooveRadarValueMap::TweenOffScreen() { BeginTweening( 0.6f ); SetTweenRotationZ( D3DX_PI*4 ); SetTweenZoom( 0 ); }