diff --git a/source/Entity/Pickup.cpp b/source/Entity/Pickup.cpp index 088e9aac..5545cdee 100644 --- a/source/Entity/Pickup.cpp +++ b/source/Entity/Pickup.cpp @@ -56,9 +56,23 @@ const String & CPickup::GetTag() const } // ------------------------------------------------------------------------------------------------ -void CPickup::SetTag(CSStr tag) +void CPickup::SetTag(const StackStrF & tag) { - m_Tag.assign(tag); + if (tag.mLen > 0) + { + m_Tag.assign(tag.mPtr, tag.mLen); + } + else + { + m_Tag.clear(); + } +} + +// ------------------------------------------------------------------------------------------------ +CPickup & CPickup::ApplyTag(StackStrF & tag) +{ + SetTag(tag); + return *this; } // ------------------------------------------------------------------------------------------------ @@ -444,6 +458,7 @@ void Register_CPickup(HSQUIRRELVM vm) .Prop(_SC("Active"), &CPickup::IsActive) // Core Methods .Func(_SC("Bind"), &CPickup::BindEvent) + .FmtFunc(_SC("SetTag"), &CPickup::ApplyTag) .Func(_SC("CustomEvent"), &CPickup::CustomEvent) // Core Overloads .Overload< bool (CPickup::*)(void) >(_SC("Destroy"), &CPickup::Destroy) diff --git a/source/Entity/Pickup.hpp b/source/Entity/Pickup.hpp index 95b59f12..248a96b4 100644 --- a/source/Entity/Pickup.hpp +++ b/source/Entity/Pickup.hpp @@ -138,7 +138,12 @@ public: /* -------------------------------------------------------------------------------------------- * Modify the associated user tag. */ - void SetTag(CSStr tag); + void SetTag(const StackStrF & tag); + + /* -------------------------------------------------------------------------------------------- + * Modify the associated user tag. + */ + CPickup & ApplyTag(StackStrF & tag); /* -------------------------------------------------------------------------------------------- * Retrieve the associated user data.