23
23
using Robust . Shared . Containers ;
24
24
using Robust . Shared . Player ;
25
25
using Content . Shared . Whitelist ;
26
+ using Content . Shared . SS220 . MechRobot ; //SS220-AddMechToClothing
26
27
27
28
namespace Content . Server . Mech . Systems ;
28
29
@@ -50,6 +51,7 @@ public override void Initialize()
50
51
SubscribeLocalEvent < MechComponent , MapInitEvent > ( OnMapInit ) ;
51
52
SubscribeLocalEvent < MechComponent , GetVerbsEvent < AlternativeVerb > > ( OnAlternativeVerb ) ;
52
53
SubscribeLocalEvent < MechComponent , MechOpenUiEvent > ( OnOpenUi ) ;
54
+ SubscribeLocalEvent < MechComponent , MechClothingOpenUiEvent > ( OnOpenClothingUi ) ; //SS220-AddMechToClothing
53
55
SubscribeLocalEvent < MechComponent , RemoveBatteryEvent > ( OnRemoveBattery ) ;
54
56
SubscribeLocalEvent < MechComponent , MechEntryEvent > ( OnMechEntry ) ;
55
57
SubscribeLocalEvent < MechComponent , MechExitEvent > ( OnMechExit ) ;
@@ -163,6 +165,14 @@ private void OnOpenUi(EntityUid uid, MechComponent component, MechOpenUiEvent ar
163
165
ToggleMechUi ( uid , component ) ;
164
166
}
165
167
168
+ //SS220-AddMechToClothing-start
169
+ private void OnOpenClothingUi ( Entity < MechComponent > ent , ref MechClothingOpenUiEvent args )
170
+ {
171
+ args . Handled = true ;
172
+ ToggleMechClothingUi ( ent . Owner , args . Performer , ent . Comp ) ;
173
+ }
174
+ //SS220-AddMechToClothing-end
175
+
166
176
private void OnToolUseAttempt ( EntityUid uid , MechPilotComponent component , ref ToolUserAttemptUseEvent args )
167
177
{
168
178
if ( args . Target == component . Mech )
@@ -174,6 +184,11 @@ private void OnAlternativeVerb(EntityUid uid, MechComponent component, GetVerbsE
174
184
if ( ! args . CanAccess || ! args . CanInteract || component . Broken )
175
185
return ;
176
186
187
+ //SS220-AddMechToClothing-start
188
+ if ( ! TryComp < MechRobotComponent > ( uid , out var _ ) )
189
+ return ;
190
+ //SS220-AddMechToClothing-end
191
+
177
192
if ( CanInsert ( uid , args . User , component ) )
178
193
{
179
194
var enterVerb = new AlternativeVerb
@@ -197,8 +212,13 @@ private void OnAlternativeVerb(EntityUid uid, MechComponent component, GetVerbsE
197
212
args . Verbs . Add ( enterVerb ) ;
198
213
args . Verbs . Add ( openUiVerb ) ;
199
214
}
200
- else if ( ! IsEmpty ( component ) )
215
+ else if ( ! IsEmpty ( component , uid ) ) //SS220-AddMechToClothing
201
216
{
217
+ //SS220-AddMechToClothing-start
218
+ if ( ! TryComp < MechRobotComponent > ( uid , out var _ ) )
219
+ return ;
220
+ //SS220-AddMechToClothing-end
221
+
202
222
var ejectVerb = new AlternativeVerb
203
223
{
204
224
Text = Loc . GetString ( "mech-verb-exit" ) ,
@@ -229,6 +249,11 @@ private void OnMechEntry(EntityUid uid, MechComponent component, MechEntryEvent
229
249
if ( args . Cancelled || args . Handled )
230
250
return ;
231
251
252
+ //SS220-AddMechToClothing-start
253
+ if ( ! TryComp < MechRobotComponent > ( uid , out var _ ) )
254
+ return ;
255
+ //SS220-AddMechToClothing-end
256
+
232
257
if ( _whitelistSystem . IsWhitelistFail ( component . PilotWhitelist , args . User ) )
233
258
{
234
259
_popup . PopupEntity ( Loc . GetString ( "mech-no-enter" , ( "item" , uid ) ) , args . User ) ;
@@ -280,6 +305,20 @@ private void ToggleMechUi(EntityUid uid, MechComponent? component = null, Entity
280
305
UpdateUserInterface ( uid , component ) ;
281
306
}
282
307
308
+ //SS220-AddMechToClothing-start
309
+ private void ToggleMechClothingUi ( EntityUid entOwner , EntityUid argsPerformer , MechComponent ? entComp = null )
310
+ {
311
+ if ( ! Resolve ( entOwner , ref entComp ) )
312
+ return ;
313
+
314
+ if ( ! TryComp < ActorComponent > ( argsPerformer , out var actor ) )
315
+ return ;
316
+
317
+ _ui . TryToggleUi ( entOwner , MechUiKey . Key , actor . PlayerSession ) ;
318
+ UpdateUserInterface ( entOwner , entComp ) ;
319
+ }
320
+ //SS220-AddMechToClothing-end
321
+
283
322
private void ReceiveEquipmentUiMesssages < T > ( EntityUid uid , MechComponent component , T args ) where T : MechEquipmentUiMessage
284
323
{
285
324
var ev = new MechEquipmentUiMessageRelayEvent ( args ) ;
0 commit comments