split LONG transform into BIG and QUICK

This commit is contained in:
Chris Danford
2003-02-20 00:57:52 +00:00
parent 514edee5e6
commit 8fc33de8bf
10 changed files with 54 additions and 28 deletions
+4 -3
View File
@@ -11,15 +11,16 @@ NEW FEATURE: New Edit menus with ability to delete Notes patterns and new
options for importing existing patterns into a new Notes pattern.
NEW FEATURE: Jukebox mode. Like demonstration, but plays entire songs
and loops.
NEW FEATURE: F6 to save screenshot. Saved in StepMania program directory
NEW FEATURE: F5 to save screenshot. Saved in StepMania program directory
as "screenshotXXXX.bmp".
CHANGE: Reorganization of options screens.
NEW FEATURE: Option for user-selectable extra stage 1
CHANGE: Documentation now in HTML format.
CHANGE: Overhauled NoteSkin format. See README-FIRST.htm for details.
CHANGE: Overhauled NoteSkin format. See README-FIRST.html for details.
BUG FIX: Super-shuffle fixed (now doesn't add extra notes)
NEW FEATURE: Added WIDE transform (changes notes on beats to jumps)
NEW FEATURE: Added TALL transform (adds 16th notes between 8ths)
NEW FEATURE: Added BIG transform (strategically inserts 8ths)
NEW FEATURE: Added QUICK transform (strategically inserts 16ths)
----------------------- Version 3.01 ---------------------------
CHANGE: Simplified NoteSkin tap graphic format. Old NoteSkins will need to
+24 -6
View File
@@ -1043,25 +1043,43 @@ void NoteDataUtil::Wide( NoteData &in )
in.Convert4sToHoldNotes();
}
void NoteDataUtil::Tall( NoteData &in )
void NoteDataUtil::Big( NoteData &in )
{
InsertIntelligentTaps(in,1.0f); // add 8ths
}
void NoteDataUtil::Quick( NoteData &in )
{
InsertIntelligentTaps(in,0.5f); // add 16ths
}
void NoteDataUtil::InsertIntelligentTaps( NoteData &in, float fBeatInterval )
{
in.ConvertHoldNotesTo4s();
// insert 16th between all 4th-8ths
int max_row = in.GetLastRow();
int rows_per_eighth = ROWS_PER_BEAT/2;
for( int i=0; i<=max_row; i+=rows_per_eighth )
int rows_per_interval = BeatToNoteRow( fBeatInterval );
for( int i=0; i<=max_row; i+=rows_per_interval )
{
int iRowEarlier = i;
int iRowLater = i + rows_per_eighth;
int iRowMiddle = i + rows_per_eighth/2;
int iRowLater = i + rows_per_interval;
int iRowMiddle = i + rows_per_interval/2;
if( in.GetNumTapNonEmptyTracks(iRowEarlier) != 1 )
continue;
if( in.GetNumTapNonEmptyTracks(iRowLater) != 1 )
continue;
// there is a 4th and 8th note surrounding iRowBetween
if( !in.IsRowEmpty(iRowMiddle) ) // there's already a 16th here
// don't insert a new note if there's already one within this interval
bool bNoteInMiddle = false;
for( int j=iRowEarlier+1; j<=iRowLater-1; j++ )
if( !in.IsRowEmpty(iRowMiddle) )
{
bNoteInMiddle = true;
break;
}
if( bNoteInMiddle )
continue;
// add a note determinitsitcally somewhere on a track different from the two surrounding notes
+3 -1
View File
@@ -140,7 +140,9 @@ namespace NoteDataUtil
void Turn( NoteData &in, TurnType tt );
void Little( NoteData &in );
void Wide( NoteData &in );
void Tall( NoteData &in );
void Big( NoteData &in );
void Quick( NoteData &in );
void InsertIntelligentTaps( NoteData &in, float fBeatInterval );
void SuperShuffleTaps( NoteData &in );
void Backwards( NoteData &in );
void SwapSides( NoteData &in );
+5 -4
View File
@@ -115,10 +115,11 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi
switch( GAMESTATE->m_PlayerOptions[pn].m_Transform )
{
case PlayerOptions::TRANSFORM_NONE: break;
case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break;
case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break;
case PlayerOptions::TRANSFORM_TALL: NoteDataUtil::Tall(*this); break;
case PlayerOptions::TRANSFORM_NONE: break;
case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break;
case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break;
case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(*this); break;
case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(*this); break;
default: ASSERT(0);
}
+7 -5
View File
@@ -88,10 +88,11 @@ CString PlayerOptions::GetString()
switch( m_Transform )
{
case TRANSFORM_NONE: break;
case TRANSFORM_LITTLE: sReturn += "Little, "; break;
case TRANSFORM_WIDE: sReturn += "Wide, "; break;
case TRANSFORM_TALL: sReturn += "Tall, "; break;
case TRANSFORM_NONE: break;
case TRANSFORM_LITTLE: sReturn += "Little, "; break;
case TRANSFORM_WIDE: sReturn += "Wide, "; break;
case TRANSFORM_BIG: sReturn += "Big, "; break;
case TRANSFORM_QUICK: sReturn += "Quick, "; break;
default: ASSERT(0); // invalid
}
@@ -153,7 +154,8 @@ void PlayerOptions::FromString( CString sOptions )
else if( sBit == "supershuffle" )m_TurnType = TURN_SUPER_SHUFFLE;
else if( sBit == "little" ) m_Transform = TRANSFORM_LITTLE;
else if( sBit == "wide" ) m_Transform = TRANSFORM_WIDE;
else if( sBit == "tall" ) m_Transform = TRANSFORM_TALL;
else if( sBit == "big" ) m_Transform = TRANSFORM_BIG;
else if( sBit == "quick" ) m_Transform = TRANSFORM_QUICK;
else if( sBit == "reverse" ) m_bReverseScroll = true;
else if( sBit == "noholds" ) m_bHoldNotes = false;
else if( sBit == "nofreeze" ) m_bHoldNotes = false;
+2 -1
View File
@@ -58,7 +58,8 @@ struct PlayerOptions
TRANSFORM_NONE=0,
TRANSFORM_LITTLE,
TRANSFORM_WIDE,
TRANSFORM_TALL,
TRANSFORM_BIG,
TRANSFORM_QUICK,
NUM_TRANSFORMS
} m_Transform;
void NextTransform();
+3 -2
View File
@@ -141,7 +141,7 @@ MiniMenuDefinition g_AreaMenu =
{ "Paste", true, 1, 0, {""} },
{ "Clear", true, 1, 0, {""} },
{ "Quantize", true, NUM_NOTE_TYPES, 0, {"4TH","8TH","12TH","16TH","24TH","32ND"} },
{ "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} },
{ "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Quick","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} },
{ "Play selection", true, 1, 0, {""} },
{ "Record in selection",true, 1, 0, {""} },
{ "Insert blank beat and shift down", true, 1, 0, {""} },
@@ -1290,7 +1290,8 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
{
case little: NoteDataUtil::Little( m_Clipboard ); break;
case wide: NoteDataUtil::Wide( m_Clipboard ); break;
case tall: NoteDataUtil::Tall( m_Clipboard ); break;
case big: NoteDataUtil::Big( m_Clipboard ); break;
case quick: NoteDataUtil::Quick( m_Clipboard ); break;
case left: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::left ); break;
case right: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::right ); break;
case shuffle: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::shuffle ); break;
+1 -1
View File
@@ -134,7 +134,7 @@ public:
NUM_AREA_MENU_CHOICES
};
void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers );
enum TransformType { little, wide, tall, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES };
enum TransformType { little, wide, big, quick, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES };
enum EditNotesStatisticsChoice {
difficulty,
+1 -1
View File
@@ -40,7 +40,7 @@ OptionRowData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
{ "Effect", 7, {"OFF","DRUNK","DIZZY","SPACE","MINI","FLIP","TORNADO"} },
{ "Appear\n-ance", 5, {"VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK"} },
{ "Turn", 6, {"OFF","MIRROR","LEFT","RIGHT","SHUFFLE","SUPER SHUFFLE"} },
{ "Trans\n-form", 4, {"OFF","LITTLE","WIDE","TALL"} },
{ "Trans\n-form", 5, {"OFF","LITTLE","WIDE","BIG","QUICK"} },
{ "Scroll", 2, {"STANDARD","REVERSE"} },
{ "Note\nSkin", 0, {""} },
{ "Holds", 2, {"OFF","ON"} },
+4 -4
View File
@@ -218,8 +218,8 @@ void ScreenRanking::SetPage( PageToShow pts )
if( bRecentHighScore )
{
m_textNames[l].SetEffectDiffuseBlinking( 0.1f, TEXT_COLOR, RageColor(1,1,1,1) );
m_textScores[l].SetEffectDiffuseBlinking( 0.1f, TEXT_COLOR, RageColor(1,1,1,1) );
m_textNames[l].SetEffectGlowBlinking(0.1f);
m_textScores[l].SetEffectGlowBlinking(0.1f);
}
else
{
@@ -252,8 +252,8 @@ void ScreenRanking::SetPage( PageToShow pts )
pts.nt == GAMESTATE->m_RankingNotesType &&
GAMESTATE->m_iRankingIndex[p] == l )
{
m_textNames[l].SetEffectDiffuseBlinking();
m_textScores[l].SetEffectDiffuseBlinking();
m_textNames[l].SetEffectGlowBlinking(0.1f);
m_textScores[l].SetEffectGlowBlinking(0.1f);
}
else
{