Use NoAttacks vs StepAttacks.

This commit is contained in:
Jason Felds
2011-06-26 23:58:24 -04:00
parent ceb79c5bb8
commit 4ab534de75
6 changed files with 45 additions and 27 deletions
+2
View File
@@ -19,6 +19,8 @@ StepMania 5.0 Preview 2 | 201106??
* [ScreenEdit] Allow jumping between all segments, not just Label segments.
You still use Ctrl + ,/. to jump, but now you use Ctrl + N/M to cycle the
segments. By default, it starts with Label. [Wolfman2000]
* [PlayerOptions] No longer display StepAttacks in the player's list.
Instead, show NoAttacks if attacks are disabled. [Wolfman2000]
2011/06/24
----------
+3 -3
View File
@@ -2355,10 +2355,10 @@ Mines,3="mod,mines;name,Add"
Mines,4="mod,attackmines;name,AttackMines"
Attacks="3"
AttacksDefault="mod,stepattacks"
Attacks,1="name,StepAttacks"
AttacksDefault="mod,no randomattacks, no noattacks"
Attacks,1="name,On"
Attacks,2="mod,randomattacks;name,RandomAttacks"
Attacks,3="mod,no randomattacks,no stepattacks;name,Off"
Attacks,3="mod,noattacks;name,Off"
PlayerAutoPlay="2"
PlayerAutoPlayDefault="mod,no playerautoplay"
+20 -8
View File
@@ -37,7 +37,7 @@ void PlayerOptions::Init()
m_fBlind = 0; m_SpeedfBlind = 1.0f;
m_fCover = 0; m_SpeedfCover = 1.0f;
m_fRandAttack = 0; m_SpeedfRandAttack = 1.0f;
m_fStepAttack = 1; m_SpeedfStepAttack = 1.0f;
m_fNoAttack = 0; m_SpeedfNoAttack = 1.0f;
m_fPlayerAutoPlay = 0; m_SpeedfPlayerAutoPlay = 1.0f;
m_bSetTiltOrSkew = false;
m_fPerspectiveTilt = 0; m_SpeedfPerspectiveTilt = 1.0f;
@@ -73,7 +73,7 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds )
APPROACH( fBlind );
APPROACH( fCover );
APPROACH( fRandAttack );
APPROACH( fStepAttack );
APPROACH( fNoAttack );
APPROACH( fPlayerAutoPlay );
APPROACH( fPerspectiveTilt );
APPROACH( fSkew );
@@ -180,7 +180,7 @@ void PlayerOptions::GetMods( vector<RString> &AddTo, bool bForceNoteSkin ) const
AddPart( AddTo, m_fCover, "Cover" );
AddPart( AddTo, m_fRandAttack, "RandomAttacks" );
AddPart( AddTo, m_fStepAttack, "StepAttacks" );
AddPart( AddTo, m_fNoAttack, "NoAttacks" );
AddPart( AddTo, m_fPlayerAutoPlay, "PlayerAutoPlay" );
AddPart( AddTo, m_fPassmark, "Passmark" );
@@ -417,7 +417,7 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
else if( sBit == "blind" ) SET_FLOAT( fBlind )
else if( sBit == "cover" ) SET_FLOAT( fCover )
else if( sBit == "randomattacks" ) SET_FLOAT( fRandAttack )
else if( sBit == "stepattacks" ) SET_FLOAT( fStepAttack )
else if( sBit == "noattacks" ) SET_FLOAT( fNoAttack )
else if( sBit == "playerautoplay" ) SET_FLOAT( fPlayerAutoPlay )
else if( sBit == "passmark" ) SET_FLOAT( fPassmark )
else if( sBit == "overhead" ) { m_bSetTiltOrSkew = true; m_fSkew = 0; m_fPerspectiveTilt = 0; m_SpeedfSkew = m_SpeedfPerspectiveTilt = speed; }
@@ -657,7 +657,7 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const
COMPARE(m_fBlind);
COMPARE(m_fCover);
COMPARE(m_fRandAttack);
COMPARE(m_fStepAttack);
COMPARE(m_fNoAttack);
COMPARE(m_fPlayerAutoPlay);
COMPARE(m_fPerspectiveTilt);
COMPARE(m_fSkew);
@@ -713,7 +713,7 @@ bool PlayerOptions::IsEasierForSongAndSteps( Song* pSong, Steps* pSteps, PlayerN
if( m_bTransforms[TRANSFORM_ECHO] ) return true;
// Removing attacks is easier in general.
if (!m_fStepAttack && !m_fRandAttack && pSteps->HasAttacks())
if (m_fNoAttack || (!m_fRandAttack && pSteps->HasAttacks()))
return true;
if( m_fCover ) return true;
@@ -961,9 +961,20 @@ public:
DEFINE_METHOD( GetBlind, m_fBlind )
DEFINE_METHOD( GetCover, m_fCover )
DEFINE_METHOD( GetRandomAttacks, m_fRandAttack )
static int GetStepAttacks( T *p, lua_State *L )
{
lua_pushnumber(L,
(p->m_fNoAttack > 0 || p->m_fRandAttack > 0 ? 0 : 1 ));
return 1;
}
// This one is deprecated.
DEFINE_METHOD( GetSongAttacks, m_fStepAttack )
DEFINE_METHOD( GetStepAttacks, m_fStepAttack )
static int GetSongAttacks( T *p, lua_State *L )
{
return GetStepAttacks(p, L);
}
DEFINE_METHOD( GetNoAttacks, m_fNoAttack )
DEFINE_METHOD( GetSkew, m_fSkew )
DEFINE_METHOD( GetPassmark, m_fPassmark )
DEFINE_METHOD( GetRandomSpeed, m_fRandomSpeed )
@@ -991,6 +1002,7 @@ public:
ADD_METHOD( GetSongAttacks );
// SetSongAttacks
ADD_METHOD( GetStepAttacks );
ADD_METHOD( GetNoAttacks );
ADD_METHOD( GetCMod );
ADD_METHOD( GetXMod );
+2 -2
View File
@@ -27,7 +27,7 @@ public:
m_fBlind(0), m_SpeedfBlind(1.0f),
m_fCover(0), m_SpeedfCover(1.0f),
m_fRandAttack(0), m_SpeedfRandAttack(1.0f),
m_fStepAttack(1), m_SpeedfStepAttack(1.0f),
m_fNoAttack(0), m_SpeedfNoAttack(1.0f),
m_fPlayerAutoPlay(0), m_SpeedfPlayerAutoPlay(1.0f),
m_bSetTiltOrSkew(false),
m_fPerspectiveTilt(0), m_SpeedfPerspectiveTilt(1.0f),
@@ -167,7 +167,7 @@ public:
float m_fBlind, m_SpeedfBlind;
float m_fCover, m_SpeedfCover; // hide the background per-player--can't think of a good name
float m_fRandAttack, m_SpeedfRandAttack;
float m_fStepAttack, m_SpeedfStepAttack;
float m_fNoAttack, m_SpeedfNoAttack;
float m_fPlayerAutoPlay, m_SpeedfPlayerAutoPlay;
bool m_bSetTiltOrSkew; // true if the tilt or skew was set by FromString
float m_fPerspectiveTilt, m_SpeedfPerspectiveTilt; // -1 = near, 0 = overhead, +1 = space
+14 -11
View File
@@ -4516,20 +4516,23 @@ void ScreenEdit::SetupCourseAttacks()
FOREACH( Attack, Attacks, attack )
GAMESTATE->m_pPlayerState[PLAYER_1]->LaunchAttack( *attack );
}
else if (GAMESTATE->m_pCurSong &&
GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions.GetCurrent().m_fStepAttack != 0 )
else
{
AttackArray &attacks = GAMESTATE->m_bIsUsingStepTiming ?
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Attacks :
GAMESTATE->m_pCurSong->m_Attacks;
if (attacks.size() > 0)
const PlayerOptions &p = GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions.GetCurrent();
if (GAMESTATE->m_pCurSong && p.m_fNoAttack != 0 && p.m_fRandAttack != 0 )
{
FOREACH(Attack, attacks, attack)
AttackArray &attacks = GAMESTATE->m_bIsUsingStepTiming ?
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Attacks :
GAMESTATE->m_pCurSong->m_Attacks;
if (attacks.size() > 0)
{
float fBeat = GetAppropriateTiming().GetBeatFromElapsedTime(attack->fStartSecond);
if (fBeat >= GetBeat())
GAMESTATE->m_pPlayerState[PLAYER_1]->LaunchAttack( *attack );
FOREACH(Attack, attacks, attack)
{
float fBeat = GetAppropriateTiming().GetBeatFromElapsedTime(attack->fStartSecond);
if (fBeat >= GetBeat())
GAMESTATE->m_pPlayerState[PLAYER_1]->LaunchAttack( *attack );
}
}
}
}
+4 -3
View File
@@ -820,9 +820,10 @@ void ScreenGameplay::InitSongQueues()
{
Steps *pSteps = GAMESTATE->m_pCurSteps[ pi->GetStepsAndTrailIndex() ];
pi->m_vpStepsQueue.push_back( pSteps );
if( pi->GetPlayerState()->m_PlayerOptions.GetCurrent().m_fStepAttack != 0 &&
pSteps->m_Attacks.size() > 0 )
const PlayerOptions &p = pi->GetPlayerState()->m_PlayerOptions.GetCurrent();
if (p.m_fNoAttack == 0 && p.m_fRandAttack == 0 &&
pSteps->m_Attacks.size() > 0 )
{
pi->m_asModifiersQueue.push_back( pSteps->m_Attacks );
}