Skip to content

Commit

Permalink
Fix building OOP API
Browse files Browse the repository at this point in the history
  • Loading branch information
TheNormalnij committed Jul 28, 2024
1 parent 1e21c53 commit be45cc1
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
1 change: 1 addition & 0 deletions Client/mods/deathmatch/logic/lua/CLuaMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ void CLuaMain::InitClasses(lua_State* luaVM)
CLuaVehicleDefs::AddClass(luaVM);
CLuaWaterDefs::AddClass(luaVM);
CLuaWeaponDefs::AddClass(luaVM);
CLuaBuildingDefs::AddClass(luaVM);

CLuaShared::AddClasses(luaVM);
}
Expand Down
15 changes: 11 additions & 4 deletions Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ void CLuaBuildingDefs::AddClass(lua_State* luaVM)

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

lua_registerclass(luaVM, "Building");
lua_registerclass(luaVM, "Building", "Element");
}

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

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

ConvertDegreesToRadians(rot);
if (rot.has_value())
{
ConvertDegreesToRadians(rot.value());
}
else
{
rot.emplace(CVector(0, 0, 0));
}

m_pBuildingManager->ResizePoolIfNeeds();

CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot, interior.value_or(0));
CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot.value() , interior.value_or(0));

CClientEntity* pRoot = pResource->GetResourceDynamicEntity();
pBuilding->SetParent(pRoot);
Expand Down
2 changes: 1 addition & 1 deletion Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class CLuaBuildingDefs : public CLuaDefs
static void AddClass(lua_State* luaVM);

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

0 comments on commit be45cc1

Please sign in to comment.