fuckin merges reverted

This commit is contained in:
Flameshadowxeroshin
2011-03-14 19:30:41 -05:00
parent 96b90ee086
commit 4efd7886ed
122 changed files with 701 additions and 802 deletions
+1 -1
View File
@@ -445,7 +445,7 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float
{
// find the middle, and split based on iColNum
// it's unknown if this will work for routine.
const int iMiddleColumn = static_cast<int>(floor(pStyle->m_iColsPerPlayer/2.0f));
const int iMiddleColumn = floor(pStyle->m_iColsPerPlayer/2.0f);
if( iColNum > iMiddleColumn-1 )
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_XMODE]*-(fYOffset);
else
+2 -2
View File
@@ -34,8 +34,8 @@ void Attack::GetRealtimeAttackBeats( const Song *pSong, const PlayerState* pPlay
fStartBeat = min( GAMESTATE->m_fSongBeat+8, pPlayerState->m_fLastDrawnBeat );
fStartBeat = truncf(fStartBeat)+1;
const float lStartSecond = pSong->GetElapsedTimeFromBeat( fStartBeat );
const float fEndSecond = lStartSecond + fSecsRemaining;
const float fStartSecond = pSong->GetElapsedTimeFromBeat( fStartBeat );
const float fEndSecond = fStartSecond + fSecsRemaining;
fEndBeat = pSong->GetBeatFromElapsedTime( fEndSecond );
fEndBeat = truncf(fEndBeat)+1;
+11 -9
View File
@@ -32,10 +32,7 @@ struct Attack
bGlobal = false;
bShowInAttackList = true;
}
Attack(): level(ATTACK_LEVEL_1), fStartSecond(-1),
fSecsRemaining(0), sModifiers(RString()),
bOn(false), bGlobal(false), bShowInAttackList(true)
{} // MakeBlank() is effectively called here.
Attack() { MakeBlank(); }
Attack(
AttackLevel level_,
float fStartSecond_,
@@ -43,11 +40,16 @@ struct Attack
RString sModifiers_,
bool bOn_,
bool bGlobal_,
bool bShowInAttackList_ = true ):
level(level_), fStartSecond(fStartSecond_),
fSecsRemaining(fSecsRemaining_), sModifiers(sModifiers_),
bOn(bOn_), bGlobal(bGlobal_),
bShowInAttackList(bShowInAttackList_) {}
bool bShowInAttackList_ = true )
{
level = level_;
fStartSecond = fStartSecond_;
fSecsRemaining = fSecsRemaining_;
sModifiers = sModifiers_;
bOn = bOn_;
bGlobal = bGlobal_;
bShowInAttackList = bShowInAttackList_;
}
void GetAttackBeats( const Song *pSong, float &fStartBeat, float &fEndBeat ) const;
void GetRealtimeAttackBeats( const Song *pSong, const PlayerState* pPlayerState, float &fStartBeat, float &fEndBeat ) const;
+2 -2
View File
@@ -80,11 +80,11 @@ void AutoKeysounds::LoadAutoplaySoundsInto( RageSoundReader_Chain *pChain )
bool bSoundIsGlobal = true;
{
PlayerNumber pn = GetNextEnabledPlayer((PlayerNumber)-1);
const TapNote &tap = tn[pn];
const TapNote &t = tn[pn];
pn = GetNextEnabledPlayer(pn);
while( pn != PLAYER_INVALID )
{
if( tn[pn].type != TapNote::autoKeysound || tn[pn].iKeysoundIndex != tap.iKeysoundIndex )
if( tn[pn].type != TapNote::autoKeysound || tn[pn].iKeysoundIndex != t.iKeysoundIndex )
bSoundIsGlobal = false;
pn = GetNextEnabledPlayer(pn);
}
+3 -3
View File
@@ -77,9 +77,9 @@ void BGAnimation::AddLayersFromAniDir( const RString &_sAniDir, const XNode *pNo
else
{
// import as a single layer
BGAnimationLayer* bgLayer = new BGAnimationLayer;
bgLayer->LoadFromNode( pKey );
this->AddChild( bgLayer );
BGAnimationLayer* pLayer = new BGAnimationLayer;
pLayer->LoadFromNode( pKey );
this->AddChild( pLayer );
}
}
}
+3 -3
View File
@@ -746,9 +746,9 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
if( !change.m_sTransition.empty() )
{
map<RString,BackgroundTransition>::const_iterator lIter = mapNameToTransition.find( change.m_sTransition );
ASSERT( lIter != mapNameToTransition.end() );
const BackgroundTransition &bt = lIter->second;
map<RString,BackgroundTransition>::const_iterator iter = mapNameToTransition.find( change.m_sTransition );
ASSERT( iter != mapNameToTransition.end() );
const BackgroundTransition &bt = iter->second;
m_pFadingBGA->RunCommandsOnLeaves( *bt.cmdLeaves );
m_pFadingBGA->RunCommands( *bt.cmdRoot );
}
-2
View File
@@ -250,11 +250,9 @@ void BeginnerHelper::DrawPrimitives()
m_sStepCircle[scd][scde].Draw();
if( DrawCelShaded )
{
FOREACH_PlayerNumber( pn ) // Draw each dancer
if( GAMESTATE->IsHumanPlayer(pn) )
m_pDancer[pn]->DrawCelShaded();
}
else
{
DISPLAY->SetLighting( true );
+4 -3
View File
@@ -5,9 +5,10 @@
#include "RageTextureID.h"
#include "ActorUtil.h"
Character::Character(): m_sCharDir(""), m_sCharacterID(""),
m_sDisplayName(""), m_sCardPath(""), m_sIconPath(""),
m_bUsableInRave(false), m_iPreloadRefcount(0) {}
Character::Character()
{
m_iPreloadRefcount = 0;
}
bool Character::Load( RString sCharDir )
{
+4 -4
View File
@@ -519,8 +519,8 @@ bool Course::GetTrailUnsorted( StepsType st, CourseDifficulty cd, Trail &trail )
if( e->iChooseIndex < int(vSongAndSteps.size()) )
{
resolved.pSong = vpSongs[e->iChooseIndex];
const vector<Steps*> &mappedSongs = mapSongToSteps[resolved.pSong];
resolved.pSteps = mappedSongs[ RandomInt(mappedSongs.size()) ];
const vector<Steps*> &vpSongs = mapSongToSteps[resolved.pSong];
resolved.pSteps = vpSongs[ RandomInt(vpSongs.size()) ];
}
else
{
@@ -930,8 +930,8 @@ const CourseEntry *Course::FindFixedSong( const Song *pSong ) const
FOREACH_CONST( CourseEntry, m_vEntries, e )
{
const CourseEntry &entry = *e;
Song *lSong = entry.songID.ToSong();
if( pSong == lSong )
Song *pSong = entry.songID.ToSong();
if( pSong == pSong )
return &entry;
}
+12 -3
View File
@@ -55,9 +55,18 @@ public:
float fGainSeconds; // time gained back at the beginning of the song. LifeMeterTime only.
int iGainLives; // lives gained back at the beginning of the next song
CourseEntry(): bSecret(false), bNoDifficult(false),
songSort(SongSort_Randomize), iChooseIndex(0),
sModifiers(RString("")), fGainSeconds(0), iGainLives(-1) {}
CourseEntry()
{
bSecret = false;
bNoDifficult = false;
songSort = SongSort_Randomize;
iChooseIndex = 0;
sModifiers = "";
fGainSeconds = 0;
iGainLives = -1;
}
bool IsFixedSong() const { return songID.IsValid(); }
+1 -1
View File
@@ -464,7 +464,7 @@ void EditCourseUtil::PrepareForPlay()
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_GoalType = GoalType_Time;
Course *pCourse = GAMESTATE->m_pCurCourse;
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_iGoalSeconds = static_cast<int>(pCourse->m_fGoalSeconds);
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_iGoalSeconds = pCourse->m_fGoalSeconds;
}
void EditCourseUtil::GetAllEditCourses( vector<Course*> &vpCoursesOut )
+6 -6
View File
@@ -311,15 +311,15 @@ const glyph &Font::GetGlyph( wchar_t c ) const
bool Font::FontCompleteForString( const wstring &str ) const
{
map<wchar_t,glyph*>::const_iterator mapDefault = m_iCharToGlyph.find( FONT_DEFAULT_GLYPH );
if( mapDefault == m_iCharToGlyph.end() )
map<wchar_t,glyph*>::const_iterator m_pDefault = m_iCharToGlyph.find( FONT_DEFAULT_GLYPH );
if( m_pDefault == m_iCharToGlyph.end() )
RageException::Throw( "The default glyph is missing from the font \"%s\".", path.c_str() );
for( unsigned i = 0; i < str.size(); ++i )
{
// If the glyph for this character is the default glyph, we're incomplete.
const glyph &g = GetGlyph( str[i] );
if( &g == mapDefault->second )
if( &g == m_pDefault->second )
return false;
}
return true;
@@ -718,8 +718,8 @@ void Font::Load( const RString &sIniPath, RString sChars )
for(unsigned i = 0; i < ImportList.size(); ++i)
{
RString fPath = THEME->GetPathF( "", ImportList[i], true );
if( fPath == "" )
RString path = THEME->GetPathF( "", ImportList[i], true );
if( path == "" )
{
RString s = ssprintf( "Font \"%s\" imports a font \"%s\" that doesn't exist", sIniPath.c_str(), ImportList[i].c_str() );
Dialog::OK( s );
@@ -727,7 +727,7 @@ void Font::Load( const RString &sIniPath, RString sChars )
}
Font subfont;
subfont.Load(fPath,"");
subfont.Load(path,"");
MergeFont(subfont);
//FONT->UnloadFont(subfont);
}
+5 -5
View File
@@ -76,23 +76,23 @@ void Foreground::Update( float fDeltaTime )
/* Update the actor even if we're about to hide it, so queued commands
* are always run. */
float lDeltaTime;
float fDeltaTime;
if( !bga.m_bga->GetVisible() )
{
bga.m_bga->SetVisible( true );
const float fStartSecond = m_pSong->m_Timing.GetElapsedTimeFromBeat( bga.m_fStartBeat );
lDeltaTime = GAMESTATE->m_fMusicSeconds - fStartSecond;
fDeltaTime = GAMESTATE->m_fMusicSeconds - fStartSecond;
}
else
{
lDeltaTime = GAMESTATE->m_fMusicSeconds - m_fLastMusicSeconds;
fDeltaTime = GAMESTATE->m_fMusicSeconds - m_fLastMusicSeconds;
}
// This shouldn't go down, but be safe:
lDeltaTime = max( lDeltaTime, 0 );
fDeltaTime = max( fDeltaTime, 0 );
bga.m_bga->Update( lDeltaTime / fRate );
bga.m_bga->Update( fDeltaTime / fRate );
if( GAMESTATE->m_fSongBeat > bga.m_fStopBeat )
{
+2 -2
View File
@@ -93,8 +93,8 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
if( m_pSteps == NULL && m_dc != Difficulty_Invalid )
{
// Why is this checking for all players?
FOREACH_HumanPlayer( human )
if( GAMESTATE->m_PreferredDifficulty[human] != m_dc )
FOREACH_HumanPlayer( pn )
if( GAMESTATE->m_PreferredDifficulty[pn] != m_dc )
return false;
}
+2 -2
View File
@@ -2361,9 +2361,9 @@ public:
return 1;
}
static int GetCurrentStepsCredits( T* t, lua_State *L )
static int GetCurrentStepsCredits( T* p, lua_State *L )
{
const Song* pSong = t->m_pCurSong;
const Song* pSong = p->m_pCurSong;
if( pSong == NULL )
return 0;
+3 -3
View File
@@ -1093,12 +1093,12 @@ void InputMappings::ReadMappings( const InputScheme *pInputScheme, RString sFile
vector<RString> sDeviceInputStrings;
split( value, DEVICE_INPUT_SEPARATOR, sDeviceInputStrings, false );
for( unsigned j=0; j<sDeviceInputStrings.size() && j<unsigned(NUM_GAME_TO_DEVICE_SLOTS); j++ )
for( unsigned i=0; i<sDeviceInputStrings.size() && i<unsigned(NUM_GAME_TO_DEVICE_SLOTS); i++ )
{
DeviceInput DeviceI;
DeviceI.FromString( sDeviceInputStrings[j] );
DeviceI.FromString( sDeviceInputStrings[i] );
if( DeviceI.IsValid() )
SetInputMap( DeviceI, GameI, j );
SetInputMap( DeviceI, GameI, i );
}
}
}
+14 -6
View File
@@ -12,12 +12,20 @@ const int NUM_USER_GAME_TO_DEVICE_SLOTS = 2;
struct AutoMappingEntry
{
AutoMappingEntry( int i, DeviceButton db, GameButton gb, bool b ):
m_iSlotIndex(i), m_deviceButton(db),
m_gb(gb), m_bSecondController(b) {}
AutoMappingEntry(): m_iSlotIndex(-1),
m_deviceButton(DeviceButton_Invalid), m_gb(GameButton_Invalid),
m_bSecondController(false) {}
AutoMappingEntry( int i, DeviceButton db, GameButton gb, bool b )
{
m_iSlotIndex = i;
m_deviceButton = db;
m_gb = gb;
m_bSecondController = b;
}
AutoMappingEntry()
{
m_iSlotIndex = -1;
m_deviceButton = DeviceButton_Invalid;
m_gb = GameButton_Invalid;
m_bSecondController = false;
}
bool IsEmpty() const { return m_deviceButton == DeviceButton_Invalid && m_gb == GameButton_Invalid; }
int m_iSlotIndex;
-2
View File
@@ -25,8 +25,6 @@ private:
void CreateImpl();
RString m_sGroup, m_sName;
ILocalizedStringImpl *m_pImpl;
// Swallow up warnings. If they must be used, define them.
LocalizedString& operator=(const LocalizedString& rhs);
};
#endif
-6
View File
@@ -42,9 +42,6 @@ public:
private:
lua_State *m_pLuaMain;
// Swallow up warnings. If they must be used, define them.
LuaManager& operator=(const LuaManager& rhs);
LuaManager(const LuaManager& rhs);
};
extern LuaManager *LUA;
@@ -158,9 +155,6 @@ private:
LuaReference *m_Name;
LuaReference *m_pOldValue;
// Swallow up warnings. If they must be used, define them.
LuaThreadVariable& operator=(const LuaThreadVariable& rhs);
};
/**
+3 -3
View File
@@ -155,15 +155,15 @@ void ModIconRow::SetFromGameState()
continue; // skip
// search for a vacant spot
for( int j=iPerferredCol; j<NUM_OPTION_ICONS; j++ )
for( int i=iPerferredCol; i<NUM_OPTION_ICONS; i++ )
{
if( vsText[j] != "" )
if( vsText[i] != "" )
{
continue;
}
else
{
vsText[j] = sOption;
vsText[i] = sOption;
break;
}
}
+6 -3
View File
@@ -66,9 +66,12 @@ private:
RageTexture* pTexture_,
float fDelaySecs_,
RageVector2 vTranslate_
):
pTexture(pTexture_), fDelaySecs(fDelaySecs_),
vTranslate(vTranslate_) {}
)
{
pTexture = pTexture_;
fDelaySecs = fDelaySecs_;
vTranslate = vTranslate_;
}
RageTexture* pTexture;
float fDelaySecs;
+2 -2
View File
@@ -847,9 +847,9 @@ void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow,
--prev;
if( prev->second.type == TapNote::hold_head )
{
int localStartRow = prev->first;
int iStartRow = prev->first;
const TapNote &tn = prev->second;
if( localStartRow + tn.iDuration >= iEndRow )
if( iStartRow + tn.iDuration >= iEndRow )
end = prev;
}
}
+8 -5
View File
@@ -250,8 +250,8 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
for( int t=0; t<out.GetNumTracks(); t++ )
{
NoteData::iterator begin = out.begin( t );
NoteData::iterator lEnd = out.end( t );
while( begin != lEnd )
NoteData::iterator end = out.end( t );
while( begin != end )
{
NoteData::iterator next = Increment( begin );
const TapNote &tn = begin->second;
@@ -629,9 +629,12 @@ int FindLongestOverlappingHoldNoteForAnyTrack( const NoteData &in, int iRow )
int iMaxTailRow = -1;
for( int t=0; t<in.GetNumTracks(); t++ )
{
const TapNote &tn = in.GetTapNote( t, iRow );
if( tn.type == TapNote::hold_head )
iMaxTailRow = max( iMaxTailRow, iRow + tn.iDuration );
for( int t=0; t<in.GetNumTracks(); t++ )
{
const TapNote &tn = in.GetTapNote( t, iRow );
if( tn.type == TapNote::hold_head )
iMaxTailRow = max( iMaxTailRow, iRow + tn.iDuration );
}
}
return iMaxTailRow;
+9 -13
View File
@@ -209,7 +209,7 @@ void NoteField::Load(
memset( m_pDisplays, 0, sizeof(m_pDisplays) );
FOREACH_EnabledPlayer( pn )
{
sNoteSkinLower = GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions.GetCurrent().m_sNoteSkin;
RString sNoteSkinLower = GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions.GetCurrent().m_sNoteSkin;
// XXX: Re-setup sNoteSkinLower. Unsure if inserting the skin again is needed.
if (sNoteSkinLower.empty())
@@ -1005,8 +1005,8 @@ void NoteField::DrawPrimitives()
m_pNoteData->GetTapNoteRange( c, iFirstRowToDraw, iLastRowToDraw+1, begin, end );
for( ; begin != end; ++begin )
{
int q = begin->first;
const TapNote &tn = begin->second; //m_pNoteData->GetTapNote(c, q);
int i = begin->first;
const TapNote &tn = begin->second; //m_pNoteData->GetTapNote(c, i);
// Switch modified by Wolfman2000, tested by Saturn2888
// Fixes hold head overlapping issue, but not the rolls.
@@ -1031,11 +1031,10 @@ void NoteField::DrawPrimitives()
// TRICKY: If boomerang is on, then all notes in the range
// [iFirstRowToDraw,iLastRowToDraw] aren't necessarily visible.
// Test every note to make sure it's on screen before drawing.
if( !IsOnScreen( NoteRowToBeat(q), c, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels ) )
if( !IsOnScreen( NoteRowToBeat(i), c, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels ) )
continue; // skip
ASSERT_M( NoteRowToBeat(q) > -2000, ssprintf("%i %i %i, %f %f", q, iLastRowToDraw,
iFirstRowToDraw, GAMESTATE->m_fSongBeat, GAMESTATE->m_fMusicSeconds) );
ASSERT_M( NoteRowToBeat(i) > -2000, ssprintf("%i %i %i, %f %f", i, iLastRowToDraw, iFirstRowToDraw, GAMESTATE->m_fSongBeat, GAMESTATE->m_fMusicSeconds) );
// See if there is a hold step that begins on this index.
// Only do this if the noteskin cares.
@@ -1044,7 +1043,7 @@ void NoteField::DrawPrimitives()
{
for( int c2=0; c2<m_pNoteData->GetNumTracks(); c2++ )
{
if( m_pNoteData->GetTapNote(c2, q).type == TapNote::hold_head)
if( m_pNoteData->GetTapNote(c2, i).type == TapNote::hold_head)
{
bHoldNoteBeginsOnThisBeat = true;
break;
@@ -1054,18 +1053,15 @@ void NoteField::DrawPrimitives()
bool bIsInSelectionRange = false;
if( m_iBeginMarker!=-1 && m_iEndMarker!=-1 )
bIsInSelectionRange = m_iBeginMarker<=q && q<m_iEndMarker;
bIsInSelectionRange = m_iBeginMarker<=i && i<m_iEndMarker;
bool bIsAddition = (tn.source == TapNote::addition);
bool bIsHopoPossible = (tn.bHopoPossible);
bool bUseAdditionColoring = bIsAddition || bIsHopoPossible;
NoteDisplayCols *displayCols = tn.pn == PLAYER_INVALID ? m_pCurDisplay : m_pDisplays[tn.pn];
displayCols->display[c].DrawTap( tn, c, NoteRowToBeat(q), bHoldNoteBeginsOnThisBeat,
bUseAdditionColoring, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail,
m_fYReverseOffsetPixels, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels,
FADE_BEFORE_TARGETS_PERCENT );
displayCols->display[c].DrawTap( tn, c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bUseAdditionColoring, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail, m_fYReverseOffsetPixels, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels, FADE_BEFORE_TARGETS_PERCENT );
bool bNoteIsUpcoming = NoteRowToBeat(q) > GAMESTATE->m_fSongBeat;
bool bNoteIsUpcoming = NoteRowToBeat(i) > GAMESTATE->m_fSongBeat;
bAnyUpcomingInThisCol |= bNoteIsUpcoming;
}
+7 -7
View File
@@ -282,22 +282,22 @@ try_again:
const NoteSkinData &data = iter->second;
RString sPath; // fill this in below
FOREACH_CONST( RString, data.vsDirSearchOrder, lIter )
FOREACH_CONST( RString, data.vsDirSearchOrder, iter )
{
if( sButtonName.empty() )
sPath = GetPathFromDirAndFile( *lIter, sElement );
sPath = GetPathFromDirAndFile( *iter, sElement );
else
sPath = GetPathFromDirAndFile( *lIter, sButtonName+" "+sElement );
sPath = GetPathFromDirAndFile( *iter, sButtonName+" "+sElement );
if( !sPath.empty() )
break; // done searching
}
if( sPath.empty() )
{
FOREACH_CONST( RString, data.vsDirSearchOrder, lIter )
FOREACH_CONST( RString, data.vsDirSearchOrder, iter )
{
if( !sButtonName.empty() )
sPath = GetPathFromDirAndFile( *lIter, "Fallback "+sElement );
sPath = GetPathFromDirAndFile( *iter, "Fallback "+sElement );
if( !sPath.empty() )
break; // done searching
}
@@ -340,9 +340,9 @@ try_again:
GetFileContents( sPath, sNewFileName, true );
RString sRealPath;
FOREACH_CONST( RString, data.vsDirSearchOrder, lIter )
FOREACH_CONST( RString, data.vsDirSearchOrder, iter )
{
sRealPath = GetPathFromDirAndFile( *lIter, sNewFileName );
sRealPath = GetPathFromDirAndFile( *iter, sNewFileName );
if( !sRealPath.empty() )
break; // done searching
}
-23
View File
@@ -204,29 +204,6 @@ extern TapNote TAP_ORIGINAL_FAKE; // 'F'
extern TapNote TAP_ADDITION_TAP;
extern TapNote TAP_ADDITION_MINE;
/**
* @brief Retrieve the string representing the TapNote Type.
*
* TODO: Find a way to standardize this with the other enum string calls.
* @param tn the TapNote's type.
* @return the intended string. */
inline const RString TapNoteTypeToString( TapNote::Type tn )
{
switch( tn )
{
case TapNote::empty: return RString("empty");
case TapNote::tap: return RString("tap");
case TapNote::hold_head: return RString("hold_head");
case TapNote::hold_tail: return RString("hold_tail");
case TapNote::mine: return RString("mine");
case TapNote::lift: return RString("lift");
case TapNote::attack: return RString("attack");
case TapNote::autoKeysound: return RString("autoKeysound");
case TapNote::fake: return RString("fake");
default: return RString();
}
}
/**
* @brief The number of tracks allowed.
*
+12 -12
View File
@@ -476,9 +476,9 @@ static bool LoadFromBMSFile( const RString &sPath, const NameToData_t &mapNameTo
if( sNoteId != "00" )
{
vTapNotes.push_back( TAP_ORIGINAL_TAP );
map<RString,int>::const_iterator rInt = idToKeySoundIndex.find( sNoteId );
if( rInt != idToKeySoundIndex.end() )
vTapNotes.back().iKeysoundIndex = rInt->second;
map<RString,int>::const_iterator it = idToKeySoundIndex.find( sNoteId );
if( it != idToKeySoundIndex.end() )
vTapNotes.back().iKeysoundIndex = it->second;
}
else
{
@@ -762,28 +762,28 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
continue;
// this is keysound file name. Looks like "#WAV1A"
RString nData = it->second;
RString sData = it->second;
RString sWavID = sName.Right(2);
/* Due to bugs in some programs, many BMS files have a "WAV" extension
* on files in the BMS for files that actually have some other extension.
* Do a search. Don't do a wildcard search; if sData is "song.wav",
* we might also have "song.png", which we shouldn't match. */
if( !IsAFile(out.GetSongDir()+nData) )
if( !IsAFile(out.GetSongDir()+sData) )
{
const char *exts[] = { "oga", "ogg", "wav", "mp3", NULL }; // XXX: stop duplicating these everywhere
for( unsigned i = 0; exts[i] != NULL; ++i )
{
RString fn = SetExtension( nData, exts[i] );
RString fn = SetExtension( sData, exts[i] );
if( IsAFile(out.GetSongDir()+fn) )
{
nData = fn;
sData = fn;
break;
}
}
}
if( !IsAFile(out.GetSongDir()+nData) )
LOG->UserLog( "Song file", out.GetSongDir(), "references key \"%s\" that can't be found", nData.c_str() );
if( !IsAFile(out.GetSongDir()+sData) )
LOG->UserLog( "Song file", out.GetSongDir(), "references key \"%s\" that can't be found", sData.c_str() );
sWavID.MakeUpper(); // HACK: undo the MakeLower()
out.m_vsKeysoundFile.push_back( sData );
@@ -807,11 +807,11 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
float fBeatsPerMeasure = GetBeatsPerMeasure( mapMeasureToTimeSig, iMeasureNo, sigAdjustmentsOut );
int iRowsPerMeasure = BeatToNoteRow( fBeatsPerMeasure );
RString nData = it->second;
int totalPairs = nData.size() / 2;
RString sData = it->second;
int totalPairs = sData.size() / 2;
for( int i = 0; i < totalPairs; ++i )
{
RString sPair = nData.substr( i*2, 2 );
RString sPair = sData.substr( i*2, 2 );
int iVal = 0;
if( sscanf( sPair, "%x", &iVal ) == 0 || iVal == 0 )
+5 -5
View File
@@ -750,9 +750,9 @@ static bool LoadFromMidi( const RString &sPath, Song &songOut )
if( uVelocity == 0 )
midiEventType = note_off;
MidiEvent mEvent = { count, midiEventType };
MidiEvent event = { count, midiEventType };
//float fBeat = NoteRowToBeat( MidiCountToNoteRow(count) );
vMidiEvent[uNoteNumber].push_back( mEvent );
vMidiEvent[uNoteNumber].push_back( event );
}
break;
default:
@@ -850,13 +850,13 @@ skip_track:
// hold note ending on the same row as a tap note.
NoteData::TrackMap::iterator begin, end;
noteData.GetTapNoteRangeInclusive( nnt, MidiCountToNoteRow(count), MidiCountToNoteRow(count), begin, end, true );
for( NoteData::TrackMap::iterator lIter = begin; lIter != end; lIter++ )
for( NoteData::TrackMap::iterator iter = begin; iter != end; iter++ )
{
// if( gd == expert && fBeat >= 27*4-2 && nnt == green )
// LOG->Trace( "shortening hold at %f, length %d", fBeat, length );
ASSERT( lIter->second.type == TapNote::hold_head );
lIter->second.iDuration = MidiCountToNoteRow(count) - lIter->first - 2;
ASSERT( iter->second.type == TapNote::hold_head );
iter->second.iDuration = MidiCountToNoteRow(count) - iter->first - 2;
}
noteData.SetTapNote( nnt, MidiCountToNoteRow(count), tn );
+14 -14
View File
@@ -408,9 +408,9 @@ static bool LoadFromPMSFile( const RString &sPath, const NameToData_t &mapNameTo
if( sNoteId != "00" )
{
vTapNotes.push_back( TAP_ORIGINAL_TAP );
map<RString,int>::const_iterator rInt = idToKeySoundIndex.find( sNoteId );
if( rInt != idToKeySoundIndex.end() )
vTapNotes.back().iKeysoundIndex = rInt->second;
map<RString,int>::const_iterator it = idToKeySoundIndex.find( sNoteId );
if( it != idToKeySoundIndex.end() )
vTapNotes.back().iKeysoundIndex = it->second;
}
else
{
@@ -609,31 +609,31 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
continue;
// this is keysound file name. Looks like "#WAV1A"
RString nData = it->second;
RString sData = it->second;
RString sWavID = sName.Right(2);
/* Due to bugs in some programs, many PMS files have a "WAV" extension
* on files in the PMS for files that actually have some other extension.
* Do a search. Don't do a wildcard search; if sData is "song.wav",
* we might also have "song.png", which we shouldn't match. */
if( !IsAFile(out.GetSongDir()+nData) )
if( !IsAFile(out.GetSongDir()+sData) )
{
const char *exts[] = { "oga", "ogg", "wav", "mp3", NULL }; // XXX: stop duplicating these everywhere
for( unsigned i = 0; exts[i] != NULL; ++i )
{
RString fn = SetExtension( nData, exts[i] );
RString fn = SetExtension( sData, exts[i] );
if( IsAFile(out.GetSongDir()+fn) )
{
nData = fn;
sData = fn;
break;
}
}
}
if( !IsAFile(out.GetSongDir()+nData) )
LOG->UserLog( "Song file", out.GetSongDir(), "references key \"%s\" that can't be found", nData.c_str() );
if( !IsAFile(out.GetSongDir()+sData) )
LOG->UserLog( "Song file", out.GetSongDir(), "references key \"%s\" that can't be found", sData.c_str() );
sWavID.MakeUpper(); // HACK: undo the MakeLower()
out.m_vsKeysoundFile.push_back( nData );
out.m_vsKeysoundFile.push_back( sData );
idToKeySoundIndexOut[ sWavID ] = out.m_vsKeysoundFile.size()-1;
LOG->Trace( "Inserting keysound index %u '%s'", unsigned(out.m_vsKeysoundFile.size()-1), sWavID.c_str() );
}
@@ -654,11 +654,11 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
float fBeatsPerMeasure = GetBeatsPerMeasure( mapMeasureToTimeSig, iMeasureNo, sigAdjustmentsOut );
int iRowsPerMeasure = BeatToNoteRow( fBeatsPerMeasure );
RString nData = it->second;
int totalPairs = nData.size() / 2;
RString sData = it->second;
int totalPairs = sData.size() / 2;
for( int i = 0; i < totalPairs; ++i )
{
RString sPair = nData.substr( i*2, 2 );
RString sPair = sData.substr( i*2, 2 );
int iVal = 0;
if( sscanf( sPair, "%x", &iVal ) == 0 || iVal == 0 )
@@ -738,7 +738,7 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
{
// XXX: offset
int iBPMNo;
sscanf( nData, "%x", &iBPMNo ); // data is in hexadecimal
sscanf( sData, "%x", &iBPMNo ); // data is in hexadecimal
RString sBPM;
RString sTagToLookFor = ssprintf( "#bpm%02x", iBPMNo );
+2 -3
View File
@@ -37,7 +37,6 @@ void SMLoader::LoadFromSMTokens(
// insert stepstype hacks from GameManager.cpp here? -aj
out.m_StepsType = GAMEMAN->StringToStepsType( sStepsType );
out.SetDescription( sDescription );
out.SetCredit( sDescription ); // this is often used for both.
out.SetDifficulty( DwiCompatibleStringToDifficulty(sDifficulty) );
// Handle hacks that originated back when StepMania didn't have
@@ -414,9 +413,9 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out )
if(arrayWarpsFromNegativeBPMs.size() > 0)
{
// zomg we already have some warps...
for( unsigned j=0; j<arrayWarpsFromNegativeBPMs.size(); j++ )
for( unsigned i=0; i<arrayWarpsFromNegativeBPMs.size(); i++ )
{
out.AddWarpSegment( arrayWarpsFromNegativeBPMs[j] );
out.AddWarpSegment( arrayWarpsFromNegativeBPMs[i] );
}
}
// warp sorting will need to take place.
+1 -5
View File
@@ -15,9 +15,6 @@
#include "RageUtil.h"
#include "Song.h"
#include "Steps.h"
#include "ThemeMetric.h"
ThemeMetric<bool> USE_CREDIT ( "NotesWriterSM", "DescriptionUsesCreditField" );
/**
* @brief Turn the BackgroundChange into a string.
@@ -271,8 +268,7 @@ static RString GetSMNotesTag( const Song &song, const Steps &in )
GAMEMAN->GetStepsTypeInfo(in.m_StepsType).szName, SmEscape(in.GetDescription()).c_str()) );
lines.push_back( song.m_vsKeysoundFile.empty() ? "#NOTES:" : "#NOTES2:" );
lines.push_back( ssprintf( " %s:", GAMEMAN->GetStepsTypeInfo(in.m_StepsType).szName ) );
RString desc = (USE_CREDIT ? in.GetCredit() : in.GetDescription());
lines.push_back( ssprintf( " %s:", SmEscape(desc).c_str() ) );
lines.push_back( ssprintf( " %s:", SmEscape(in.GetDescription()).c_str() ) );
lines.push_back( ssprintf( " %s:", DifficultyToString(in.GetDifficulty()).c_str() ) );
lines.push_back( ssprintf( " %d:", in.GetMeter() ) );
+1 -1
View File
@@ -603,7 +603,7 @@ void OptionRow::UpdateEnabledDisabled()
case LAYOUT_SHOW_ONE_IN_ROW:
FOREACH_HumanPlayer( pn )
{
bRowEnabled = m_pHand->m_Def.m_vEnabledForPlayers.find(pn) != m_pHand->m_Def.m_vEnabledForPlayers.end();
bool bRowEnabled = m_pHand->m_Def.m_vEnabledForPlayers.find(pn) != m_pHand->m_Def.m_vEnabledForPlayers.end();
if( !m_pHand->m_Def.m_bOneChoiceForAllPlayers )
{
+7 -7
View File
@@ -149,15 +149,15 @@ public:
{
// Parse the basic configuration metric.
Commands lCmds = ParseCommands( ENTRY(sParam) );
if( lCmds.v.size() < 1 )
Commands cmds = ParseCommands( ENTRY(sParam) );
if( cmds.v.size() < 1 )
RageException::Throw( "Parse error in \"ScreenOptionsMaster::%s\".", sParam.c_str() );
m_Def.m_bOneChoiceForAllPlayers = false;
const int NumCols = atoi( lCmds.v[0].m_vsArgs[0] );
for( unsigned i=1; i<lCmds.v.size(); i++ )
const int NumCols = atoi( cmds.v[0].m_vsArgs[0] );
for( unsigned i=1; i<cmds.v.size(); i++ )
{
const Command &cmd = lCmds.v[i];
const Command &cmd = cmds.v[i];
RString sName = cmd.GetName();
if( sName == "together" ) m_Def.m_bOneChoiceForAllPlayers = true;
@@ -188,8 +188,8 @@ public:
}
else if( sName == "broadcastonexport" )
{
for( unsigned j=1; j<cmd.m_vsArgs.size(); j++ )
m_vsBroadcastOnExport.push_back( cmd.m_vsArgs[j] );
for( unsigned i=1; i<cmd.m_vsArgs.size(); i++ )
m_vsBroadcastOnExport.push_back( cmd.m_vsArgs[i] );
}
else
{
+1 -12
View File
@@ -75,18 +75,7 @@ struct OptionRowDefinition
return m_vEnabledForPlayers.find(pn) != m_vEnabledForPlayers.end();
}
OptionRowDefinition(): m_sName(""), m_sExplanationName(""),
m_bOneChoiceForAllPlayers(false), m_selectType(SELECT_ONE),
m_layoutType(LAYOUT_SHOW_ALL_IN_ROW), m_iDefault(-1),
m_bExportOnChange(false), m_bAllowThemeItems(true),
m_bAllowThemeTitle(true), m_bAllowExplanation(true),
m_bShowChoicesListOnSelect(false)
{
m_vsChoices.clear();
m_vEnabledForPlayers.clear();
FOREACH_PlayerNumber( pn )
m_vEnabledForPlayers.insert( pn );
}
OptionRowDefinition() { Init(); }
void Init()
{
m_sName = "";
+4 -4
View File
@@ -53,12 +53,12 @@ void OptionsCursor::Load( const RString &sMetricsGroup, bool bLoadCanGos )
}
#undef LOAD_SPR
m_iOriginalLeftX = static_cast<int>(m_sprLeft->GetX());
m_iOriginalRightX = static_cast<int>(m_sprRight->GetX());
m_iOriginalLeftX = m_sprLeft->GetX();
m_iOriginalRightX = m_sprRight->GetX();
if( bLoadCanGos )
{
m_iOriginalCanGoLeftX = static_cast<int>(m_sprCanGoLeft->GetX());
m_iOriginalCanGoRightX = static_cast<int>(m_sprCanGoRight->GetX());
m_iOriginalCanGoLeftX = m_sprCanGoLeft->GetX();
m_iOriginalCanGoRightX = m_sprCanGoRight->GetX();
}
SetCanGo( false, false );
+14 -14
View File
@@ -138,17 +138,17 @@ void OptionListRow::SetUnderlines( const vector<bool> &aSelections, const Option
if( pTarget->m_Def.m_selectType == SELECT_ONE )
{
int iSelection = m_pOptions->GetOneSelection(sDest);
const OptionRowHandler *lHandler = m_pOptions->m_Rows.find(sDest)->second;
int iDefault = lHandler->GetDefaultOption();
const OptionRowHandler *pHandler = m_pOptions->m_Rows.find(sDest)->second;
int iDefault = pHandler->GetDefaultOption();
if( iDefault != -1 && iSelection != iDefault )
bSelected |= true;
}
else if( pTarget->m_Def.m_selectType == SELECT_MULTIPLE )
{
const vector<bool> &bTargetSelections = m_pOptions->m_bSelections.find(sDest)->second;
for( unsigned j=0; j<bTargetSelections.size(); j++ )
for( unsigned i=0; i<bTargetSelections.size(); i++ )
{
if( bTargetSelections[j] )
if( bTargetSelections[i] )
bSelected = true;
}
}
@@ -400,10 +400,10 @@ void OptionsList::Input( const InputEventPlus &input )
wrap( iSelection, bTargetSelections.size() );
SelectItem( sDest, iSelection );
Message lMsg("OptionsListQuickChange");
lMsg.SetParam( "Player", pn );
lMsg.SetParam( "Direction", iDir );
MESSAGEMAN->Broadcast( lMsg );
Message msg("OptionsListQuickChange");
msg.SetParam( "Player", pn );
msg.SetParam( "Direction", iDir );
MESSAGEMAN->Broadcast( msg );
}
}
return;
@@ -426,9 +426,9 @@ void OptionsList::Input( const InputEventPlus &input )
wrap( m_iMenuStackSelection, pHandler->m_Def.m_vsChoices.size()+1 ); // +1 for exit row
PositionCursor();
Message lMsg("OptionsListLeft");
lMsg.SetParam( "Player", input.pn );
MESSAGEMAN->Broadcast( lMsg );
Message msg("OptionsListLeft");
msg.SetParam( "Player", input.pn );
MESSAGEMAN->Broadcast( msg );
return;
}
else if( input.MenuI == GAME_BUTTON_RIGHT )
@@ -447,9 +447,9 @@ void OptionsList::Input( const InputEventPlus &input )
wrap( m_iMenuStackSelection, pHandler->m_Def.m_vsChoices.size()+1 ); // +1 for exit row
PositionCursor();
Message lMsg("OptionsListRight");
lMsg.SetParam( "Player", input.pn );
MESSAGEMAN->Broadcast( lMsg );
Message msg("OptionsListRight");
msg.SetParam( "Player", input.pn );
MESSAGEMAN->Broadcast( msg );
return;
}
else if( input.MenuI == GAME_BUTTON_START )
+7 -14
View File
@@ -175,15 +175,8 @@ ThemeMetric<bool> REQUIRE_STEP_ON_MINES ( "Player", "RequireStepOnMines" );
* For those wishing to make a theme very accurate to In The Groove 2, set this to false. */
ThemeMetric<bool> ROLL_BODY_INCREMENTS_COMBO ( "Player", "RollBodyIncrementsCombo" );
ThemeMetric<bool> CHECKPOINTS_TAPS_SEPARATE_JUDGMENT ( "Player", "CheckpointsTapsSeparateJudgment" );
/**
* @brief Do we score missed holds and rolls with HoldNoteScores?
*
* If set to true, missed holds and rolls are given LetGo judgments.
* If set to false, missed holds and rolls are given no judgment on the hold side of things. */
ThemeMetric<bool> SCORE_MISSED_HOLDS_AND_ROLLS ( "Player", "ScoreMissedHoldsAndRolls" );
/** @brief How much of the song/course must have gone by before a Player's combo is colored? */
ThemeMetric<bool> SCORE_MISSED_HOLDS_AND_ROLLS ( "Player", "ScoreMissedHoldsAndRolls" ); // sm-ssc addition
ThemeMetric<float> PERCENT_UNTIL_COLOR_COMBO ( "Player", "PercentUntilColorCombo" );
/** @brief How much combo must be earned before the announcer says "Combo Stopped"? */
ThemeMetric<int> COMBO_STOPPED_AT ( "Player", "ComboStoppedAt" );
ThemeMetric<float> ATTACK_RUN_TIME_RANDOM ( "Player", "AttackRunTimeRandom" );
ThemeMetric<float> ATTACK_RUN_TIME_MINE ( "Player", "AttackRunTimeMine" );
@@ -2817,16 +2810,16 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now )
int iNumHoldsMissedThisRow = 0;
// start at r-1 so that we consider holds whose end rows are equal to the checkpoint row
NoteData::all_tracks_iterator nIter = m_NoteData.GetTapNoteRangeAllTracks( r-1, r, true );
for( ; !nIter.IsAtEnd(); ++nIter )
NoteData::all_tracks_iterator iter = m_NoteData.GetTapNoteRangeAllTracks( r-1, r, true );
for( ; !iter.IsAtEnd(); ++iter )
{
TapNote &tn = *nIter;
TapNote &tn = *iter;
if( tn.type != TapNote::hold_head )
continue;
int iStartRow = nIter.Row();
int iStartRow = iter.Row();
int iEndRow = iStartRow + tn.iDuration;
int iTrack = nIter.Track();
int iTrack = iter.Track();
// "the first row after the hold head that lands on a beat"
int iFirstCheckpointOfHold = ((iStartRow+iCheckpointFrequencyRows)/iCheckpointFrequencyRows) * iCheckpointFrequencyRows;
@@ -3200,7 +3193,7 @@ void Player::SetCombo( int iCombo, int iMisses )
if( GAMESTATE->IsCourseMode() )
{
int iSongIndexStartColoring = GAMESTATE->m_pCurCourse->GetEstimatedNumStages();
iSongIndexStartColoring = static_cast<int>(floor(iSongIndexStartColoring*PERCENT_UNTIL_COLOR_COMBO));
iSongIndexStartColoring = floor(iSongIndexStartColoring*PERCENT_UNTIL_COLOR_COMBO);
bPastBeginning = GAMESTATE->GetCourseSongIndex() >= iSongIndexStartColoring;
}
else
+2
View File
@@ -12,6 +12,8 @@
#include "CommonMetrics.h"
#include <float.h>
#define ONE( arr ) { for( unsigned Z = 0; Z < ARRAYLEN(arr); ++Z ) arr[Z]=1.0f; }
ThemeMetric<float> RANDOM_SPEED_CHANCE ( "PlayerOptions", "RandomSpeedChance" );
ThemeMetric<float> RANDOM_REVERSE_CHANCE ( "PlayerOptions", "RandomReverseChance" );
ThemeMetric<float> RANDOM_DARK_CHANCE ( "PlayerOptions", "RandomDarkChance" );
+1 -30
View File
@@ -7,42 +7,13 @@ class Steps;
class Trail;
struct lua_State;
#define ONE( arr ) { for( unsigned Z = 0; Z < ARRAYLEN(arr); ++Z ) arr[Z]=1.0f; }
#include "GameConstantsAndTypes.h"
#include "PlayerNumber.h"
/** @brief Per-player options that are not saved between sessions. */
class PlayerOptions
{
public:
/**
* @brief Set up the PlayerOptions with some reasonable defaults.
*
* This code was taken from Init() to use proper initialization. */
PlayerOptions(): m_bSetScrollSpeed(false),
m_fTimeSpacing(0), m_SpeedfTimeSpacing(1.0f),
m_fScrollSpeed(1.0f), m_SpeedfScrollSpeed(1.0f),
m_fScrollBPM(200), m_SpeedfScrollBPM(1.0f),
m_fDark(0), m_SpeedfDark(1.0f),
m_fBlind(0), m_SpeedfBlind(1.0f),
m_fCover(0), m_SpeedfCover(1.0f),
m_fRandAttack(0), m_SpeedfRandAttack(1.0f),
m_fSongAttack(0), m_SpeedfSongAttack(1.0f),
m_fPlayerAutoPlay(0), m_SpeedfPlayerAutoPlay(1.0f),
m_bSetTiltOrSkew(false),
m_fPerspectiveTilt(0), m_SpeedfPerspectiveTilt(1.0f),
m_fSkew(0), m_SpeedfSkew(1.0f),
m_fPassmark(0), m_SpeedfPassmark(1.0f),
m_fRandomSpeed(0), m_SpeedfRandomSpeed(1.0f),
m_bMuteOnError(false), m_FailType(FAIL_IMMEDIATE),
m_ScoreDisplay(SCORING_ADD), m_sNoteSkin("")
{
ZERO( m_fAccels ); ONE( m_SpeedfAccels );
ZERO( m_fEffects ); ONE( m_SpeedfEffects );
ZERO( m_fAppearances ); ONE( m_SpeedfAppearances );
ZERO( m_fScrolls ); ONE( m_SpeedfScrolls );
ZERO( m_bTurns ); ZERO( m_bTransforms );
};
PlayerOptions() { Init(); };
void Init();
void Approach( const PlayerOptions& other, float fDeltaSeconds );
RString GetString( bool bForceNoteSkin = false ) const;
+7 -7
View File
@@ -363,8 +363,8 @@ float Profile::GetSongsActual( StepsType st, Difficulty dc ) const
FOREACHM_CONST( StepsID, HighScoresForASteps, hsfas.m_StepsHighScores, j )
{
const StepsID &sid = j->first;
Steps* pSteps = sid.ToSteps( pSong, true );
const StepsID &id = j->first;
Steps* pSteps = id.ToSteps( pSong, true );
CHECKPOINT_M( ssprintf("Profile::GetSongsActual: song %p, steps %p", pSong, pSteps) );
// If the Steps isn't loaded on the current machine, then we can't
@@ -375,7 +375,7 @@ float Profile::GetSongsActual( StepsType st, Difficulty dc ) const
if( pSteps->m_StepsType != st )
continue;
CHECKPOINT_M( ssprintf("Profile::GetSongsActual: n %s = %p", sid.ToString().c_str(), pSteps) );
CHECKPOINT_M( ssprintf("Profile::GetSongsActual: n %s = %p", id.ToString().c_str(), pSteps) );
if( pSteps->GetDifficulty() != dc )
continue; // skip
CHECKPOINT;
@@ -1303,13 +1303,13 @@ void Profile::LoadGeneralDataFromNode( const XNode* pNode )
if( style->GetName() != "Style" )
continue;
StyleID sID;
sID.LoadFromNode( style );
StyleID s;
s.LoadFromNode( style );
if( !sID.IsValid() )
if( !s.IsValid() )
WARN_AND_CONTINUE;
style->GetTextValue( m_iNumSongsPlayedByStyle[sID] );
style->GetTextValue( m_iNumSongsPlayedByStyle[s] );
}
}
}
+3 -3
View File
@@ -489,10 +489,10 @@ bool ProfileManager::DeleteLocalProfile( RString sProfileID )
g_vLocalProfile.erase( i );
// Delete all references to this profileID
FOREACH_CONST( Preference<RString>*, m_sDefaultLocalProfileID.m_v, j )
FOREACH_CONST( Preference<RString>*, m_sDefaultLocalProfileID.m_v, i )
{
if( (*j)->Get() == sProfileID )
(*j)->Set( "" );
if( (*i)->Get() == sProfileID )
(*i)->Set( "" );
}
return true;
}
+1 -1
View File
@@ -760,7 +760,7 @@ bool RageDisplay::SaveScreenshot( RString sPath, GraphicsFileFormat format )
int iHeight = 480;
// This used to be lrintf. However, lrintf causes odd resolutions like
// 639x480 (4:3) and 853x480 (16:9). ceilf gives correct values. -aj
int iWidth = static_cast<int>(ceilf( iHeight * GetActualVideoModeParams().fDisplayAspectRatio ));
int iWidth = ceilf( iHeight * GetActualVideoModeParams().fDisplayAspectRatio );
timer.Touch();
RageSurfaceUtils::Zoom( surface, iWidth, iHeight );
// LOG->Trace( "%ix%i -> %ix%i (%.3f) in %f seconds", surface->w, surface->h, iWidth, iHeight, GetActualVideoModeParams().fDisplayAspectRatio, timer.GetDeltaTime() );
+21 -25
View File
@@ -71,7 +71,6 @@ enum PixelFormat
};
const RString& PixelFormatToString( PixelFormat i );
/** @brief The parameters used for the present Video Mode. */
class VideoModeParams
{
public:
@@ -92,27 +91,24 @@ public:
RString sIconFile_,
bool PAL_,
float fDisplayAspectRatio_
):
windowed(windowed_),
width(width_),
height(height_),
bpp(bpp_),
rate(rate_),
vsync(vsync_),
interlaced(interlaced_),
bSmoothLines(bSmoothLines_),
bTrilinearFiltering(bTrilinearFiltering_),
bAnisotropicFiltering(bAnisotropicFiltering_),
sWindowTitle(sWindowTitle_),
sIconFile(sIconFile_),
PAL(PAL_),
fDisplayAspectRatio(fDisplayAspectRatio_) {}
VideoModeParams(): windowed(false), width(0), height(0),
bpp(0), rate(0), vsync(false), interlaced(false),
bSmoothLines(false), bTrilinearFiltering(false),
bAnisotropicFiltering(false), sWindowTitle(RString()),
sIconFile(RString()), PAL(false), fDisplayAspectRatio(0.0) {}
)
{
windowed = windowed_;
width = width_;
height = height_;
bpp = bpp_;
rate = rate_;
vsync = vsync_;
interlaced = interlaced_;
bSmoothLines = bSmoothLines_;
bTrilinearFiltering = bTrilinearFiltering_;
bAnisotropicFiltering = bAnisotropicFiltering_;
sWindowTitle = sWindowTitle_;
sIconFile = sIconFile_;
PAL = PAL_;
fDisplayAspectRatio = fDisplayAspectRatio_;
}
VideoModeParams() {}
bool windowed;
int width;
@@ -120,14 +116,14 @@ public:
int bpp;
int rate;
bool vsync;
bool interlaced;
bool bSmoothLines;
bool bTrilinearFiltering;
bool bAnisotropicFiltering;
RString sWindowTitle;
RString sIconFile;
bool interlaced;
bool PAL;
float fDisplayAspectRatio;
RString sWindowTitle;
RString sIconFile;
};
struct RenderTargetParam
+2 -8
View File
@@ -6,11 +6,8 @@
#include "RageFileBasic.h"
struct lua_State;
/**
* @brief High-level file access.
*
* This is the high-level interface, which interfaces with RageFileObj
* implementations and RageFileManager. */
/* This is the high-level interface, which interfaces with RageFileObj implementations
* and RageFileManager. */
class RageFile: public RageFileBasic
{
public:
@@ -84,9 +81,6 @@ private:
RString m_Path;
RString m_sError;
int m_Mode;
// Swallow up warnings. If they must be used, define them.
RageFile& operator=(const RageFile& rhs);
};
/** @brief Convenience wrappers for reading binary files. */
-3
View File
@@ -152,9 +152,6 @@ private:
* file, and no seeking is performed. */
bool m_bCRC32Enabled;
uint32_t m_iCRC32;
// Swallow up warnings. If they must be used, define them.
RageFileObj& operator=(const RageFileObj& rhs);
};
#endif
+3 -3
View File
@@ -245,14 +245,14 @@ int RageFileObjDeflate::WriteInternal( const void *pBuffer, size_t iBytes )
if( m_pDeflate->avail_out < sizeof(buf) )
{
int lBytes = sizeof(buf)-m_pDeflate->avail_out;
int iRet = m_pFile->Write( buf, lBytes );
int iBytes = sizeof(buf)-m_pDeflate->avail_out;
int iRet = m_pFile->Write( buf, iBytes );
if( iRet == -1 )
{
SetError( m_pFile->GetError() );
return -1;
}
if( iRet < lBytes )
if( iRet < iBytes )
{
SetError( "Partial write" );
return -1;
+2 -2
View File
@@ -377,8 +377,8 @@ void RageFileManager::GetDirListing( const RString &sPath_, vector<RString> &Add
for( unsigned j = OldStart; j < AddTo.size(); ++j )
{
/* Skip the trailing slash on the mountpoint; there's already a slash there. */
RString &lPath = AddTo[j];
lPath.insert( 0, pLoadedDriver->m_sMountPoint, pLoadedDriver->m_sMountPoint.size()-1 );
RString &sPath = AddTo[j];
sPath.insert( 0, pLoadedDriver->m_sMountPoint, pLoadedDriver->m_sMountPoint.size()-1 );
}
}
}
+14 -11
View File
@@ -60,9 +60,12 @@ inline bool IsMouse( InputDevice id ) { return id == DEVICE_MOUSE; }
struct InputDeviceInfo
{
InputDeviceInfo( InputDevice id_, RString sDesc_ ):
id(id_), sDesc(sDesc_) {}
InputDeviceInfo( InputDevice id_, RString sDesc_ )
{
id = id_;
sDesc = sDesc_;
}
InputDevice id;
RString sDesc;
@@ -314,22 +317,22 @@ public:
* (0..1). This should be 0 for analog axes within the dead zone. */
float level;
/* Whether this button is pressed. This is level with a threshold and
* debouncing applied. */
bool bDown;
// Mouse coordinates
unsigned x;
unsigned y;
/* Whether this button is pressed. This is level with a threshold and
* debouncing applied. */
bool bDown;
RageTimer ts;
DeviceInput(): device(InputDevice_Invalid), button(DeviceButton_Invalid), level(0), x(0), y(0), bDown(false), ts(RageZeroTimer) { }
DeviceInput( InputDevice d, DeviceButton b, float l=0 ): device(d), button(b), level(l), x(0), y(0), bDown(l > 0.5f), ts(RageZeroTimer) { }
DeviceInput(): device(InputDevice_Invalid), button(DeviceButton_Invalid), level(0), bDown(false), ts(RageZeroTimer) { }
DeviceInput( InputDevice d, DeviceButton b, float l=0 ): device(d), button(b), level(l), bDown(l > 0.5f), ts(RageZeroTimer) { }
DeviceInput( InputDevice d, DeviceButton b, float l, const RageTimer &t ):
device(d), button(b), level(l), x(0), y(0), bDown(level > 0.5f), ts(t) { }
device(d), button(b), level(l), bDown(level > 0.5f), ts(t) { }
DeviceInput( InputDevice d, DeviceButton b, const RageTimer &t, unsigned xPos=0, unsigned yPos=0 ):
device(d), button(b), level(0), x(xPos), y(yPos), bDown(false), ts(t) { }
device(d), button(b), x(xPos), y(yPos), bDown(false), ts(t) { }
bool operator==( const DeviceInput &other ) const
{
+7 -2
View File
@@ -78,14 +78,19 @@ enum
WRITE_LOUD = 0x04
};
RageLog::RageLog(): m_bLogToDisk(false), m_bInfoToDisk(false),
m_bUserLogToDisk(false), m_bFlush(false), m_bShowLogOutput(false)
RageLog::RageLog()
{
g_fileLog = new RageFile;
g_fileInfo = new RageFile;
g_fileUserLog = new RageFile;
g_Mutex = new RageMutex( "Log" );
m_bLogToDisk = false;
m_bInfoToDisk = false;
m_bUserLogToDisk = false;
m_bFlush = false;
m_bShowLogOutput = false;
}
RageLog::~RageLog()
+2 -2
View File
@@ -575,8 +575,8 @@ float RageFastSin( float x )
bInited = true;
for( unsigned i=0; i<ARRAYLEN(table); i++ )
{
float z = SCALE(i,0,ARRAYLEN(table),0.0f,PI);
table[i] = sinf(z);
float x = SCALE(i,0,ARRAYLEN(table),0.0f,PI);
table[i] = sinf(x);
}
}
+25 -9
View File
@@ -39,20 +39,36 @@
#define samplerate() m_pSource->GetSampleRate()
RageSoundParams::RageSoundParams():
m_StartSecond(0), m_LengthSeconds(-1), m_fFadeInSeconds(0),
m_fFadeOutSeconds(0), m_Volume(1.0f), m_fAttractVolume(1.0f),
m_fPitch(1.0f), m_fSpeed(1.0f), m_StartTime( RageZeroTimer ),
StopMode(M_AUTO), m_bIsCriticalSound(false) {}
m_StartTime( RageZeroTimer )
{
m_StartSecond = 0;
m_LengthSeconds = -1;
m_fFadeInSeconds = 0;
m_fFadeOutSeconds = 0;
m_Volume = 1.0f;
m_fAttractVolume = 1.0f;
m_fPitch = 1.0f;
m_fSpeed = 1.0f;
StopMode = M_AUTO;
m_bIsCriticalSound = false;
}
RageSoundLoadParams::RageSoundLoadParams():
m_bSupportRateChanging(false), m_bSupportPan(false) {}
RageSoundLoadParams::RageSoundLoadParams()
{
m_bSupportRateChanging = false;
m_bSupportPan = false;
}
RageSound::RageSound():
m_Mutex( "RageSound" ), m_pSource(NULL), m_iStreamFrame(0),
m_iStoppedSourceFrame(0), m_bPlaying(false),
m_bDeleteWhenFinished(false)
m_Mutex( "RageSound" )
{
ASSERT( SOUNDMAN );
m_pSource = NULL;
m_iStreamFrame = 0;
m_iStoppedSourceFrame = 0;
m_bPlaying = false;
m_bDeleteWhenFinished = false;
}
RageSound::~RageSound()
+11 -10
View File
@@ -22,10 +22,7 @@ public:
virtual RString GetLoadedFilePath() const = 0;
};
/**
* @brief The parameters to play a sound.
*
* These are normally changed before playing begins,
/* These are parameters to play a sound. These are normally changed before playing begins,
* and are constant from then on. */
struct RageSoundParams
{
@@ -53,13 +50,17 @@ struct RageSoundParams
* If zero, or if not supported, the sound will start immediately. */
RageTimer m_StartTime;
/** @brief How does the sound stop itself, if it does? */
/* M_STOP stops the sound at the end.
* M_LOOP restarts.
* M_CONTINUE feeds silence, which is useful to continue timing longer than the actual sound.
* M_AUTO (default) stops, obeying filename hints.
*/
enum StopMode_t {
M_STOP, /**< The sound is stopped at the end. */
M_LOOP, /**< The sound restarts itself. */
M_CONTINUE, /**< Silence is fed at the end to continue timing longer than the sound. */
M_AUTO /**< The default, the sound stops while obeying filename hints. */
} /** @brief How does the sound stop itself, if it does? */ StopMode;
M_STOP,
M_LOOP,
M_CONTINUE,
M_AUTO
} StopMode;
bool m_bIsCriticalSound; // "is a sound that should be played even during attract"
};
+5 -2
View File
@@ -35,8 +35,11 @@ static Preference<RString> g_sSoundDrivers( "SoundDrivers", "" ); // "" == DEFAU
RageSoundManager *SOUNDMAN = NULL;
RageSoundManager::RageSoundManager(): m_pDriver(NULL), m_fMixVolume(1.0f),
m_fVolumeOfNonCriticalSounds(1.0f) {}
RageSoundManager::RageSoundManager()
{
m_fMixVolume = 1.0f;
m_fVolumeOfNonCriticalSounds = 1.0f;
}
static LocalizedString COULDNT_FIND_SOUND_DRIVER( "RageSoundManager", "Couldn't find a sound driver that works" );
void RageSoundManager::Init()
-3
View File
@@ -53,9 +53,6 @@ private:
/* Prefs: */
float m_fMixVolume;
float m_fVolumeOfNonCriticalSounds;
// Swallow up warnings. If they must be used, define them.
RageSoundManager& operator=(const RageSoundManager& rhs);
RageSoundManager(const RageSoundManager& rhs);
};
extern RageSoundManager *SOUNDMAN;
+3
View File
@@ -33,6 +33,7 @@ RageSoundReader_Chain::~RageSoundReader_Chain()
while( !m_apActiveSounds.empty() )
ReleaseSound( m_apActiveSounds.front() );
map<RString, RageSoundReader *>::iterator it;
FOREACH( RageSoundReader *, m_apLoadedSounds, it )
delete *it;
}
@@ -102,6 +103,7 @@ int RageSoundReader_Chain::GetSampleRateInternal() const
if( m_apLoadedSounds.empty() )
return m_iPreferredSampleRate;
map<RString, RageSoundReader *>::const_iterator it;
int iRate = -1;
FOREACH_CONST( RageSoundReader *, m_apLoadedSounds, it )
{
@@ -118,6 +120,7 @@ void RageSoundReader_Chain::Finish()
/* Figure out how many channels we have. All sounds must either have 1 or 2 channels,
* which will be converted as needed, or have the same number of channels. */
m_iChannels = 1;
map<RString, RageSoundReader *>::iterator it;
FOREACH( RageSoundReader *, m_apLoadedSounds, it )
m_iChannels = max( m_iChannels, (*it)->GetNumChannels() );
+1 -1
View File
@@ -426,7 +426,7 @@ int RageSoundReader_MP3::do_mad_frame_decode( bool headers_only )
return -1;
}
ret = fill_buffer();
int ret = fill_buffer();
if( ret <= 0 )
return ret;
bytes_read += ret;
+1
View File
@@ -18,6 +18,7 @@ RageSoundReader_Merge::RageSoundReader_Merge()
RageSoundReader_Merge::~RageSoundReader_Merge()
{
map<RString, RageSoundReader *>::iterator it;
FOREACH( RageSoundReader *, m_aSounds, it )
delete *it;
}
-2
View File
@@ -29,8 +29,6 @@ private:
float m_fPitchRatio;
float m_fLastSetSpeedRatio;
float m_fLastSetPitchRatio;
// Swallow up warnings. If they must be used, define them.
RageSoundReader_PitchChange& operator=(const RageSoundReader_PitchChange& rhs);
};
#endif
+1 -2
View File
@@ -34,8 +34,7 @@ bool RageSoundReader_Preload::PreloadSound( RageSoundReader *&pSound )
}
RageSoundReader_Preload::RageSoundReader_Preload():
m_Buffer( new RString ), m_bBufferIs16Bit(false),
m_iPosition(0), m_iSampleRate(0), m_iChannels(0), m_fRate(0.0f)
m_Buffer( new RString )
{
m_bBufferIs16Bit = g_bSoundPreload16bit.Get();
}
+1 -2
View File
@@ -53,8 +53,7 @@ private:
int iFramesBuffered;
int iPositionOfFirstFrame;
float fRate;
Mapping(): iFramesBuffered(0), iPositionOfFirstFrame(0),
fRate(1.0f) {}
Mapping() { iFramesBuffered = iPositionOfFirstFrame = 0; fRate = 1.0f; }
};
list<Mapping> m_StreamPosition;
+1 -1
View File
@@ -7,7 +7,7 @@
struct RageSurfaceColor
{
uint8_t r, g, b, a;
RageSurfaceColor(): r(0), g(0), b(0), a(0) { }
RageSurfaceColor() { }
RageSurfaceColor( uint8_t r_, uint8_t g_, uint8_t b_, uint8_t a_ ):
r(r_), g(g_), b(b_), a(a_) { }
+2 -2
View File
@@ -585,8 +585,8 @@ static bool blit_rgba_to_rgba( const RageSurface *src_surf, const RageSurface *d
unsigned int opixel = 0;
for( int c = 0; c < 4; ++c )
{
int lSrc = (pixel & src_masks[c]) >> src_shifts[c];
opixel |= lookup[c][lSrc] << dst_shifts[c];
int src = (pixel & src_masks[c]) >> src_shifts[c];
opixel |= lookup[c][src] << dst_shifts[c];
}
// Store it.
+6 -6
View File
@@ -454,7 +454,7 @@ static acolorhist_item *mediancut( acolorhist_item *achv, int colors, int sum, i
#ifdef REP_AVERAGE_PIXELS
int indx = bv[bi].ind;
int clrs = bv[bi].colors;
long r = 0, g = 0, b = 0, a = 0, lSum = 0;
long r = 0, g = 0, b = 0, a = 0, sum = 0;
for ( int i = 0; i < clrs; ++i )
{
@@ -462,15 +462,15 @@ static acolorhist_item *mediancut( acolorhist_item *achv, int colors, int sum, i
g += PAM_GETG( achv[indx + i].acolor ) * achv[indx + i].value;
b += PAM_GETB( achv[indx + i].acolor ) * achv[indx + i].value;
a += PAM_GETA( achv[indx + i].acolor ) * achv[indx + i].value;
lSum += achv[indx + i].value;
sum += achv[indx + i].value;
}
r = r / lSum;
r = r / sum;
r = min( r, (long) maxval );
g = g / lSum;
g = g / sum;
g = min( g, (long) maxval );
b = b / lSum;
b = b / sum;
b = min( b, (long) maxval );
a = a / lSum;
a = a / sum;
a = min( a, (long) maxval );
PAM_ASSIGN( acolormap[bi].acolor, (uint8_t)r, (uint8_t)g, (uint8_t)b, (uint8_t)a );
#endif // REP_AVERAGE_PIXELS
+10 -5
View File
@@ -7,11 +7,16 @@
RageTexture::RageTexture( RageTextureID name ):
m_ID(name), m_iRefCount(1), m_bWasUsed(false),
m_iSourceWidth(0), m_iSourceHeight(0),
m_iTextureWidth(0), m_iTextureHeight(0),
m_iImageWidth(0), m_iImageHeight(0),
m_iFramesWide(1), m_iFramesHigh(1) {}
m_ID(name)
{
m_iRefCount = 1;
m_bWasUsed = false;
m_iSourceWidth = m_iSourceHeight = 0;
m_iTextureWidth = m_iTextureHeight = 0;
m_iImageWidth = m_iImageHeight = 0;
m_iFramesWide = m_iFramesHigh = 1;
}
RageTexture::~RageTexture()
+2 -9
View File
@@ -59,15 +59,8 @@ struct RageTextureID
void Init();
RageTextureID(): filename(RString()), iMaxSize(0), bMipMaps(false),
iAlphaBits(0), iGrayscaleBits(0), iColorDepth(0),
bDither(false), bStretch(false), bHotPinkColorKey(false),
AdditionalTextureHints(RString()), Policy(TEX_DEFAULT) { Init(); }
RageTextureID( const RString &fn ): filename(RString()), iMaxSize(0),
bMipMaps(false), iAlphaBits(0), iGrayscaleBits(0),
iColorDepth(0), bDither(false), bStretch(false),
bHotPinkColorKey(false), AdditionalTextureHints(RString()),
Policy(TEX_DEFAULT) { Init(); SetFilename(fn); }
RageTextureID() { Init(); }
RageTextureID( const RString &fn ) { Init(); SetFilename(fn); }
void SetFilename( const RString &fn );
};
+7 -4
View File
@@ -36,9 +36,11 @@ namespace
map<RageTextureID, RageTexture*> m_mapPathToTexture;
};
RageTextureManager::RageTextureManager():
m_iNoWarnAboutOddDimensions(0),
m_TexturePolicy(RageTextureID::TEX_DEFAULT) {}
RageTextureManager::RageTextureManager()
{
m_iNoWarnAboutOddDimensions = 0;
m_TexturePolicy = RageTextureID::TEX_DEFAULT;
}
RageTextureManager::~RageTextureManager()
{
@@ -104,8 +106,9 @@ class RageTexture_Default: public RageTexture
{
public:
RageTexture_Default():
RageTexture( RageTextureID() ), m_uTexHandle(0)
RageTexture( RageTextureID() )
{
m_uTexHandle = 0;
m_iSourceWidth = m_iSourceHeight = 1;
m_iTextureWidth = m_iTextureHeight = 1;
m_iImageWidth = m_iImageHeight = 1;
+18 -11
View File
@@ -14,23 +14,30 @@ struct RageTextureManagerPrefs
bool m_bHighResolutionTextures;
bool m_bMipMaps;
RageTextureManagerPrefs(): m_iTextureColorDepth(16),
m_iMovieColorDepth(16), m_bDelayedDelete(false),
m_iMaxTextureResolution(1024),
m_bHighResolutionTextures(true), m_bMipMaps(false) {}
RageTextureManagerPrefs()
{
m_bDelayedDelete = false;
m_iMovieColorDepth = 16;
m_iTextureColorDepth = 16;
m_iMaxTextureResolution = 1024;
m_bHighResolutionTextures = true;
m_bMipMaps = false;
}
RageTextureManagerPrefs(
int iTextureColorDepth,
int iMovieColorDepth,
bool bDelayedDelete,
int iMaxTextureResolution,
bool bHighResolutionTextures,
bool bMipMaps ):
m_iTextureColorDepth(iTextureColorDepth),
m_iMovieColorDepth(iMovieColorDepth),
m_bDelayedDelete(bDelayedDelete),
m_iMaxTextureResolution(iMaxTextureResolution),
m_bHighResolutionTextures(bHighResolutionTextures),
m_bMipMaps(bMipMaps) {}
bool bMipMaps )
{
m_bDelayedDelete = bDelayedDelete;
m_iMovieColorDepth = iMovieColorDepth;
m_iTextureColorDepth = iTextureColorDepth;
m_iMaxTextureResolution = iMaxTextureResolution;
m_bHighResolutionTextures = bHighResolutionTextures;
m_bMipMaps = bMipMaps;
}
bool operator!=( const RageTextureManagerPrefs& rhs ) const
{
+26 -12
View File
@@ -65,8 +65,7 @@ struct ThreadSlot
int m_iCurCheckpoint, m_iNumCheckpoints;
const char *GetFormattedCheckpoint( int lineno );
ThreadSlot(): m_bUsed(false), m_iID(GetInvalidThreadId()),
m_pImpl(NULL), m_iCurCheckpoint(0), m_iNumCheckpoints(0) {}
ThreadSlot() { Init(); }
void Init()
{
m_iID = GetInvalidThreadId();
@@ -207,11 +206,18 @@ static ThreadSlot *GetUnknownThreadSlot()
return g_pUnknownThreadSlot;
}
RageThread::RageThread(): m_pSlot(NULL), m_sName("unnamed") {}
RageThread::RageThread()
{
m_pSlot = NULL;
m_sName = "unnamed";
}
/* Copying a thread does not start the copy. */
RageThread::RageThread( const RageThread &cpy ):
m_pSlot(NULL), m_sName(cpy.m_sName) {}
RageThread::RageThread( const RageThread &cpy )
{
/* Copying a thread does not start the copy. */
m_pSlot = NULL;
m_sName = cpy.m_sName;
}
RageThread::~RageThread()
{
@@ -514,9 +520,12 @@ static set<int> *g_FreeMutexIDs = NULL;
#endif
RageMutex::RageMutex( const RString &name ):
m_sName( name ), m_pMutex( MakeMutex (this ) ),
m_LockedBy(GetInvalidThreadId()), m_LockCnt(0)
m_sName( name )
{
m_pMutex = MakeMutex( this );
m_LockedBy = GetInvalidThreadId();
m_LockCnt = 0;
/* if( g_FreeMutexIDs == NULL )
{
@@ -650,8 +659,7 @@ LockMutex::LockMutex( RageMutex &pMutex, const char *file_, int line_ ):
mutex( pMutex ),
file( file_ ),
line( line_ ),
locked_at( RageTimer::GetTimeSinceStart() ),
locked(false) // ensure it gets locked inside.
locked_at( RageTimer::GetTimeSinceStart() )
{
mutex.Lock();
locked = true;
@@ -679,7 +687,10 @@ void LockMutex::Unlock()
}
RageEvent::RageEvent( RString name ):
RageMutex( name ), m_pEvent(MakeEvent(m_pMutex)) {}
RageMutex( name )
{
m_pEvent = MakeEvent( m_pMutex );
}
RageEvent::~RageEvent()
{
@@ -721,7 +732,10 @@ bool RageEvent::WaitTimeoutSupported() const
}
RageSemaphore::RageSemaphore( RString sName, int iInitialValue ):
m_sName( sName ), m_pSema(MakeSemaphore( iInitialValue )) {}
m_sName( sName )
{
m_pSema = MakeSemaphore( iInitialValue );
}
RageSemaphore::~RageSemaphore()
{
-20
View File
@@ -46,9 +46,6 @@ private:
static bool s_bSystemSupportsTLS;
static bool s_bIsShowingDialog;
// Swallow up warnings. If they must be used, define them.
RageThread& operator=(const RageThread& rhs);
};
/**
@@ -64,9 +61,6 @@ public:
private:
ThreadSlot *m_pSlot;
// Swallow up warnings. If they must be used, define them.
RageThreadRegister& operator=(const RageThreadRegister& rhs);
RageThreadRegister(const RageThreadRegister& rhs);
};
namespace Checkpoints
@@ -108,10 +102,6 @@ protected:
int m_LockCnt;
void MarkLockedMutex();
private:
// Swallow up warnings. If they must be used, define them.
RageMutex& operator=(const RageMutex& rhs);
RageMutex(const RageMutex& rhs);
};
/**
@@ -138,9 +128,6 @@ public:
*
* This can only be called once. */
void Unlock();
private:
// Swallow up warnings. If they must be used, define them.
LockMutex& operator=(const LockMutex& rhs);
};
#define LockMut(m) LockMutex UNIQUE_NAME(LocalLock) (m, __FILE__, __LINE__)
@@ -162,9 +149,6 @@ public:
void Signal();
void Broadcast();
bool WaitTimeoutSupported() const;
// Swallow up warnings. If they must be used, define them.
RageEvent& operator=(const RageEvent& rhs);
RageEvent(const RageEvent& rhs);
private:
EventImpl *m_pEvent;
@@ -186,10 +170,6 @@ public:
private:
SemaImpl *m_pSema;
RString m_sName;
// Swallow up warnings. If they must be used, define them.
RageSemaphore& operator=(const RageSemaphore& rhs);
RageSemaphore(const RageSemaphore& rhs);
};
#endif
+1 -1
View File
@@ -6,7 +6,7 @@
class RageTimer
{
public:
RageTimer(): m_secs(0), m_us(0) { Touch(); }
RageTimer() { Touch(); }
RageTimer( int secs, int us ): m_secs(secs), m_us(us) { }
/* Time ago this RageTimer represents. */
+16 -17
View File
@@ -100,9 +100,9 @@ struct lua_State;
struct RageVector2
{
public:
RageVector2(): x(0), y(0) {}
RageVector2( const float * f ): x(f[0]), y(f[1]) {}
RageVector2( float x1, float y1 ): x(x1), y(y1) {}
RageVector2() {}
RageVector2( const float * f ) { x=f[0]; y=f[1]; }
RageVector2( float x1, float y1 ) { x=x1; y=y1; }
// casting
operator float* () { return &x; };
@@ -129,9 +129,9 @@ public:
struct RageVector3
{
public:
RageVector3(): x(0), y(0), z(0) {}
RageVector3( const float * f ): x(f[0]), y(f[1]), z(f[2]) {}
RageVector3( float x1, float y1, float z1 ): x(x1), y(y1), z(z1) {}
RageVector3() {}
RageVector3( const float * f ) { x=f[0]; y=f[1]; z=f[2]; }
RageVector3( float x1, float y1, float z1 ) { x=x1; y=y1; z=z1; }
// casting
operator float* () { return &x; };
@@ -158,9 +158,9 @@ public:
struct RageVector4
{
public:
RageVector4(): x(0), y(0), z(0), w(0) {}
RageVector4( const float * f ): x(f[0]), y(f[1]), z(f[2]), w(f[3]) {}
RageVector4( float x1, float y1, float z1, float w1 ): x(x1), y(y1), z(z1), w(w1) {}
RageVector4() {}
RageVector4( const float * f ) { x=f[0]; y=f[1]; z=f[2]; w=f[3]; }
RageVector4( float x1, float y1, float z1, float w1 ) { x=x1; y=y1; z=z1; w=w1; }
// casting
operator float* () { return &x; };
@@ -186,9 +186,9 @@ public:
struct RageColor
{
public:
RageColor(): r(0), g(0), b(0), a(0) {}
explicit RageColor( const float * f ): r(f[0]), g(f[1]), b(f[2]), a(f[3]) {}
RageColor( float r1, float g1, float b1, float a1 ): r(r1), g(g1), b(b1), a(a1) {}
RageColor() : r(0), g(0), b(0), a(0) {}
explicit RageColor( const float * f ) { r=f[0]; g=f[1]; b=f[2]; a=f[3]; }
RageColor( float r1, float g1, float b1, float a1 ) { r=r1; g=g1; b=b1; a=a1; }
// casting
operator float* () { return &r; };
@@ -290,8 +290,8 @@ class RageVColor
public:
uint8_t b,g,r,a; // specific ordering required by Direct3D
RageVColor(): b(0), g(0), r(0), a(0) { }
RageVColor(const RageColor &rc): b(0), g(0), r(0), a(0) { *this = rc; }
RageVColor() { }
RageVColor(const RageColor &rc) { *this = rc; }
RageVColor &operator= (const RageColor &rc)
{
r = FTOC(rc.r); g = FTOC(rc.g); b = FTOC(rc.b); a = FTOC(rc.a);
@@ -305,8 +305,8 @@ namespace StepMania
class Rect
{
public:
Rect(): left(0), top(0), right(0), bottom(0) {}
Rect(T l, T t, T r, T b): left(l), top(t), right(r), bottom(b) {}
Rect() {};
Rect(T l, T t, T r, T b) { left = l, top = t, right = r, bottom = b; };
T GetWidth() const { return right-left; };
T GetHeight() const { return bottom-top; };
@@ -349,7 +349,6 @@ struct RageModelVertex // doesn't have color. Relies on material color
p(0,0,0),
n(0,0,0),
t(0,0),
bone(0),
TextureMatrixScale(1,1)
{ }
RageVector3 p; // position
+5 -3
View File
@@ -17,7 +17,7 @@
RandomGen g_RandomNumberGenerator;
MersenneTwister::MersenneTwister( int iSeed ) : m_iNext(0)
MersenneTwister::MersenneTwister( int iSeed )
{
Reset( iSeed );
}
@@ -1315,13 +1315,15 @@ void Regex::Release()
m_sPattern = RString();
}
Regex::Regex( const RString &sStr ): m_pReg(NULL), m_iBackrefs(0), m_sPattern(RString())
Regex::Regex( const RString &sStr )
{
m_pReg = NULL;
Set( sStr );
}
Regex::Regex( const Regex &rhs ): m_pReg(NULL), m_iBackrefs(0), m_sPattern(RString())
Regex::Regex( const Regex &rhs )
{
m_pReg = NULL;
Set( rhs.m_sPattern );
}
+18 -8
View File
@@ -27,17 +27,22 @@ class AutoPtrCopyOnWrite
{
public:
/* This constructor only exists to make us work with STL containers. */
inline AutoPtrCopyOnWrite(): m_pPtr(NULL), m_iRefCount(new int(1))
inline AutoPtrCopyOnWrite()
{
m_pPtr = NULL;
m_iRefCount = new int(1);
}
explicit inline AutoPtrCopyOnWrite( T *p ): m_pPtr(p), m_iRefCount(new int(1))
explicit inline AutoPtrCopyOnWrite( T *p )
{
m_pPtr = p;
m_iRefCount = new int(1);
}
inline AutoPtrCopyOnWrite( const AutoPtrCopyOnWrite &rhs ):
m_pPtr(rhs.m_pPtr), m_iRefCount(rhs.m_iRefCount)
inline AutoPtrCopyOnWrite( const AutoPtrCopyOnWrite &rhs )
{
m_pPtr = rhs.m_pPtr;
m_iRefCount = rhs.m_iRefCount;
++(*m_iRefCount);
}
@@ -127,11 +132,16 @@ public:
T& operator*() { return *m_pPtr; }
T* operator->() { return m_pPtr; }
explicit HiddenPtr( T *p = NULL ): m_pPtr(p) {}
HiddenPtr( const HiddenPtr<T> &cpy ): m_pPtr(NULL)
explicit HiddenPtr( T *p = NULL )
{
if( cpy.m_pPtr != NULL )
m_pPtr = p;
}
HiddenPtr( const HiddenPtr<T> &cpy )
{
if( cpy.m_pPtr == NULL )
m_pPtr = NULL;
else
m_pPtr = HiddenPtrTraits<T>::Copy( cpy.m_pPtr );
}
+2 -1
View File
@@ -112,8 +112,9 @@ class CachedObjectPointer
public:
typedef CachedObject<T> Object;
CachedObjectPointer() : m_pCache(NULL), m_bCacheIsSet(false)
CachedObjectPointer()
{
m_bCacheIsSet = false;
Object::Register( this );
}
+1 -1
View File
@@ -488,7 +488,7 @@ void ScoreKeeperNormal::AddScoreInternal( TapNoteScore score )
p += m_CustomComboBonusValue;
}
p += static_cast<int>(m_pPlayerStageStats->m_iCurCombo * m_CustomComboMultiplier);
p += m_pPlayerStageStats->m_iCurCombo * m_CustomComboMultiplier;
if( m_iNumNotesHitThisRow == 2 )
p = (int)(p * m_DoubleNoteMultiplier);
+1 -1
View File
@@ -165,7 +165,7 @@ void ScreenBookkeeping::UpdateView()
if( iSongIndex < (int)vpSongs.size() )
{
Song *pSong = vpSongs[iSongIndex];
iCount = pProfile->GetSongNumTimesPlayed( pSong );
int iCount = pProfile->GetSongNumTimesPlayed( pSong );
RString sTitle = ssprintf("%4d",iCount) + " " + pSong->GetDisplayFullTitle();
if( sTitle.length() > 22 )
sTitle = sTitle.Left(20) + "...";
+19 -19
View File
@@ -273,30 +273,30 @@ void ScreenDebugOverlay::Init()
FOREACH_CONST( IDebugLine*, *g_pvpSubscribers, p )
{
{
BitmapText *bt = new BitmapText;
bt->SetName( "ButtonText" );
bt->LoadFromFont( THEME->GetPathF("ScreenDebugOverlay", "line") );
bt->SetHorizAlign( align_right );
bt->SetText( "blah" );
BitmapText *p = new BitmapText;
p->SetName( "ButtonText" );
p->LoadFromFont( THEME->GetPathF("ScreenDebugOverlay", "line") );
p->SetHorizAlign( align_right );
p->SetText( "blah" );
//p->SetShadowLength( 2 );
LOAD_ALL_COMMANDS( *bt );
LOAD_ALL_COMMANDS( *p );
// xxx: I shouldn't have to do this:
ON_COMMAND( bt );
m_vptextButton.push_back( bt );
this->AddChild( bt );
ON_COMMAND( p );
m_vptextButton.push_back( p );
this->AddChild( p );
}
{
BitmapText *bt = new BitmapText;
bt->SetName( "FunctionText" );
bt->LoadFromFont( THEME->GetPathF("ScreenDebugOverlay", "line") );
bt->SetHorizAlign( align_left );
bt->SetText( "blah" );
BitmapText *p = new BitmapText;
p->SetName( "FunctionText" );
p->LoadFromFont( THEME->GetPathF("ScreenDebugOverlay", "line") );
p->SetHorizAlign( align_left );
p->SetText( "blah" );
//p->SetShadowLength( 2 );
LOAD_ALL_COMMANDS( *bt );
LOAD_ALL_COMMANDS( *p );
// xxx: I shouldn't have to do this:
ON_COMMAND( bt );
m_vptextFunction.push_back( bt );
this->AddChild( bt );
ON_COMMAND( p );
m_vptextFunction.push_back( p );
this->AddChild( p );
}
}
@@ -498,7 +498,7 @@ bool ScreenDebugOverlay::OverlayInput( const InputEventPlus &input )
bt.FinishTweening();
// blink 5 times instead of 8
// TODO: make this all metrics instead -aj
for( i=0; i<5; i++ )
for( int i=0; i<5; i++ )
{
bt.SetGlow( RageColor(1,0,0,1) );
bt.Sleep(0.1f);
+36 -41
View File
@@ -16,7 +16,6 @@
#include "LocalizedString.h"
#include "NoteDataUtil.h"
#include "NoteSkinManager.h"
#include "NoteTypes.h"
#include "NotesWriterSM.h"
#include "PrefsManager.h"
#include "RageSoundManager.h"
@@ -266,11 +265,10 @@ void ScreenEdit::InitEditMappings()
m_EditMappingsDeviceInput.button[EDIT_BUTTON_RIGHT_SIDE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LALT);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_RIGHT_SIDE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_ROLL][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_MINE_OR_ROLL][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT);
// m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_TAP_ATTACK][0] = DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_CYCLE_TAP_LEFT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cn);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_CYCLE_TAP_RIGHT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cm);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_LIFT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL);
m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_LIFT][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL);
m_EditMappingsDeviceInput.button [EDIT_BUTTON_SCROLL_SPEED_UP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_UP);
m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SCROLL_SPEED_UP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL);
@@ -329,8 +327,10 @@ void ScreenEdit::InitEditMappings()
m_PlayMappingsDeviceInput.button[EDIT_BUTTON_RETURN_TO_EDIT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_ESC);
m_PlayMappingsMenuButton.button[EDIT_BUTTON_RETURN_TO_EDIT][1] = GAME_BUTTON_BACK;
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_ROLL][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_ROLL][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_MINE_OR_ROLL][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_MINE_OR_ROLL][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_LIFT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_LAY_LIFT][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_REMOVE_NOTE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LALT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_REMOVE_NOTE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT);
m_RecordMappingsDeviceInput.button[EDIT_BUTTON_RETURN_TO_EDIT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_ESC);
@@ -730,8 +730,6 @@ void ScreenEdit::Init()
m_pSteps = GAMESTATE->m_pCurSteps[PLAYER_1];
m_bReturnToRecordMenuAfterPlay = false;
m_fBeatToReturnTo = 0;
m_selectedTap = TAP_ORIGINAL_TAP;
GAMESTATE->m_bGameplayLeadIn.Set( true );
GAMESTATE->m_EditMode = EDIT_MODE.GetValue();
@@ -956,7 +954,7 @@ void ScreenEdit::Update( float fDeltaTime )
else if( fSecsHeld > RECORD_HOLD_SECONDS )
{
// create or extend a hold or roll note
TapNote tn = EditIsBeingPressed(EDIT_BUTTON_LAY_ROLL) ? TAP_ORIGINAL_ROLL_HEAD: TAP_ORIGINAL_HOLD_HEAD;
TapNote tn = EditIsBeingPressed(EDIT_BUTTON_LAY_MINE_OR_ROLL) ? TAP_ORIGINAL_ROLL_HEAD: TAP_ORIGINAL_HOLD_HEAD;
tn.pn = m_InputPlayerNumber;
m_NoteDataRecord.AddHoldNote( t, BeatToNoteRow(fStartBeat), BeatToNoteRow(fEndBeat), tn );
@@ -1026,7 +1024,6 @@ static LocalizedString DESCRIPTION("ScreenEdit", "Description");
static LocalizedString CHART_STYLE("ScreenEdit", "Chart Style");
static LocalizedString MAIN_TITLE("ScreenEdit", "Main title");
static LocalizedString SUBTITLE("ScreenEdit", "Subtitle");
static LocalizedString TAP_NOTE_TYPE("ScreenEdit", "Tap Note");
static LocalizedString TAP_STEPS("ScreenEdit", "Tap Steps");
static LocalizedString JUMPS("ScreenEdit", "Jumps");
static LocalizedString HANDS("ScreenEdit", "Hands");
@@ -1051,7 +1048,6 @@ static ThemeMetric<RString> DESCRIPTION_FORMAT("ScreenEdit", "DescriptionFormat"
static ThemeMetric<RString> CHART_STYLE_FORMAT("ScreenEdit", "ChartStyleFormat");
static ThemeMetric<RString> MAIN_TITLE_FORMAT("ScreenEdit", "MainTitleFormat");
static ThemeMetric<RString> SUBTITLE_FORMAT("ScreenEdit", "SubtitleFormat");
static ThemeMetric<RString> TAP_NOTE_TYPE_FORMAT("ScreenEdit", "TapNoteTypeFormat");
static ThemeMetric<RString> NUM_STEPS_FORMAT("ScreenEdit", "NumStepsFormat");
static ThemeMetric<RString> NUM_JUMPS_FORMAT("ScreenEdit", "NumJumpsFormat");
static ThemeMetric<RString> NUM_HOLDS_FORMAT("ScreenEdit", "NumHoldsFormat");
@@ -1120,7 +1116,6 @@ void ScreenEdit::UpdateTextInfo()
sText += ssprintf( MAIN_TITLE_FORMAT.GetValue(), MAIN_TITLE.GetValue().c_str(), m_pSong->m_sMainTitle.c_str() );
if( m_pSong->m_sSubTitle.size() )
sText += ssprintf( SUBTITLE_FORMAT.GetValue(), SUBTITLE.GetValue().c_str(), m_pSong->m_sSubTitle.c_str() );
sText += ssprintf( TAP_NOTE_TYPE_FORMAT.GetValue(), TAP_NOTE_TYPE.GetValue().c_str(), TapNoteTypeToString( m_selectedTap.type ).c_str() );
break;
}
sText += ssprintf( NUM_STEPS_FORMAT.GetValue(), TAP_STEPS.GetValue().c_str(), m_NoteDataEdit.GetNumTapNotes() );
@@ -1301,48 +1296,43 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
m_NoteDataEdit.SetTapNote( iCol, iSongIndex, TAP_EMPTY );
// Don't CheckNumberOfNotesAndUndo. We don't want to revert any change that removes notes.
}
else if( EditIsBeingPressed(EDIT_BUTTON_LAY_MINE_OR_ROLL) )
{
m_soundAddNote.Play();
SetDirty( true );
SaveUndo();
TapNote tn = TAP_ORIGINAL_MINE;
tn.pn = m_InputPlayerNumber;
m_NoteDataEdit.SetTapNote( iCol, iSongIndex, tn );
CheckNumberOfNotesAndUndo();
}
else if( EditIsBeingPressed(EDIT_BUTTON_LAY_TAP_ATTACK) )
{
g_iLastInsertTapAttackTrack = iCol;
EditMiniMenu( &g_InsertTapAttack, SM_BackFromInsertTapAttack );
}
else if( EditIsBeingPressed(EDIT_BUTTON_LAY_LIFT) )
{
m_soundAddNote.Play();
SetDirty( true );
SaveUndo();
TapNote tn = TAP_ORIGINAL_LIFT;
tn.pn = m_InputPlayerNumber;
m_NoteDataEdit.SetTapNote( iCol, iSongIndex, tn );
CheckNumberOfNotesAndUndo();
}
else
{
m_soundAddNote.Play();
SetDirty( true );
SaveUndo();
TapNote tn = m_selectedTap;
TapNote tn = TAP_ORIGINAL_TAP;
tn.pn = m_InputPlayerNumber;
m_NoteDataEdit.SetTapNote(iCol, iSongIndex, tn );
CheckNumberOfNotesAndUndo();
}
}
break;
case EDIT_BUTTON_CYCLE_TAP_LEFT:
{
switch ( m_selectedTap.type )
{
case TapNote::tap: m_selectedTap = TAP_ORIGINAL_FAKE; break;
case TapNote::mine: m_selectedTap = TAP_ORIGINAL_TAP; break;
case TapNote::lift: m_selectedTap = TAP_ORIGINAL_MINE; break;
case TapNote::fake: m_selectedTap = TAP_ORIGINAL_LIFT; break;
DEFAULT_FAIL( m_selectedTap.type );
}
break;
}
case EDIT_BUTTON_CYCLE_TAP_RIGHT:
{
switch ( m_selectedTap.type )
{
case TapNote::tap: m_selectedTap = TAP_ORIGINAL_MINE; break;
case TapNote::mine: m_selectedTap = TAP_ORIGINAL_LIFT; break;
case TapNote::lift: m_selectedTap = TAP_ORIGINAL_FAKE; break;
case TapNote::fake: m_selectedTap = TAP_ORIGINAL_TAP; break;
DEFAULT_FAIL( m_selectedTap.type );
}
break;
}
case EDIT_BUTTON_SCROLL_SPEED_UP:
case EDIT_BUTTON_SCROLL_SPEED_DOWN:
{
@@ -2116,6 +2106,10 @@ void ScreenEdit::InputRecord( const InputEventPlus &input, EditButton EditB )
m_NoteDataRecord.SetTapNote( iCol, iHeadRow, TAP_EMPTY );
TapNote tn = TAP_ORIGINAL_TAP;
if( EditIsBeingPressed(EDIT_BUTTON_LAY_MINE_OR_ROLL) )
tn = TAP_ORIGINAL_MINE;
else if( EditIsBeingPressed(EDIT_BUTTON_LAY_LIFT) )
tn = TAP_ORIGINAL_LIFT;
tn.pn = m_InputPlayerNumber;
m_NoteDataRecord.SetTapNote( iCol, iRow, tn );
m_NoteFieldRecord.Step( iCol, TNS_W1 );
@@ -2508,7 +2502,7 @@ void ScreenEdit::ScrollTo( float fDestinationBeat )
// Don't SaveUndo. We want to undo the whole hold, not just the last segment
// that the user made. Dragging the hold bigger can only absorb and remove
// other taps, so dragging won't cause us to exceed the note limit.
TapNote tn = EditIsBeingPressed(EDIT_BUTTON_LAY_ROLL) ? TAP_ORIGINAL_ROLL_HEAD : TAP_ORIGINAL_HOLD_HEAD;
TapNote tn = EditIsBeingPressed(EDIT_BUTTON_LAY_MINE_OR_ROLL) ? TAP_ORIGINAL_ROLL_HEAD : TAP_ORIGINAL_HOLD_HEAD;
tn.pn = m_InputPlayerNumber;
m_NoteDataEdit.AddHoldNote( iCol, iStartRow, iEndRow, tn );
@@ -4041,7 +4035,8 @@ static const EditHelpLine g_EditHelpLines[] =
EditHelpLine( "Shift BPM changes and stops down one beat", EDIT_BUTTON_INSERT_SHIFT_PAUSES ),
EditHelpLine( "Delete beat and shift up", EDIT_BUTTON_DELETE ),
EditHelpLine( "Shift BPM changes and stops up one beat", EDIT_BUTTON_DELETE_SHIFT_PAUSES ),
EditHelpLine( "Cycle between tap notes", EDIT_BUTTON_CYCLE_TAP_LEFT, EDIT_BUTTON_CYCLE_TAP_RIGHT ),
EditHelpLine( "Lay mine", EDIT_BUTTON_LAY_MINE_OR_ROLL ),
EditHelpLine( "Lay lift", EDIT_BUTTON_LAY_LIFT ),
EditHelpLine( "Add to/remove from right half", EDIT_BUTTON_RIGHT_SIDE ),
EditHelpLine( "Switch player (Routine only)", EDIT_BUTTON_SWITCH_PLAYERS ),
};
+2 -9
View File
@@ -9,7 +9,6 @@
#include "Background.h"
#include "Foreground.h"
#include "NoteField.h"
#include "NoteTypes.h"
#include "Song.h"
#include "Steps.h"
#include "ThemeMetric.h"
@@ -51,13 +50,10 @@ enum EditButton
// These are modifiers to EDIT_BUTTON_COLUMN_*.
EDIT_BUTTON_RIGHT_SIDE,
EDIT_BUTTON_LAY_ROLL,
EDIT_BUTTON_LAY_MINE_OR_ROLL,
EDIT_BUTTON_LAY_TAP_ATTACK,
EDIT_BUTTON_LAY_LIFT,
EDIT_BUTTON_REMOVE_NOTE,
// These are modifiers to change the present tap note.
EDIT_BUTTON_CYCLE_TAP_LEFT,
EDIT_BUTTON_CYCLE_TAP_RIGHT,
EDIT_BUTTON_SCROLL_UP_LINE,
EDIT_BUTTON_SCROLL_UP_PAGE,
@@ -236,9 +232,6 @@ protected:
SnapDisplay m_SnapDisplay;
BitmapText m_textInputTips;
/** @brief The current TapNote that would be inserted. */
TapNote m_selectedTap;
void UpdateTextInfo();
BitmapText m_textInfo; // status information that changes
+7 -3
View File
@@ -797,12 +797,12 @@ void ScreenGameplay::InitSongQueues()
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
{
Trail *lTrail = GAMESTATE->m_pCurTrail[ pi->GetStepsAndTrailIndex() ];
ASSERT( lTrail );
Trail *pTrail = GAMESTATE->m_pCurTrail[ pi->GetStepsAndTrailIndex() ];
ASSERT( pTrail );
pi->m_vpStepsQueue.clear();
pi->m_asModifiersQueue.clear();
FOREACH_CONST( TrailEntry, lTrail->m_vEntries, e )
FOREACH_CONST( TrailEntry, pTrail->m_vEntries, e )
{
ASSERT( e->pSteps );
pi->m_vpStepsQueue.push_back( e->pSteps );
@@ -1270,6 +1270,8 @@ void ScreenGameplay::LoadLights()
{
if( asDifficulties[0].CompareNoCase("selected") == 0 )
{
PlayerInfo pi;
// Base lights off current difficulty of active player
// Can be either P1 or P2 if they're individual or P1 if both are active
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
@@ -1303,6 +1305,8 @@ void ScreenGameplay::LoadLights()
// We've also specified for Player 2 to be based off current difficulty
if( asDifficulties[1].CompareNoCase("selected") == 0 && GAMESTATE->GetNumPlayersEnabled() > 1 )
{
PlayerInfo pi;
// Base lights off current difficulty of active player
// Only do this for P2 in a two-player situation, since P1 is taken care of above
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
+7 -7
View File
@@ -106,10 +106,10 @@ void ScreenJukebox::SetSong()
SONGMAN->GetAllCourses( apCourses, false );
vector<const CourseEntry *> apOptions;
vector<Course*> apPossibleCourses;
for( unsigned j = 0; j < apCourses.size(); ++j )
for( unsigned i = 0; i < apCourses.size(); ++i )
{
Course *lCourse = apCourses[j];
const CourseEntry *pEntry = lCourse->FindFixedSong( pSong );
Course *pCourse = apCourses[i];
const CourseEntry *pEntry = pCourse->FindFixedSong( pSong );
if( pEntry == NULL || pEntry->attacks.size() == 0 )
continue;
@@ -144,14 +144,14 @@ void ScreenJukebox::SetSong()
{
int iIndex = RandomInt( apOptions.size() );
m_pCourseEntry = apOptions[iIndex];
Course *lCourse = apPossibleCourses[iIndex];
Course *pCourse = apPossibleCourses[iIndex];
PlayMode pm = CourseTypeToPlayMode( lCourse->GetCourseType() );
PlayMode pm = CourseTypeToPlayMode( pCourse->GetCourseType() );
GAMESTATE->m_PlayMode.Set( pm );
GAMESTATE->m_pCurCourse.Set( lCourse );
GAMESTATE->m_pCurCourse.Set( pCourse );
FOREACH_PlayerNumber( p )
{
GAMESTATE->m_pCurTrail[p].Set( lCourse->GetTrail( GAMESTATE->GetCurrentStyle()->m_StepsType ) );
GAMESTATE->m_pCurTrail[p].Set( pCourse->GetTrail( GAMESTATE->GetCurrentStyle()->m_StepsType ) );
ASSERT( GAMESTATE->m_pCurTrail[p] );
}
}
+5 -5
View File
@@ -236,15 +236,15 @@ void ColorBitmapText::SetText( const RString& _sText, const RString& _sAlternate
RString FirstThree = m_sText.substr( i, 3 );
if( FirstThree.CompareNoCase("|c0") == 0 && iCharsLeft > 8 )
{
ColorChange cChange;
ColorChange change;
unsigned int r, g, b;
sscanf( m_sText.substr( i, 9 ).c_str(), "|%*c0%2x%2x%2x", &r, &g, &b );
cChange.c = RageColor( r/255.f, g/255.f, b/255.f, 1.f );
cChange.l = iGlyphsSoFar;
change.c = RageColor( r/255.f, g/255.f, b/255.f, 1.f );
change.l = iGlyphsSoFar;
if( iGlyphsSoFar == 0 )
m_vColors[0] = cChange;
m_vColors[0] = change;
else
m_vColors.push_back( cChange );
m_vColors.push_back( change );
i+=8;
continue;
}
+4 -4
View File
@@ -261,7 +261,7 @@ void ScreenOptionsEditCourse::ImportOptions( int iRow, const vector<PlayerNumber
{
case EditCourseRow_Minutes:
row.SetOneSharedSelection( 0 );
row.SetOneSharedSelectionIfPresent( MakeMinutesString(static_cast<int>(GAMESTATE->m_pCurCourse->m_fGoalSeconds)/60) );
row.SetOneSharedSelectionIfPresent( MakeMinutesString(GAMESTATE->m_pCurCourse->m_fGoalSeconds/60) );
break;
default:
{
@@ -383,14 +383,14 @@ void ScreenOptionsEditCourse::SetCurrentSong()
}
else
{
iRow = m_iCurrentRow[PLAYER_1];
int iRow = m_iCurrentRow[PLAYER_1];
int iEntryIndex = RowToEntryIndex( iRow );
Song *pSong = NULL;
if( iEntryIndex != -1 )
{
int iCurrentSongRow = EntryIndexAndRowTypeToRow(iEntryIndex,RowType_Song);
OptionRow &oRow = *m_pRows[ iCurrentSongRow ];
int index = oRow.GetOneSelection(PLAYER_1);
OptionRow &row = *m_pRows[ iCurrentSongRow ];
int index = row.GetOneSelection(PLAYER_1);
if( index != 0 )
pSong = m_vpSongs[ index - 1 ];
}
+1 -1
View File
@@ -142,7 +142,7 @@ void ScreenOptionsManageCourses::BeginScreen()
vector<Course*>::const_iterator iter = find( m_vpCourses.begin(), m_vpCourses.end(), GAMESTATE->m_pCurCourse );
if( iter != m_vpCourses.end() )
{
iIndex = iter - m_vpCourses.begin();
int iIndex = iter - m_vpCourses.begin();
this->MoveRowAbsolute( GAMESTATE->m_MasterPlayerNumber, 1 + iIndex );
}
}
+1 -1
View File
@@ -110,7 +110,7 @@ void ScreenOptionsManageEditSteps::BeginScreen()
vector<Steps*>::const_iterator iter = find( m_vpSteps.begin(), m_vpSteps.end(), GAMESTATE->m_pCurSteps[PLAYER_1] );
if( iter != m_vpSteps.end() )
{
iIndex = iter - m_vpSteps.begin();
int iIndex = iter - m_vpSteps.begin();
this->MoveRowAbsolute( PLAYER_1, 1 + iIndex );
}
}
+2 -3
View File
@@ -197,9 +197,8 @@ void ScreenOptionsMemoryCard::ProcessMenuStart( const InputEventPlus &input )
const vector<UsbStorageDevice> &v = m_CurrentUsbStorageDevices;
if( iCurRow < int(v.size()) ) // a card
{
// Why is this statement in twice? Doubt it would change right after the if. -Wolfman2000
const vector<UsbStorageDevice> &vUSB = m_CurrentUsbStorageDevices;
const UsbStorageDevice &dev = vUSB[iCurRow];
const vector<UsbStorageDevice> &v = m_CurrentUsbStorageDevices;
const UsbStorageDevice &dev = v[iCurRow];
MEMCARDMAN->m_sEditorMemoryCardOsMountPoint.Set( dev.sOsMountDir );
/* The destination screen must UnmountCard. XXX: brittle */
+1 -2
View File
@@ -244,8 +244,7 @@ float ScreenRanking::SetPage( const PageToShow &pts )
for( int l=0; l<NUM_RANKING_LINES; l++ )
{
// No need to shadow at this point.
st = pts.aTypes.front().second;
StepsType st = pts.aTypes.front().second;
HighScoreList &hsl = PROFILEMAN->GetMachineProfile()->GetCategoryHighScoreList(st, pts.category);
HighScore hs;
bool bRecentHighScore = false;
+6 -6
View File
@@ -1376,9 +1376,9 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input )
// Don't play start sound. We play it again below on finalized
//m_soundStart.Play();
Message lMsg("StepsChosen");
lMsg.SetParam( "Player", p );
MESSAGEMAN->Broadcast( lMsg );
Message msg("StepsChosen");
msg.SetParam( "Player", p );
MESSAGEMAN->Broadcast( msg );
}
}
@@ -1781,19 +1781,19 @@ void ScreenSelectMusic::AfterMusicChange()
case TYPE_COURSE:
{
const Course *lCourse = m_MusicWheel.GetSelectedCourse();
const Course *pCourse = m_MusicWheel.GetSelectedCourse();
const Style *pStyle = NULL;
if( CommonMetrics::AUTO_SET_STYLE )
pStyle = pCourse->GetCourseStyle( GAMESTATE->m_pCurGame, GAMESTATE->GetNumSidesJoined() );
if( pStyle == NULL )
pStyle = GAMESTATE->GetCurrentStyle();
lCourse->GetTrails( m_vpTrails, pStyle->m_StepsType );
pCourse->GetTrails( m_vpTrails, pStyle->m_StepsType );
m_sSampleMusicToPlay = m_sCourseMusicPath;
m_fSampleStartSeconds = 0;
m_fSampleLengthSeconds = -1;
g_sBannerPath = lCourse->GetBannerPath();
g_sBannerPath = pCourse->GetBannerPath();
if( g_sBannerPath.empty() )
m_Banner.LoadFallback();
+1
View File
@@ -38,6 +38,7 @@ class InputList: public BitmapText
// Update input texts
vector<RString> asInputs;
DeviceInput di;
vector<DeviceInput> DeviceInputs;
INPUTFILTER->GetPressedButtons( DeviceInputs );
FOREACH( DeviceInput, DeviceInputs, di )
+1 -1
View File
@@ -46,7 +46,7 @@ void ScrollBar::SetPercentage( float fCenterPercent, float fSizePercent )
{
wrap( fCenterPercent, 1.0f );
const int iBarContentHeight = static_cast<int>(m_sprMiddle->GetZoomedHeight());
const int iBarContentHeight = m_sprMiddle->GetZoomedHeight();
ASSERT( iBarContentHeight != 0 );
/* Set tick thumb */
+5 -5
View File
@@ -1488,15 +1488,15 @@ void SongManager::UpdatePreferredSort(RString sPreferredSongs, RString sPreferre
if( MOVE_UNLOCKS_TO_BOTTOM_OF_PREFERRED_SORT.GetValue() )
{
// move all unlock songs to a group at the bottom
PreferredSortSection PFSection;
PFSection.sName = "Unlocks";
PreferredSortSection section;
section.sName = "Unlocks";
FOREACH( UnlockEntry, UNLOCKMAN->m_UnlockEntries, ue )
{
if( ue->m_Type == UnlockRewardType_Song )
{
Song *pSong = ue->m_Song.ToSong();
if( pSong )
PFSection.vpSongs.push_back( pSong );
section.vpSongs.push_back( pSong );
}
}
@@ -1505,14 +1505,14 @@ void SongManager::UpdatePreferredSort(RString sPreferredSongs, RString sPreferre
for( int i=v->vpSongs.size()-1; i>=0; i-- )
{
Song *pSong = v->vpSongs[i];
if( find(PFSection.vpSongs.begin(),PFSection.vpSongs.end(),pSong) != PFSection.vpSongs.end() )
if( find(section.vpSongs.begin(),section.vpSongs.end(),pSong) != section.vpSongs.end() )
{
v->vpSongs.erase( v->vpSongs.begin()+i );
}
}
}
m_vPreferredSongSort.push_back( PFSection );
m_vPreferredSongSort.push_back( section );
}
// prune empty groups
+2 -13
View File
@@ -46,19 +46,8 @@ public:
};
SoundEffectType m_SoundEffectType;
/**
* @brief Set up the SongOptions with reasonable defaults.
*
* This is taken from Init(), but uses the intended
* initialization lists. */
SongOptions(): m_LifeType(LIFE_BAR), m_DrainType(DRAIN_NORMAL),
m_iBatteryLives(4), m_bAssistClap(false),
m_bAssistMetronome(false), m_fMusicRate(1.0f),
m_SpeedfMusicRate(1.0f), m_fHaste(0.0f),
m_SpeedfHaste(1.0f), m_AutosyncType(AUTOSYNC_OFF),
m_SoundEffectType(SOUNDEFFECT_OFF),
m_bStaticBackground(false), m_bRandomBGOnly(false),
m_bSaveScore(true), m_bSaveReplay(false) {};
SongOptions() { Init(); };
void Init();
void Approach( const SongOptions& other, float fDeltaSeconds );
void GetMods( vector<RString> &AddTo ) const;
+2 -2
View File
@@ -396,11 +396,11 @@ public:
return 1;
}
static int GetBestFinalGrade( T* t, lua_State *L )
static int GetBestFinalGrade( T* p, lua_State *L )
{
Grade top_grade = Grade_Failed;
StageStats stats;
t->GetFinalEvalStageStats( stats );
p->GetFinalEvalStageStats( stats );
FOREACH_HumanPlayer( p )
{
// If this player failed any stage, then their final grade is an F.
+7 -6
View File
@@ -1480,14 +1480,15 @@
RelativePath="NotesWriterSM.h"
>
</File>
<File
RelativePath="NotesWriterSSC.cpp"
<File
RelativePath="NotesWriterSSC.cpp"
>
</File>
<File
RelativePath="NotesWriterSSC.h"
</File>
<File
RelativePath="NotesWriterSSC.h"
>
</File>
</File>
<File
RelativePath="NoteTypes.cpp"
>
+2 -2
View File
@@ -103,7 +103,7 @@ void StepMania::GetPreferredVideoModeParams( VideoModeParams &paramsOut )
{
//float fRatio = PREFSMAN->m_iDisplayWidth / PREFSMAN->m_iDisplayHeight;
//iWidth = PREFSMAN->m_iDisplayHeight * fRatio;
iWidth = static_cast<int>(ceilf(PREFSMAN->m_iDisplayHeight * PREFSMAN->m_fDisplayAspectRatio));
iWidth = ceilf(PREFSMAN->m_iDisplayHeight * PREFSMAN->m_fDisplayAspectRatio);
}
// todo: allow for PRODUCT_ID + "-" + CommonMetrics::WINDOW_TITLE as
@@ -917,7 +917,7 @@ static void WriteLogHeader()
#endif
// this code should only be enabled in distributed builds
//LOG->Info("sm-ssc is Copyright �2009 the spinal shark collective, all rights reserved. Commercial use of this binary is prohibited by law and will be prosecuted to the fullest extent of the law.");
//LOG->Info("sm-ssc is Copyright ©2009 the spinal shark collective, all rights reserved. Commercial use of this binary is prohibited by law and will be prosecuted to the fullest extent of the law.");
// end limited code
time_t cur_time;
+6 -3
View File
@@ -48,12 +48,15 @@ public:
} /** @brief The Song's locked status. */ m_Locked;
/** @brief Set up the initial criteria. */
StepsCriteria(): m_difficulty(Difficulty_Invalid),
m_iLowMeter(-1), m_iHighMeter(-1),
m_st(StepsType_Invalid), m_Locked(Locked_DontCare)
StepsCriteria()
{
m_difficulty = Difficulty_Invalid;
m_iLowMeter = -1;
m_iHighMeter = -1;
//m_fLowBPM = -1;
//m_fHighBPM = -1;
m_st = StepsType_Invalid;
m_Locked = Locked_DontCare;
}
/**
+1 -1
View File
@@ -31,7 +31,7 @@ void StreamDisplay::Load( const RString &_sMetricsGroup )
m_transformPill.SetFromReference( THEME->GetMetricR(sMetricsGroup,"PillTransformFunction") );
float fTextureCoordScaleX = THEME->GetMetricF(sMetricsGroup,"TextureCoordScaleX");
int iNumPills = static_cast<int>(THEME->GetMetricF(sMetricsGroup,"NumPills"));
int iNumPills = THEME->GetMetricF(sMetricsGroup,"NumPills");
m_bAlwaysBounce = THEME->GetMetricB(sMetricsGroup,"AlwaysBounceNormalBar");
FOREACH_ENUM( StreamType, st )
+4 -4
View File
@@ -569,11 +569,11 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
int iRow = BeatToNoteRow(fBeat);
for( unsigned j=0; j<m_StopSegments.size(); j++ ) // foreach freeze
{
/* A traditional stop has the beat happening before the stop. (>=)
* A Pump delay acts differently: the pause is before the beat. (>)
/* A traditional stop has the beat happening before the stop (>=)
* A Pump delay acts differently. [aj: how?] (>)
*/
if( ( m_StopSegments[j].m_iStartRow >= iRow && !m_StopSegments[j].m_bDelay ) ||
( m_StopSegments[j].m_iStartRow > iRow && m_StopSegments[j].m_bDelay ) )
if( m_StopSegments[j].m_iStartRow >= iRow && !m_StopSegments[j].m_bDelay ||
m_StopSegments[j].m_iStartRow > iRow && m_StopSegments[j].m_bDelay )
break;
fElapsedTime += m_StopSegments[j].m_fStopSeconds;
}
+1 -1
View File
@@ -174,7 +174,7 @@ struct StopSegment
{
return ( m_iStartRow < other.m_iStartRow ) ||
( m_iStartRow == other.m_iStartRow &&
( ( m_bDelay && !other.m_bDelay ) || m_fStopSeconds < other.m_fStopSeconds ));
( m_bDelay && !other.m_bDelay || m_fStopSeconds < other.m_fStopSeconds ));
}
/**
* @brief Compares two StopSegments to see if one is less than or equal to the other.
+2 -8
View File
@@ -64,15 +64,9 @@ public:
mutable bool m_bRadarValuesCached;
mutable RadarValues m_CachedRadarValues;
/**
* @brief Set up the Trail with default values.
*
* This used to call Init(), which is still available. */
Trail(): m_StepsType(StepsType_Invalid),
m_CourseDifficulty(Difficulty_Invalid),
m_iSpecifiedMeter(-1), m_bRadarValuesCached(false)
Trail()
{
m_vEntries.clear();
Init();
}
void Init()
{

Some files were not shown because too many files have changed in this diff Show More