diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/econ/econ_quests.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/econ/econ_quests.cpp')
| -rw-r--r-- | game/shared/econ/econ_quests.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/game/shared/econ/econ_quests.cpp b/game/shared/econ/econ_quests.cpp new file mode 100644 index 0000000..b7a3ef7 --- /dev/null +++ b/game/shared/econ/econ_quests.cpp @@ -0,0 +1,71 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Functions related to dynamic recipes +// +//============================================================================= + + +#include "cbase.h" +#include "econ_quests.h" +#ifndef GC_DLL +#include "quest_objective_manager.h" +#endif + +bool IsQuestItemUnidentified( const CEconItem* pQuestItem ) +{ + return pQuestItem && IsUnacknowledged( pQuestItem->GetInventoryToken() ); +} + +bool IsQuestItemReadyToTurnIn( const IEconItemInterface* pQuestItem ) +{ + uint32 nRequiredPoints = pQuestItem->GetItemDefinition()->GetQuestDef()->GetMaxStandardPoints(); + uint32 nEarnedStandardPoints = GetEarnedStandardPoints( pQuestItem ); + uint32 nEarnedBonusPoints = GetEarnedBonusPoints( pQuestItem ); + + return ( nEarnedStandardPoints + nEarnedBonusPoints ) >= nRequiredPoints; +} + +bool IsQuestItemFullyCompleted( const IEconItemInterface* pQuestItem ) +{ + uint32 nRequiredStandardPoints = pQuestItem->GetItemDefinition()->GetQuestDef()->GetMaxStandardPoints(); + uint32 nRequiredBonusPoints = pQuestItem->GetItemDefinition()->GetQuestDef()->GetMaxBonusPoints(); + uint32 nEarnedStandardPoints = GetEarnedStandardPoints( pQuestItem ); + uint32 nEarnedBonusPoints = GetEarnedBonusPoints( pQuestItem ); + + return ( nEarnedStandardPoints + nEarnedBonusPoints ) == ( nRequiredStandardPoints + nRequiredBonusPoints ); +} + +uint32 GetEarnedStandardPoints( const IEconItemInterface* pQuestItem ) +{ +#ifndef GC_DLL + const CQuestItemTracker* pItemTracker = assert_cast< const CQuestItemTracker* >( QuestObjectiveManager()->GetTypedTracker< CQuestItemTracker* >( pQuestItem->GetID() ) ); + if ( pItemTracker ) + { + return pItemTracker->GetEarnedStandardPoints(); + } +#endif + + uint32 nEarnedStandardPoints = 0; + static CSchemaAttributeDefHandle pAttribDef_EarnedStandardPoints( "quest earned standard points" ); + pQuestItem->FindAttribute( pAttribDef_EarnedStandardPoints, &nEarnedStandardPoints ); + + + return nEarnedStandardPoints; +} + +uint32 GetEarnedBonusPoints( const IEconItemInterface* pQuestItem ) +{ + +#ifndef GC_DLL + const CQuestItemTracker* pItemTracker = assert_cast< const CQuestItemTracker* >( QuestObjectiveManager()->GetTypedTracker< CQuestItemTracker* >( pQuestItem->GetID() ) ); + if ( pItemTracker ) + { + return pItemTracker->GetEarnedBonusPoints(); + } +#endif + uint32 nEarnedBonusPoints = 0; + static CSchemaAttributeDefHandle pAttribDef_EarnedBonusPoints( "quest earned bonus points" ); + pQuestItem->FindAttribute( pAttribDef_EarnedBonusPoints, &nEarnedBonusPoints ); + + return nEarnedBonusPoints; +}
\ No newline at end of file |