Skip to content

Commit 759edbb

Browse files
Cleanup runtime implementation
1 parent 7c6b90d commit 759edbb

File tree

2 files changed

+73
-88
lines changed

2 files changed

+73
-88
lines changed

runtime/include/CSharpResourceImpl.h

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -137,77 +137,76 @@ class CSharpResourceImpl : public alt::IResource::Impl {
137137

138138
void* GetEntityPointer(alt::IEntity* entity);
139139

140+
void ResetDelegates();
141+
140142
public:
141143
CSharpResourceImpl(alt::ICore* server, CoreClr* coreClr, alt::IResource* resource);
142144

143145
~CSharpResourceImpl() override;
144146

145147
bool MakeClient(alt::IResource::CreationInfo* info, alt::Array<alt::String> files) override;
146148

147-
CheckpointDelegate_t OnCheckpointDelegate;
148-
149-
ClientEventDelegate_t OnClientEventDelegate;
149+
CheckpointDelegate_t OnCheckpointDelegate = nullptr;
150150

151-
PlayerConnectDelegate_t OnPlayerConnectDelegate;
151+
ClientEventDelegate_t OnClientEventDelegate = nullptr;
152152

153-
PlayerDamageDelegate_t OnPlayerDamageDelegate;
153+
PlayerConnectDelegate_t OnPlayerConnectDelegate = nullptr;
154154

155-
PlayerDeathDelegate_t OnPlayerDeathDelegate;
155+
PlayerDamageDelegate_t OnPlayerDamageDelegate = nullptr;
156156

157-
PlayerDisconnectDelegate_t OnPlayerDisconnectDelegate;
157+
PlayerDeathDelegate_t OnPlayerDeathDelegate = nullptr;
158158

159-
PlayerRemoveDelegate_t OnPlayerRemoveDelegate;
159+
PlayerDisconnectDelegate_t OnPlayerDisconnectDelegate = nullptr;
160160

161-
VehicleRemoveDelegate_t OnVehicleRemoveDelegate;
161+
PlayerRemoveDelegate_t OnPlayerRemoveDelegate = nullptr;
162162

163-
ServerEventDelegate_t OnServerEventDelegate;
163+
VehicleRemoveDelegate_t OnVehicleRemoveDelegate = nullptr;
164164

165-
PlayerChangeVehicleSeatDelegate_t OnPlayerChangeVehicleSeatDelegate;
165+
ServerEventDelegate_t OnServerEventDelegate = nullptr;
166166

167-
PlayerEnterVehicleDelegate_t OnPlayerEnterVehicleDelegate;
167+
PlayerChangeVehicleSeatDelegate_t OnPlayerChangeVehicleSeatDelegate = nullptr;
168168

169-
PlayerLeaveVehicleDelegate_t OnPlayerLeaveVehicleDelegate;
169+
PlayerEnterVehicleDelegate_t OnPlayerEnterVehicleDelegate = nullptr;
170170

171-
StopDelegate_t OnStopDelegate;
171+
PlayerLeaveVehicleDelegate_t OnPlayerLeaveVehicleDelegate = nullptr;
172172

173-
MainDelegate_t MainDelegate;
173+
StopDelegate_t OnStopDelegate = nullptr;
174174

175-
TickDelegate_t OnTickDelegate;
175+
MainDelegate_t MainDelegate = nullptr;
176176

177-
CreatePlayerDelegate_t OnCreatePlayerDelegate;
177+
TickDelegate_t OnTickDelegate = nullptr;
178178

179-
RemovePlayerDelegate_t OnRemovePlayerDelegate;
179+
CreatePlayerDelegate_t OnCreatePlayerDelegate = nullptr;
180180

181-
CreateVehicleDelegate_t OnCreateVehicleDelegate;
181+
RemovePlayerDelegate_t OnRemovePlayerDelegate = nullptr;
182182

183-
RemoveVehicleDelegate_t OnRemoveVehicleDelegate;
183+
CreateVehicleDelegate_t OnCreateVehicleDelegate = nullptr;
184184

185-
CreateBlipDelegate_t OnCreateBlipDelegate;
185+
RemoveVehicleDelegate_t OnRemoveVehicleDelegate = nullptr;
186186

187-
RemoveBlipDelegate_t OnRemoveBlipDelegate;
187+
CreateBlipDelegate_t OnCreateBlipDelegate = nullptr;
188188

189-
CreateCheckpointDelegate_t OnCreateCheckpointDelegate;
189+
RemoveBlipDelegate_t OnRemoveBlipDelegate = nullptr;
190190

191-
RemoveCheckpointDelegate_t OnRemoveCheckpointDelegate;
191+
CreateCheckpointDelegate_t OnCreateCheckpointDelegate = nullptr;
192192

193-
OnCreateVoiceChannelDelegate_t OnCreateVoiceChannelDelegate;
193+
RemoveCheckpointDelegate_t OnRemoveCheckpointDelegate = nullptr;
194194

195-
OnRemoveVoiceChannelDelegate_t OnRemoveVoiceChannelDelegate;
195+
OnCreateVoiceChannelDelegate_t OnCreateVoiceChannelDelegate = nullptr;
196196

197-
OnConsoleCommandDelegate_t OnConsoleCommandDelegate;
197+
OnRemoveVoiceChannelDelegate_t OnRemoveVoiceChannelDelegate = nullptr;
198198

199-
MetaChangeDelegate_t OnMetaChangeDelegate;
199+
OnConsoleCommandDelegate_t OnConsoleCommandDelegate = nullptr;
200200

201-
MetaChangeDelegate_t OnSyncedMetaChangeDelegate;
201+
MetaChangeDelegate_t OnMetaChangeDelegate = nullptr;
202202

203-
OnCreateColShapeDelegate_t OnCreateColShapeDelegate;
203+
MetaChangeDelegate_t OnSyncedMetaChangeDelegate = nullptr;
204204

205-
OnRemoveColShapeDelegate_t OnRemoveColShapeDelegate;
205+
OnCreateColShapeDelegate_t OnCreateColShapeDelegate = nullptr;
206206

207-
ColShapeDelegate_t ColShapeDelegate;
207+
OnRemoveColShapeDelegate_t OnRemoveColShapeDelegate = nullptr;
208208

209-
void* runtimeHost;
210-
unsigned int domainId;
209+
ColShapeDelegate_t ColShapeDelegate = nullptr;
211210

212211
alt::Array<CustomInvoker*>* invokers;
213212
CoreClr* coreClr;

runtime/src/CSharpResourceImpl.cpp

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,44 @@ CSharpResourceImpl::CSharpResourceImpl(alt::ICore* server, CoreClr* coreClr, alt
66
this->server = server;
77
this->invokers = new alt::Array<CustomInvoker*>();
88
this->coreClr = coreClr;
9+
}
910

10-
runtimeHost = nullptr;
11-
domainId = 0;
12-
MainDelegate = nullptr;
13-
OnCheckpointDelegate = nullptr;
14-
OnClientEventDelegate = nullptr;
15-
OnPlayerConnectDelegate = nullptr;
16-
OnPlayerDamageDelegate = nullptr;
17-
OnPlayerDeathDelegate = nullptr;
18-
OnPlayerDisconnectDelegate = nullptr;
19-
OnPlayerRemoveDelegate = nullptr;
20-
OnVehicleRemoveDelegate = nullptr;
21-
OnServerEventDelegate = nullptr;
22-
OnPlayerChangeVehicleSeatDelegate = nullptr;
23-
OnPlayerEnterVehicleDelegate = nullptr;
24-
OnPlayerLeaveVehicleDelegate = nullptr;
25-
OnStopDelegate = nullptr;
26-
OnTickDelegate = nullptr;
27-
OnCreatePlayerDelegate = nullptr;
28-
OnRemovePlayerDelegate = nullptr;
29-
OnCreateVehicleDelegate = nullptr;
30-
OnRemoveVehicleDelegate = nullptr;
31-
OnCreateBlipDelegate = nullptr;
32-
OnRemoveBlipDelegate = nullptr;
33-
OnCreateCheckpointDelegate = nullptr;
34-
OnRemoveCheckpointDelegate = nullptr;
35-
OnCreateVoiceChannelDelegate = nullptr;
36-
OnRemoveVoiceChannelDelegate = nullptr;
37-
OnConsoleCommandDelegate = nullptr;
38-
OnMetaChangeDelegate = nullptr;
39-
OnSyncedMetaChangeDelegate = nullptr;
40-
OnCreateColShapeDelegate = nullptr;
41-
OnRemoveColShapeDelegate = nullptr;
42-
ColShapeDelegate = nullptr;
11+
void CSharpResourceImpl::ResetDelegates() {
12+
MainDelegate = [](auto var, auto var2, auto var3, auto var4){ };
13+
OnCheckpointDelegate = [](auto var, auto var2, auto var3, auto var4){ };
14+
OnClientEventDelegate = [](auto var, auto var2, auto var3){ };
15+
OnPlayerConnectDelegate = [](auto var, auto var2, auto var3){ };
16+
OnPlayerDamageDelegate = [](auto var, auto var2, auto var3, auto var4, auto var5, auto var6){ };
17+
OnPlayerDeathDelegate = [](auto var, auto var2, auto var3, auto var4){ };
18+
OnPlayerDisconnectDelegate = [](auto var, auto var2){ };
19+
OnPlayerRemoveDelegate = [](auto var){ };
20+
OnVehicleRemoveDelegate = [](auto var){ };
21+
OnServerEventDelegate = [](auto var, auto var2){ };
22+
OnPlayerChangeVehicleSeatDelegate = [](auto var, auto var2, auto var3, auto var4){ };
23+
OnPlayerEnterVehicleDelegate = [](auto var, auto var2, auto var3){ };
24+
OnPlayerLeaveVehicleDelegate = [](auto var, auto var2, auto var3){ };
25+
OnStopDelegate = [](){ };
26+
OnTickDelegate = [](){ };
27+
OnCreatePlayerDelegate = [](auto var, auto var2){ };
28+
OnRemovePlayerDelegate = [](auto var){ };
29+
OnCreateVehicleDelegate = [](auto var, auto var2){ };
30+
OnRemoveVehicleDelegate = [](auto var){ };
31+
OnCreateBlipDelegate = [](auto var){ };
32+
OnRemoveBlipDelegate = [](auto var){ };
33+
OnCreateCheckpointDelegate = [](auto var){ };
34+
OnRemoveCheckpointDelegate = [](auto var){ };
35+
OnCreateVoiceChannelDelegate = [](auto var){ };
36+
OnRemoveVoiceChannelDelegate = [](auto var){ };
37+
OnConsoleCommandDelegate = [](auto var, auto var2){ };
38+
OnMetaChangeDelegate = [](auto var, auto var2, auto var3, auto var4){ };
39+
OnSyncedMetaChangeDelegate = [](auto var, auto var2, auto var3, auto var4){ };
40+
OnCreateColShapeDelegate = [](auto var){ };
41+
OnRemoveColShapeDelegate = [](auto var){ };
42+
ColShapeDelegate = [](auto var, auto var2, auto var3, auto var4){ };
4343
}
4444

4545
bool CSharpResourceImpl::Start() {
46+
ResetDelegates();
4647
coreClr->ExecuteManagedResource(this->resource->GetPath().CStr(), this->resource->GetName().CStr(), this->resource->GetMain().CStr(),
4748
this->resource);
4849
if (MainDelegate == nullptr) return false;
@@ -51,36 +52,21 @@ bool CSharpResourceImpl::Start() {
5152
}
5253

5354
bool CSharpResourceImpl::Stop() {
54-
for (alt::Size i = 0, length = invokers->GetSize(); i < length; i++) {
55-
auto invoker = (*invokers)[i];
56-
delete invoker;
57-
}
58-
delete invokers;
5955
if (OnStopDelegate == nullptr) return false;
6056
OnStopDelegate();
6157
coreClr->ExecuteManagedResourceUnload(this->resource->GetPath().CStr(), this->resource->GetMain().CStr());
58+
ResetDelegates();
6259
return true;
6360
}
6461

6562
CSharpResourceImpl::~CSharpResourceImpl() {
66-
/*int i = 0;
67-
for (auto resource : *resourcesCache) {
68-
if (resource == this) {
69-
auto newResourcesCache = new alt::Array<CSharpResourceImpl*>;
70-
for (auto cloneResource : *resourcesCache) {
71-
if (cloneResource != this) {
72-
newResourcesCache->Push(cloneResource);
73-
}
74-
}
75-
free(resourcesCache);
76-
resourcesCache = newResourcesCache;
77-
break;
78-
}
79-
i++;
80-
}*/
63+
for (alt::Size i = 0, length = invokers->GetSize(); i < length; i++) {
64+
auto invoker = (*invokers)[i];
65+
delete invoker;
66+
}
67+
delete invokers;
8168
}
8269

83-
//TODO: needs entity type enum value for undefined
8470
bool CSharpResourceImpl::OnEvent(const alt::CEvent* ev) {
8571
if (ev == nullptr) return true;
8672
switch (ev->GetType()) {

0 commit comments

Comments
 (0)