mirror of
				https://github.com/VCMP-SqMod/SqMod.git
				synced 2025-10-31 14:27:18 +01:00 
			
		
		
		
	Untested implementation of the Blip reference type.
This commit is contained in:
		| @@ -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; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user