2002-02-24 10:31:20 +00:00
|
|
|
#include "stdafx.h"
|
|
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
File: ArrowEffects.cpp
|
|
|
|
|
|
2002-03-19 07:09:49 +00:00
|
|
|
Desc: Functions that return properties of arrows based on StyleDef and PlayerOptions
|
2002-02-24 10:31:20 +00:00
|
|
|
|
2002-05-19 01:59:48 +00:00
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
2002-02-24 10:31:20 +00:00
|
|
|
Chris Danford
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
2002-08-13 23:26:46 +00:00
|
|
|
|
2002-02-24 10:31:20 +00:00
|
|
|
#include "ArrowEffects.h"
|
2002-05-19 01:59:48 +00:00
|
|
|
#include "Notes.h"
|
2002-05-01 19:14:55 +00:00
|
|
|
#include "GameConstantsAndTypes.h"
|
2002-04-16 17:31:00 +00:00
|
|
|
#include "GameManager.h"
|
2002-07-23 01:41:40 +00:00
|
|
|
#include "GameState.h"
|
2002-07-27 19:29:51 +00:00
|
|
|
#include "RageException.h"
|
|
|
|
|
#include "RageTimer.h"
|
2002-08-13 23:26:46 +00:00
|
|
|
#include "NoteDisplay.h"
|
2002-02-24 10:31:20 +00:00
|
|
|
|
|
|
|
|
|
2002-08-23 20:18:29 +00:00
|
|
|
float ArrowGetYOffset( const PlayerNumber pn, float fNoteBeat )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
2002-07-29 03:06:55 +00:00
|
|
|
float fSongBeat = GAMESTATE->m_fSongBeat;
|
2002-08-13 23:26:46 +00:00
|
|
|
float fBeatsUntilStep = fNoteBeat - fSongBeat;
|
2002-02-24 10:31:20 +00:00
|
|
|
float fYOffset = fBeatsUntilStep * ARROW_GAP;
|
2002-07-29 03:06:55 +00:00
|
|
|
switch( GAMESTATE->m_PlayerOptions[pn].m_EffectType )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
|
|
|
|
case PlayerOptions::EFFECT_BOOST:
|
|
|
|
|
fYOffset *= 1.4f / ((fYOffset+SCREEN_HEIGHT/1.6f)/SCREEN_HEIGHT);
|
|
|
|
|
break;
|
|
|
|
|
case PlayerOptions::EFFECT_WAVE:
|
|
|
|
|
fYOffset += 15.0f*sinf( fYOffset/38.0f );
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return fYOffset;
|
|
|
|
|
}
|
|
|
|
|
|
2002-08-13 23:26:46 +00:00
|
|
|
float ArrowGetXPos2( const PlayerNumber pn, int iColNum, float fYPos )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
2002-07-29 03:06:55 +00:00
|
|
|
float fSongBeat = GAMESTATE->m_fSongBeat;
|
2002-07-23 01:41:40 +00:00
|
|
|
float fPixelOffsetFromCenter = GAMESTATE->GetCurrentStyleDef()->m_ColumnInfo[PLAYER_1][iColNum].fXOffset;
|
2002-02-24 10:31:20 +00:00
|
|
|
|
2002-07-29 03:06:55 +00:00
|
|
|
switch( GAMESTATE->m_PlayerOptions[pn].m_EffectType )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
|
|
|
|
case PlayerOptions::EFFECT_DRUNK:
|
2002-08-13 23:26:46 +00:00
|
|
|
fPixelOffsetFromCenter += cosf( TIMER->GetTimeSinceStart() + iColNum*0.2f + fYPos*6/SCREEN_HEIGHT) * ARROW_SIZE*0.5f;
|
2002-02-24 10:31:20 +00:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return fPixelOffsetFromCenter;
|
|
|
|
|
}
|
|
|
|
|
|
2002-07-29 03:06:55 +00:00
|
|
|
float ArrowGetRotation( const PlayerNumber pn, int iColNum, float fYOffset )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
2002-04-01 02:04:43 +00:00
|
|
|
float fRotation = 0; //StyleDef.m_ColumnToRotation[iColNum];
|
2002-02-25 23:29:39 +00:00
|
|
|
|
2002-07-29 03:06:55 +00:00
|
|
|
switch( GAMESTATE->m_PlayerOptions[pn].m_EffectType )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
|
|
|
|
case PlayerOptions::EFFECT_DIZZY:
|
|
|
|
|
fRotation += fYOffset/SCREEN_HEIGHT*6;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fRotation;
|
|
|
|
|
}
|
|
|
|
|
|
2002-07-29 03:06:55 +00:00
|
|
|
float ArrowGetYPos( const PlayerNumber pn, float fYOffset )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
2002-07-29 03:06:55 +00:00
|
|
|
return fYOffset * GAMESTATE->m_PlayerOptions[pn].m_fArrowScrollSpeed * (GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll ? -1 : 1 );
|
2002-02-24 10:31:20 +00:00
|
|
|
}
|
|
|
|
|
|
2002-07-29 03:06:55 +00:00
|
|
|
float ArrowGetAlpha( const PlayerNumber pn, float fYPos )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
|
|
|
|
float fAlpha;
|
2002-07-28 18:55:49 +00:00
|
|
|
static float blinktimer=0;
|
|
|
|
|
if (blinktimer == 0)
|
|
|
|
|
blinktimer = TIMER->GetTimeSinceStart();
|
|
|
|
|
|
2002-08-01 03:15:27 +00:00
|
|
|
const bool bReverse = GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll;
|
|
|
|
|
|
2002-07-28 18:55:49 +00:00
|
|
|
static int blinkstate=2;
|
2002-07-29 03:06:55 +00:00
|
|
|
switch( GAMESTATE->m_PlayerOptions[pn].m_AppearanceType )
|
2002-02-24 10:31:20 +00:00
|
|
|
{
|
|
|
|
|
case PlayerOptions::APPEARANCE_VISIBLE:
|
|
|
|
|
fAlpha = 1;
|
|
|
|
|
break;
|
|
|
|
|
case PlayerOptions::APPEARANCE_HIDDEN:
|
2002-08-13 23:26:46 +00:00
|
|
|
fAlpha = ((bReverse?-fYPos:fYPos)-100)/100;
|
2002-02-24 10:31:20 +00:00
|
|
|
break;
|
|
|
|
|
case PlayerOptions::APPEARANCE_SUDDEN:
|
2002-08-13 23:26:46 +00:00
|
|
|
fAlpha = ((SCREEN_HEIGHT-(bReverse?-fYPos:fYPos))-260)/100;
|
2002-02-24 10:31:20 +00:00
|
|
|
break;
|
|
|
|
|
case PlayerOptions::APPEARANCE_STEALTH:
|
|
|
|
|
fAlpha = 0;
|
2002-07-28 18:55:49 +00:00
|
|
|
break;
|
|
|
|
|
case PlayerOptions::APPEARANCE_BLINK: // this is an Ez2dancer Appearance Mode
|
|
|
|
|
if (TIMER->GetTimeSinceStart() > blinktimer + 0.20f)
|
|
|
|
|
{
|
|
|
|
|
blinktimer = TIMER->GetTimeSinceStart();
|
|
|
|
|
if (blinkstate == 1)
|
|
|
|
|
{
|
|
|
|
|
blinkstate = 2;
|
|
|
|
|
}
|
|
|
|
|
else if (blinkstate == 0)
|
|
|
|
|
{
|
|
|
|
|
blinkstate = 3;
|
|
|
|
|
}
|
|
|
|
|
else if (blinkstate == 2)
|
|
|
|
|
{
|
|
|
|
|
blinkstate = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
blinkstate = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (blinkstate == 1)
|
|
|
|
|
{
|
|
|
|
|
fAlpha = 1;
|
|
|
|
|
}
|
|
|
|
|
else if (blinkstate == 0)
|
|
|
|
|
{
|
|
|
|
|
fAlpha = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fAlpha = ((fYPos-200)/200) + (((SCREEN_HEIGHT-fYPos)-260)/200);
|
|
|
|
|
}
|
|
|
|
|
|
2002-02-24 10:31:20 +00:00
|
|
|
break;
|
2002-03-30 20:00:13 +00:00
|
|
|
default:
|
|
|
|
|
ASSERT( false );
|
|
|
|
|
fAlpha = 0;
|
2002-02-24 10:31:20 +00:00
|
|
|
};
|
2002-08-01 03:15:27 +00:00
|
|
|
if( !bReverse && fYPos < 0 )
|
|
|
|
|
fAlpha = 1;
|
|
|
|
|
else if( bReverse && fYPos > 0 )
|
2002-02-24 10:31:20 +00:00
|
|
|
fAlpha = 1;
|
|
|
|
|
|
2002-08-13 23:26:46 +00:00
|
|
|
return clamp( fAlpha, 0, 1 );
|
2002-02-24 10:31:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|