From b21ceca7561edda20447fc92569079bdb8bd5e7c Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 15 Nov 2006 23:34:48 +0000 Subject: [PATCH] add guitar scoring --- stepmania/src/MessageManager.cpp | 12 +++++ stepmania/src/MessageManager.h | 12 +++++ stepmania/src/ScoreKeeperGuitar.cpp | 69 +++++++++++++++++++++++++++++ stepmania/src/ScoreKeeperGuitar.h | 43 ++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 stepmania/src/ScoreKeeperGuitar.cpp create mode 100644 stepmania/src/ScoreKeeperGuitar.h diff --git a/stepmania/src/MessageManager.cpp b/stepmania/src/MessageManager.cpp index 34cdce3c75..fcb69926bb 100644 --- a/stepmania/src/MessageManager.cpp +++ b/stepmania/src/MessageManager.cpp @@ -133,6 +133,18 @@ static const char *MessageIDNames[] = { "ShowHoldJudgmentMuliPlayerP31", "ShowHoldJudgmentMuliPlayerP32", "SongModified", + "ScoreMultiplierChangedP1", + "ScoreMultiplierChangedP2", + "StarPowerChangedP1", + "StarPowerChangedP2", + "CurrentComboChangedP1", + "CurrentComboChangedP2", + "StarMeterChangedP1", + "StarMeterChangedP2", + "LifeMeterChangedP1", + "LifeMeterChangedP2", + "ScoreChangedP1", + "ScoreChangedP2", }; XToString( MessageID ); diff --git a/stepmania/src/MessageManager.h b/stepmania/src/MessageManager.h index 7d7de8e6a8..f5dae0a829 100644 --- a/stepmania/src/MessageManager.h +++ b/stepmania/src/MessageManager.h @@ -130,6 +130,18 @@ enum MessageID Message_ShowHoldJudgmentMuliPlayerP31, Message_ShowHoldJudgmentMuliPlayerP32, Message_SongModified, + Message_ScoreMultiplierChangedP1, + Message_ScoreMultiplierChangedP2, + Message_StarPowerChangedP1, + Message_StarPowerChangedP2, + Message_CurrentComboChangedP1, + Message_CurrentComboChangedP2, + Message_StarMeterChangedP1, + Message_StarMeterChangedP2, + Message_LifeMeterChangedP1, + Message_LifeMeterChangedP2, + Message_ScoreChangedP1, + Message_ScoreChangedP2, NUM_MessageID, // leave this at the end MessageID_Invalid }; diff --git a/stepmania/src/ScoreKeeperGuitar.cpp b/stepmania/src/ScoreKeeperGuitar.cpp new file mode 100644 index 0000000000..e139e3eedc --- /dev/null +++ b/stepmania/src/ScoreKeeperGuitar.cpp @@ -0,0 +1,69 @@ +#include "global.h" +#include "ScoreKeeperGuitar.h" +#include "PlayerStageStats.h" +#include "MessageManager.h" + + +ScoreKeeperGuitar::ScoreKeeperGuitar( PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats ) : + ScoreKeeperNormal(pPlayerState, pPlayerStageStats) +{ +} + +void ScoreKeeperGuitar::AddTapScore( TapNoteScore tns ) +{ + // calculate score multiplier + int iNewCurScoreMultiplier = m_pPlayerStageStats->m_iCurScoreMultiplier; + iNewCurScoreMultiplier = 1 + (m_pPlayerStageStats->m_iCurCombo / 10); + iNewCurScoreMultiplier = min( iNewCurScoreMultiplier, 4 ); + if( iNewCurScoreMultiplier != m_pPlayerStageStats->m_iCurScoreMultiplier ) + { + m_pPlayerStageStats->m_iCurScoreMultiplier = iNewCurScoreMultiplier; + MESSAGEMAN->Broadcast( Message_ScoreMultiplierChangedP1 ); + } + + int &iScore = m_pPlayerStageStats->m_iScore; + + if( tns != TNS_Miss ) + { + iScore += 50 * iNewCurScoreMultiplier; + MESSAGEMAN->Broadcast( Message_ScoreChangedP1 ); + } +} + +void ScoreKeeperGuitar::AddHoldScore( HoldNoteScore hns ) +{ + if( hns == HNS_Held ) + AddTapScore( TNS_W1 ); + else if ( hns == HNS_LetGo ) + AddTapScore( TNS_W4 ); // required for subtractive score display to work properly +} + +void ScoreKeeperGuitar::AddTapRowScore( TapNoteScore score ) +{ + +} + +/* + * (c) 2001-2004 Chris Danford + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/stepmania/src/ScoreKeeperGuitar.h b/stepmania/src/ScoreKeeperGuitar.h new file mode 100644 index 0000000000..b2eb53ae47 --- /dev/null +++ b/stepmania/src/ScoreKeeperGuitar.h @@ -0,0 +1,43 @@ +/* ScoreKeeperGuitar - */ + +#ifndef ScoreKeeperGuitar_H +#define ScoreKeeperGuitar_H + +#include "ScoreKeeperNormal.h" + + +class ScoreKeeperGuitar : public ScoreKeeperNormal +{ +public: + ScoreKeeperGuitar( PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats ); + virtual void AddTapScore( TapNoteScore score ); + void AddHoldScore( HoldNoteScore hns ); + virtual void AddTapRowScore( TapNoteScore score ); +}; + +#endif + +/* + * (c) 2001-2004 Chris Danford + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */