Add GetRoom script function for all related object types

This commit is contained in:
Lwmte 2022-12-25 12:42:54 +02:00
parent e6f51fab3c
commit b68b08ade1
8 changed files with 44 additions and 7 deletions

View file

@ -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";

View file

@ -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<Room> AIObject::GetRoom() const
{
return std::make_unique<Room>(g_Level.Rooms[m_aiObject.roomNumber]);
}
int AIObject::GetRoomNumber() const
{
return m_aiObject.roomNumber;
}

View file

@ -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<Room> GetRoom() const;
int GetRoomNumber() const;
void SetRoomNumber(short Room);
std::string GetName() const;

View file

@ -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<Room> CameraObject::GetRoom() const
{
return std::make_unique<Room>(g_Level.Rooms[m_camera.RoomNumber]);
}
int CameraObject::GetRoomNumber() const
{
return m_camera.RoomNumber;
}

View file

@ -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<Room> GetRoom() const;
int GetRoomNumber() const;
void SetRoomNumber(short room);
std::string GetName() const;

View file

@ -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<Room> Moveable::GetRoom() const
{
return std::make_unique<Room>(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;
}

View file

@ -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<Room> GetRoom() const;
[[nodiscard]] int GetRoomNumber() const;
void SetRoomNumber(short room);
void AttachObjCamera(short camMeshId, Moveable& mov, short targetMeshId);

View file

@ -15,7 +15,7 @@ class Room : public NamedBase<Room, ROOM_INFO&>
{
public:
using IdentifierType = std::reference_wrapper<ROOM_INFO>;
Room(ROOM_INFO& volume);
Room(ROOM_INFO& room);
~Room() = default;
Room& operator =(const Room& other) = delete;