Skip to content

Commit b766ed1

Browse files
authored
Fix building OOP API (#3614)
* Fix building OOP API * style fixes
1 parent 79a6c44 commit b766ed1

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

Client/mods/deathmatch/logic/lua/CLuaMain.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ void CLuaMain::InitClasses(lua_State* luaVM)
127127
CLuaVehicleDefs::AddClass(luaVM);
128128
CLuaWaterDefs::AddClass(luaVM);
129129
CLuaWeaponDefs::AddClass(luaVM);
130+
CLuaBuildingDefs::AddClass(luaVM);
130131

131132
CLuaShared::AddClasses(luaVM);
132133
}

Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ void CLuaBuildingDefs::AddClass(lua_State* luaVM)
3030

3131
lua_classfunction(luaVM, "create", "createBuilding");
3232

33-
lua_registerclass(luaVM, "Building");
33+
lua_registerclass(luaVM, "Building", "Element");
3434
}
3535

36-
CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, uint16_t modelId, CVector pos, CVector rot, std::optional<uint8_t> interior)
36+
CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, std::uint16_t modelId, CVector pos, std::optional<CVector> rot, std::optional<std::uint8_t> interior)
3737
{
3838
CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM);
3939

@@ -48,11 +48,14 @@ CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, uint16
4848
if (!CClientBuildingManager::IsValidPosition(pos))
4949
throw std::invalid_argument("Position is outside of game world");
5050

51-
ConvertDegreesToRadians(rot);
51+
if (rot.has_value())
52+
ConvertDegreesToRadians(rot.value());
53+
else
54+
rot.emplace(CVector(0, 0, 0));
5255

5356
m_pBuildingManager->ResizePoolIfNeeds();
5457

55-
CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot, interior.value_or(0));
58+
CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot.value() , interior.value_or(0));
5659

5760
CClientEntity* pRoot = pResource->GetResourceDynamicEntity();
5861
pBuilding->SetParent(pRoot);

Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class CLuaBuildingDefs : public CLuaDefs
1919
static void AddClass(lua_State* luaVM);
2020

2121
// Buiding create funcs
22-
static CClientBuilding* CreateBuilding(lua_State* const luaVM, uint16_t modelId, CVector pos, CVector rot, std::optional<uint8_t> interior);
22+
static CClientBuilding* CreateBuilding(lua_State* const luaVM, std::uint16_t modelId, CVector pos, std::optional<CVector> rot, std::optional<std::uint8_t> interior);
2323
static void RemoveAllGameBuildings();
2424
static void RestoreGameBuildings();
2525
};

0 commit comments

Comments
 (0)