Skip to content

Commit 4f0f087

Browse files
authored
Merge branch 'master' into client_c20
2 parents 6383ddf + b404523 commit 4f0f087

File tree

19 files changed

+169
-19
lines changed

19 files changed

+169
-19
lines changed

Client/game_sa/CHeliSA.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,47 @@
1515

1616
class CHeliSAInterface : public CAutomobileSAInterface
1717
{
18+
public:
19+
std::uint8_t m_heliFlags;
20+
21+
std::uint8_t _pad1[3];
22+
std::uint32_t m_leftRightSkid;
23+
std::uint32_t m_steeringUpDown;
24+
std::uint32_t m_steeringLeftRight;
25+
std::uint32_t m_accelerationBreakStatus;
26+
std::uint32_t field_99C;
27+
std::uint32_t m_rotorZ;
28+
std::uint32_t m_secondRotorZ;
29+
std::uint32_t m_maxAltitude;
30+
std::uint32_t field_9AC;
31+
std::uint32_t m_minAltitude;
32+
std::uint32_t field_9B4;
33+
std::uint8_t field_9B8;
34+
std::uint8_t m_numSwatOccupants;
35+
std::uint8_t m_swatIDs[4];
36+
37+
std::uint8_t _pad2[2];
38+
std::uint32_t field_9C0[4];
39+
std::uint32_t field_9D0;
40+
41+
std::uint32_t m_particlesList;
42+
std::uint8_t field_9D8[24];
43+
std::uint32_t field_9F0;
44+
CVector m_searchLightTarget;
45+
std::uint32_t m_searchLightIntensity;
46+
std::uint32_t field_A04;
47+
std::uint32_t field_A08;
48+
std::uint32_t m_gunflashFx;
49+
std::uint8_t m_firingMultiplier;
50+
std::uint8_t m_searchLightEnabled;
51+
std::uint8_t _pad3[2];
52+
std::uint32_t field_A14;
1853
};
54+
static_assert(sizeof(CHeliSAInterface) == 0xA18, "Invalid size for CHeliSAInterface");
1955

2056
class CHeliSA final : public virtual CHeli, public virtual CAutomobileSA
2157
{
2258
public:
2359
CHeliSA(CHeliSAInterface* pInterface);
60+
CHeliSAInterface* GetHeliInterface() noexcept { return reinterpret_cast<CHeliSAInterface*>(GetInterface()); }
2461
};

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/lua/CLuaTimerManager.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ void CLuaTimerManager::DoPulse(CLuaMain* pLuaMain)
2121

2222
// Use a separate queue to avoid trouble
2323
for (CFastList<CLuaTimer*>::const_iterator iter = m_TimerList.begin(); iter != m_TimerList.end(); iter++)
24-
m_ProcessQueue.push_back(*iter);
24+
{
25+
if (!(*iter)->IsPaused())
26+
m_ProcessQueue.push_back(*iter);
27+
}
2528

2629
while (!m_ProcessQueue.empty())
2730
{
@@ -108,6 +111,16 @@ void CLuaTimerManager::RemoveAllTimers()
108111
m_pProcessingTimer = NULL;
109112
}
110113

114+
void CLuaTimerManager::SetTimerPaused(CLuaTimer* timer, bool paused)
115+
{
116+
assert(timer);
117+
118+
timer->SetPaused(paused);
119+
if (paused)
120+
ListRemove(m_ProcessQueue, timer);
121+
}
122+
123+
111124
void CLuaTimerManager::ResetTimer(CLuaTimer* pLuaTimer)
112125
{
113126
assert(pLuaTimer);

Client/mods/deathmatch/logic/lua/CLuaTimerManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class CLuaTimerManager
3636
void RemoveAllTimers();
3737
unsigned long GetTimerCount() const { return m_TimerList.size(); }
3838

39+
void SetTimerPaused(CLuaTimer* timer, bool paused);
3940
void ResetTimer(CLuaTimer* pLuaTimer);
4041

4142
CFastList<CLuaTimer*>::const_iterator IterBegin() { return m_TimerList.begin(); }

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
};

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
*****************************************************************************/
1111

1212
#include "StdInc.h"
13+
#include <lua/CLuaFunctionParser.h>
1314

1415
void CLuaTimerDefs::LoadFunctions()
1516
{
1617
constexpr static const std::pair<const char*, lua_CFunction> functions[]{
17-
{"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer},
18-
{"getTimers", GetTimers}, {"isTimer", IsTimer}, {"getTimerDetails", GetTimerDetails},
18+
{"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer},
19+
{"setTimerPaused", ArgumentParser<SetTimerPaused>},{"isTimerPaused", ArgumentParser<IsTimerPaused>},
20+
{"getTimers", GetTimers}, {"isTimer", IsTimer}, {"getTimerDetails", GetTimerDetails},
1921
};
2022

2123
// Add functions
@@ -31,10 +33,10 @@ void CLuaTimerDefs::AddClass(lua_State* luaVM)
3133
lua_classfunction(luaVM, "destroy", "killTimer");
3234
lua_classfunction(luaVM, "reset", "resetTimer");
3335
lua_classfunction(luaVM, "isValid", "isTimer");
34-
3536
lua_classfunction(luaVM, "getDetails", "getTimerDetails");
3637

3738
lua_classvariable(luaVM, "valid", NULL, "isTimer");
39+
lua_classvariable(luaVM, "paused", "setTimerPaused", "isTimerPaused");
3840

3941
lua_registerclass(luaVM, "Timer");
4042
}
@@ -111,6 +113,22 @@ int CLuaTimerDefs::KillTimer(lua_State* luaVM)
111113
return 1;
112114
}
113115

116+
bool CLuaTimerDefs::IsTimerPaused(CLuaTimer* timer) noexcept
117+
{
118+
return timer->IsPaused();
119+
}
120+
121+
bool CLuaTimerDefs::SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused)
122+
{
123+
// bool setTimerPaused ( timer theTimer, bool paused )
124+
CLuaMain* luaMain = m_pLuaManager->GetVirtualMachine(luaVM);
125+
if (!luaMain)
126+
return false;
127+
128+
luaMain->GetTimerManager()->SetTimerPaused(timer, paused);
129+
return true;
130+
}
131+
114132
int CLuaTimerDefs::ResetTimer(lua_State* luaVM)
115133
{
116134
// bool resetTimer ( timer theTimer )

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ class CLuaTimerDefs : public CLuaDefs
2424
LUA_DECLARE(GetTimers);
2525
LUA_DECLARE(IsTimer);
2626
LUA_DECLARE(GetTimerDetails);
27+
static bool IsTimerPaused(CLuaTimer* timer) noexcept;
28+
static bool SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused);
2729
};

Server/dbconmy/premake5.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ project "Dbconmy"
4141
includedirs {
4242
os.findheader("mysql.h", {
4343
"/usr/local/opt/mysql/include/mysql",
44+
"/opt/homebrew/include/mysql",
4445
"/opt/osxcross/macports/pkgs/opt/local/include/mysql8/mysql",
4546
})
4647
}

Server/mods/deathmatch/logic/CResourceChecker.Data.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,9 @@ namespace
168168

169169
// Base Encoding & Decoding
170170
{false, "base64Encode", "encodeString"},
171-
{false, "base64Decode", "decodeString"}
171+
{false, "base64Decode", "decodeString"},
172+
173+
{false, "setHelicopterRotorSpeed", "setVehicleRotorSpeed"}
172174
};
173175

174176
SDeprecatedItem serverDeprecatedList[] = {

0 commit comments

Comments
 (0)