diff --git a/TombEngine/Scripting/Internal/ReservedScriptNames.h b/TombEngine/Scripting/Internal/ReservedScriptNames.h index da8561531..b3a965157 100644 --- a/TombEngine/Scripting/Internal/ReservedScriptNames.h +++ b/TombEngine/Scripting/Internal/ReservedScriptNames.h @@ -92,6 +92,7 @@ static constexpr char ScriptReserved_SwapMesh[] = "SwapMesh"; static constexpr char ScriptReserved_UnswapMesh[] = "UnswapMesh"; static constexpr char ScriptReserved_GetHitStatus[] = "GetHitStatus"; static constexpr char ScriptReserved_GetActive[] = "GetActive"; +static constexpr char ScriptReserved_GetRoom[] = "GetRoom"; static constexpr char ScriptReserved_GetRoomNumber[] = "GetRoomNumber"; static constexpr char ScriptReserved_SetRoomNumber[] = "SetRoomNumber"; static constexpr char ScriptReserved_GetStrength[] = "GetStrength"; diff --git a/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.cpp b/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.cpp index 4be7f9260..589d6e829 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.cpp +++ b/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.cpp @@ -58,6 +58,11 @@ void AIObject::Register(sol::table & parent) // @tparam string name The object's new name ScriptReserved_SetName, &AIObject::SetName, + /// Get the current room of the object + // @function AIObject:GetRoom + // @treturn Room current room of the object + ScriptReserved_GetRoom, &AIObject::GetRoom, + /// Get the current room number of the object // @function AIObject:GetRoomNumber // @treturn int number representing the current room of the object @@ -146,7 +151,12 @@ void AIObject::SetName(std::string const & id) } } -short AIObject::GetRoomNumber() const +std::unique_ptr AIObject::GetRoom() const +{ + return std::make_unique(g_Level.Rooms[m_aiObject.roomNumber]); +} + +int AIObject::GetRoomNumber() const { return m_aiObject.roomNumber; } diff --git a/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.h b/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.h index d3057f88b..0ea8b6c0b 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.h +++ b/TombEngine/Scripting/Internal/TEN/Objects/AIObject/AIObject.h @@ -1,6 +1,7 @@ #pragma once #include "Objects/NamedBase.h" +#include "Objects/Room/RoomObject.h" #include "Specific/level.h" namespace sol { @@ -24,7 +25,8 @@ public: Vec3 GetPos() const; void SetPos(Vec3 const& pos); - short GetRoomNumber() const; + std::unique_ptr GetRoom() const; + int GetRoomNumber() const; void SetRoomNumber(short Room); std::string GetName() const; diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.cpp b/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.cpp index 60a7b66c2..74cbcbeee 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.cpp +++ b/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.cpp @@ -48,6 +48,11 @@ void CameraObject::Register(sol::table & parent) // @tparam string name The camera's new name ScriptReserved_SetName, &CameraObject::SetName, + /// Get the current room of the camera + // @function CameraObject:GetRoom + // @treturn Room current room of the camera + ScriptReserved_GetRoom, &CameraObject::GetRoom, + /// Get the current room number of the camera // @function Camera:GetRoomNumber // @treturn int number representing the current room of the camera @@ -96,7 +101,12 @@ void CameraObject::SetName(std::string const & id) } } -short CameraObject::GetRoomNumber() const +std::unique_ptr CameraObject::GetRoom() const +{ + return std::make_unique(g_Level.Rooms[m_camera.RoomNumber]); +} + +int CameraObject::GetRoomNumber() const { return m_camera.RoomNumber; } diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.h b/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.h index b093e4b2b..206c4847e 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.h +++ b/TombEngine/Scripting/Internal/TEN/Objects/Camera/CameraObject.h @@ -1,6 +1,7 @@ #pragma once #include "Objects/NamedBase.h" +#include "Objects/Room/RoomObject.h" struct LevelCameraInfo; @@ -24,7 +25,8 @@ public: Vec3 GetPos() const; void SetPos(Vec3 const& pos); - short GetRoomNumber() const; + std::unique_ptr GetRoom() const; + int GetRoomNumber() const; void SetRoomNumber(short room); std::string GetName() const; diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp index ef8514d32..bde073ae0 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp +++ b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp @@ -410,6 +410,8 @@ ScriptReserved_GetSlotHP, & Moveable::GetSlotHP, // @treturn bool true if the moveable is active ScriptReserved_GetActive, &Moveable::GetActive, + ScriptReserved_GetRoom, &Moveable::GetRoom, + ScriptReserved_GetRoomNumber, &Moveable::GetRoomNumber, ScriptReserved_SetRoomNumber, &Moveable::SetRoomNumber, @@ -849,10 +851,18 @@ bool Moveable::GetHitStatus() const return m_item->HitStatus; } +/// Get the current room of the object +// @function Moveable:GetRoom +// @treturn Room current room of the object +std::unique_ptr Moveable::GetRoom() const +{ + return std::make_unique(g_Level.Rooms[m_item->RoomNumber]); +} + /// Get the current room number of the object // @function Moveable:GetRoomNumber // @treturn int number representing the current room of the object -short Moveable::GetRoomNumber() const +int Moveable::GetRoomNumber() const { return m_item->RoomNumber; } diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.h b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.h index 22617d2f7..b33f502f9 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.h +++ b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.h @@ -1,6 +1,7 @@ #pragma once #include "ScriptUtil.h" +#include "Objects/Room/RoomObject.h" #include "Objects/NamedBase.h" class LevelFunc; @@ -101,7 +102,8 @@ public: [[nodiscard]] bool GetActive() const; void SetActive(bool active); - [[nodiscard]] short GetRoomNumber() const; + std::unique_ptr GetRoom() const; + [[nodiscard]] int GetRoomNumber() const; void SetRoomNumber(short room); void AttachObjCamera(short camMeshId, Moveable& mov, short targetMeshId); diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Room/RoomObject.h b/TombEngine/Scripting/Internal/TEN/Objects/Room/RoomObject.h index cfaae6c16..555522da0 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Room/RoomObject.h +++ b/TombEngine/Scripting/Internal/TEN/Objects/Room/RoomObject.h @@ -15,7 +15,7 @@ class Room : public NamedBase { public: using IdentifierType = std::reference_wrapper; - Room(ROOM_INFO& volume); + Room(ROOM_INFO& room); ~Room() = default; Room& operator =(const Room& other) = delete;