summaryrefslogtreecommitdiff
path: root/game/client/econ/econ_consumables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/econ/econ_consumables.cpp')
-rw-r--r--game/client/econ/econ_consumables.cpp266
1 files changed, 266 insertions, 0 deletions
diff --git a/game/client/econ/econ_consumables.cpp b/game/client/econ/econ_consumables.cpp
new file mode 100644
index 0000000..15581e6
--- /dev/null
+++ b/game/client/econ/econ_consumables.cpp
@@ -0,0 +1,266 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+
+#include "cbase.h"
+
+#include "econ_item_tools.h"
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+const char *IEconTool::GetUseCommandLocalizationToken( const IEconItemInterface *pItem, int i ) const
+{
+ Assert( i == 0 ); // Default only has 1 use, so this should be 0.
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ // If we have a custom schema-specified use string, use that.
+ return GetUseString();
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+const char* IEconTool::GetUseCommand( const IEconItemInterface *pItem, int i ) const
+{
+ Assert( i == 0 ); // Default only has 1 use, so this should be 0.
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ const bool bIsGCConsumable = ( ( pItem->GetItemDefinition()->GetCapabilities() & ITEM_CAP_USABLE_GC ) != 0 );
+ return bIsGCConsumable ? "Context_UseConsumableItem" : "Context_ApplyOnItem";
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+bool IsLocalPlayerWrappedGift( const IEconItemInterface *pItem )
+{
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetTypedEconTool<CEconTool_WrappedGift>() );
+
+ static CSchemaAttributeDefHandle pAttr_GifterAccountID( "gifter account id" );
+
+ uint32 unGifterAccountID;
+ if ( !pItem->FindAttribute( pAttr_GifterAccountID, &unGifterAccountID ) )
+ return false;
+
+ const uint32 unLocalAccountID = steamapicontext->SteamUser()->GetSteamID().GetAccountID();
+
+ return unGifterAccountID == unLocalAccountID;
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+bool CEconTool_WrappedGift::CanBeUsedNow( const IEconItemInterface *pItem ) const
+{
+ static CSchemaItemDefHandle pItemDef_WrappedGiftapultPackage( "Wrapped Giftapult Package" );
+ static CSchemaItemDefHandle pItemDef_DeliveredGiftapultPackage( "Delivered Giftapult Package" );
+ static CSchemaItemDefHandle pItemDef_CompetitiveBetaPassGift( "Competitive Matchmaking Beta Giftable Invite" );
+
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ if ( ( pItem->GetItemDefinition() == pItemDef_WrappedGiftapultPackage ) ||
+ ( pItem->GetItemDefinition() == pItemDef_CompetitiveBetaPassGift ) ||
+ ( pItem->GetItemDefinition() == pItemDef_DeliveredGiftapultPackage ) )
+ return true;
+
+ return pItem->IsTradable();
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+bool CEconTool_WrappedGift::ShouldShowContainedItemPanel( const IEconItemInterface *pItem ) const
+{
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ return IsLocalPlayerWrappedGift( pItem );
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+const char *CEconTool_WrappedGift::GetUseCommandLocalizationToken( const IEconItemInterface *pItem, int i ) const
+{
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ Assert( i == 0 || ( IsLocalPlayerWrappedGift( pItem ) && i == 1 ) );
+
+ // NOTE! Keep in sync with CEconTool_WrappedGift::GetUseCommand
+ if ( BIsDirectGift() ||
+ ( IsLocalPlayerWrappedGift( pItem ) && i == 0 ) )
+ return "#DeliverGift";
+ return "#UnwrapGift";
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+int CEconTool_WrappedGift::GetUseCommandCount( const IEconItemInterface *pItem ) const
+{
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ if ( IsLocalPlayerWrappedGift( pItem ) )
+ return 2;
+ return 1;
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+const char* CEconTool_WrappedGift::GetUseCommand( const IEconItemInterface *pItem, int i ) const
+{
+ // NOTE! Keep in sync with CEconTool_WrappedGift::GetUseCommandLocalizationToken
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ Assert( i == 0 || ( IsLocalPlayerWrappedGift( pItem ) && i == 1 ) );
+
+ // NOTE! Keep in sync with CEconTool_WrappedGift::GetUseCommand
+ if ( BIsDirectGift() ||
+ ( IsLocalPlayerWrappedGift( pItem ) && i == 0 ) )
+ return "Context_DeliverItem";
+ return "Context_UnwrapItem";
+}
+
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+const char *CEconTool_WeddingRing::GetUseCommandLocalizationToken( const IEconItemInterface *pItem, int i ) const
+{
+ Assert( i == 0 ); // We only have one action.
+ Assert( pItem );
+ Assert( pItem->GetItemDefinition() );
+ Assert( pItem->GetItemDefinition()->GetEconTool() == this );
+
+ // If the wedding ring has been gifted to us, we can use it to accept/reject the proposal.
+ // If it hasn't been gifted we can't use it at all.
+ static CSchemaAttributeDefHandle pAttrDef_GifterAccountID( "gifter account id" );
+
+ if ( !pItem->FindAttribute( pAttrDef_GifterAccountID ) )
+ return NULL;
+
+ return "#ToolAction_WeddingRing_AcceptReject";
+}
+
+#ifndef TF_CLIENT_DLL
+//---------------------------------------------------------------------------------------
+// Purpose:
+//---------------------------------------------------------------------------------------
+void CEconTool_Noisemaker::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_Noisemaker::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_WrappedGift::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_WrappedGift::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_WeddingRing::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_WeddingRing::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_BackpackExpander::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_BackpackExpander::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_AccountUpgradeToPremium::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_AccountUpgradeToPremium::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_ClaimCode::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_ClaimCode::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_Collection::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_Collection::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_StrangifierBase::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_StrangifierBase::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_PaintCan::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_PaintCan::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_Gift::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_Gift::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_DuelingMinigame::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_DuelingMinigame::OnClientUseConsumable() is unimplemented!" );
+}
+
+//-----------------------------------------------------------------------------
+void CEconTool_DuckToken::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_DuckToken::OnClientUseConsumable() is unimplemented!" );
+}
+//-----------------------------------------------------------------------------
+void CEconTool_GrantOperationPass::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_DuckToken::CEconTool_GrantOperationPass() is unimplemented!" );
+}
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CEconTool_Default::OnClientUseConsumable( CEconItemView *pItem, vgui::Panel *pParent ) const
+{
+ Assert( !"CEconTool_Default::OnClientUseConsumable() is unimplemented!" );
+}
+
+#endif // !defined( TF_CLIENT_DLL )