1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00

Untested implementation of the Blip reference type.

This commit is contained in:
Sandu Liviu Catalin 2015-10-29 22:07:15 +02:00
parent 0ccf4678a8
commit f89e0d8cd6
2 changed files with 178 additions and 7 deletions

View File

@ -4,24 +4,154 @@
namespace SqMod {
// ------------------------------------------------------------------------------------------------
bool Register_CBlip(HSQUIRRELVM vm)
SQInteger CBlip::GetWorld() const noexcept
{
if (!Register_Reference< CBlip >(vm, _SC("BaseBlip")))
if (VALID_ENTITY(m_ID))
{
LogDbg("Unable to register the base class <BaseBlip> for <CBlip> type");
RefType::Get(m_ID).World;
}
else
{
LogWrn(_SC("Attempting to <get blip world> using an invalid reference: %d"), m_ID);
}
return SQMOD_UNKNOWN;
}
return false;
// ------------------------------------------------------------------------------------------------
SQInteger CBlip::GetScale() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Scale;
}
else
{
LogWrn(_SC("Attempting to <get blip scale> using an invalid reference: %d"), m_ID);
}
return SQMOD_UNKNOWN;
}
// ------------------------------------------------------------------------------------------------
const Vector3 & CBlip::GetPosition() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Position;
}
else
{
LogWrn(_SC("Attempting to <get blip position> using an invalid reference: %d"), m_ID);
}
LogDbg("Beginning registration of <CBlip> type");
return Vector3::NIL;
}
// ------------------------------------------------------------------------------------------------
SQFloat CBlip::GetPositionX() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Position.x;
}
else
{
LogWrn(_SC("Attempting to <get blip position> using an invalid reference: %d"), m_ID);
}
return 0.0;
}
// ------------------------------------------------------------------------------------------------
SQFloat CBlip::GetPositionY() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Position.y;
}
else
{
LogWrn(_SC("Attempting to <get blip position> using an invalid reference: %d"), m_ID);
}
return 0.0;
}
// ------------------------------------------------------------------------------------------------
SQFloat CBlip::GetPositionZ() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Position.z;
}
else
{
LogWrn(_SC("Attempting to <get blip position> using an invalid reference: %d"), m_ID);
}
return 0.0;
}
// ------------------------------------------------------------------------------------------------
const Color4 & CBlip::GetColor() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).Color;
}
else
{
LogWrn(_SC("Attempting to <get blip color> using an invalid reference: %d"), m_ID);
}
return Color4::NIL;
}
// ------------------------------------------------------------------------------------------------
SQInt32 CBlip::GetSprID() const noexcept
{
if (VALID_ENTITY(m_ID))
{
RefType::Get(m_ID).SprID;
}
else
{
LogWrn(_SC("Attempting to <get blip sprite> using an invalid reference: %d"), m_ID);
}
return SQMOD_UNKNOWN;
}
// ================================================================================================
bool Register_CBlip(HSQUIRRELVM vm)
{
// Attempt to register the base reference type before the actual implementation
if (!Register_Reference< CBlip >(vm, _SC("BaseBlip")))
{
LogFtl("Unable to register the base class <BaseBlip> for <CBlip> type");
// Registration failed
return false;
}
// Output debugging information
LogDbg("Beginning registration of <CBlip> type");
// Attempt to register the actual reference that implements all of the entity functionality
Sqrat::RootTable(vm).Bind(_SC("CBlip"), Sqrat::DerivedClass< CBlip, Reference< CBlip > >(vm, _SC("CBlip"))
/* Constructors */
.Ctor()
.Ctor< SQInt32 >()
/* Properties */
.Prop(_SC("world"), &CBlip::GetWorld)
.Prop(_SC("scale"), &CBlip::GetScale)
.Prop(_SC("pos"), &CBlip::GetPosition)
.Prop(_SC("position"), &CBlip::GetPosition)
.Prop(_SC("color"), &CBlip::GetColor)
.Prop(_SC("spr_id"), &CBlip::GetSprID)
.Prop(_SC("pos_x"), &CBlip::GetPositionX)
.Prop(_SC("pos_y"), &CBlip::GetPositionY)
.Prop(_SC("pos_z"), &CBlip::GetPositionZ)
);
// Output debugging information
LogDbg("Registration of <CBlip> type was successful");
// Registration succeeded
return true;
}

View File

@ -13,8 +13,49 @@ namespace SqMod {
class CBlip : public Reference< CBlip >
{
public:
// --------------------------------------------------------------------------------------------
using RefType::Reference;
/* --------------------------------------------------------------------------------------------
*
*/
SQInteger GetWorld() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
SQInteger GetScale() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
const Vector3 & GetPosition() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
SQFloat GetPositionX() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
SQFloat GetPositionY() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
SQFloat GetPositionZ() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
const Color4 & GetColor() const noexcept;
/* --------------------------------------------------------------------------------------------
*
*/
SQInt32 GetSprID() const noexcept;
};
} // Namespace:: SqMod