private void SetupUser(EntityUid uid, JetpackComponent component) { var user = EnsureComp <JetpackUserComponent>(uid); var relay = EnsureComp <RelayInputMoverComponent>(uid); relay.RelayEntity = component.Owner; user.Jetpack = component.Owner; }
private void SetupUser(EntityUid uid, JetpackComponent component) { var user = EnsureComp <JetpackUserComponent>(uid); user.Acceleration = component.Acceleration; user.Friction = component.Friction; user.WeightlessModifier = component.WeightlessModifier; }
private void OnJetpackToggle(EntityUid uid, JetpackComponent component, ToggleJetpackEvent args) { if (args.Handled) { return; } SetEnabled(component, !IsEnabled(uid)); }
private void OnJetpackAppearance(EntityUid uid, JetpackComponent component, ref AppearanceChangeEvent args) { args.Component.TryGetData(JetpackVisuals.Enabled, out bool enabled); var state = "icon" + (enabled ? "-on" : ""); args.Sprite?.LayerSetState(0, state); if (TryComp <ClothingComponent>(uid, out var clothing)) { clothing.EquippedPrefix = enabled ? "on" : null; } }
public void SetEnabled(JetpackComponent component, bool enabled, EntityUid?user = null) { if (IsEnabled(component.Owner) == enabled || enabled && !CanEnable(component)) { return; } if (enabled) { EnsureComp <ActiveJetpackComponent>(component.Owner); } else { RemComp <ActiveJetpackComponent>(component.Owner); } if (user == null) { Container.TryGetContainingContainer(component.Owner, out var container); user = container?.Owner; } // Can't activate if no one's using. if (user == null && enabled) { return; } if (user != null) { if (enabled) { SetupUser(user.Value, component); } else { RemoveUser(user.Value); } MovementSpeedModifier.RefreshMovementSpeedModifiers(user.Value); } TryComp <AppearanceComponent>(component.Owner, out var appearance); appearance?.SetData(JetpackVisuals.Enabled, enabled); Dirty(component); }
private void OnJetpackToggle(EntityUid uid, JetpackComponent component, ToggleJetpackEvent args) { if (args.Handled) { return; } if (TryComp <TransformComponent>(uid, out var xform) && !CanEnableOnGrid(xform.GridUid)) { if (_timing.IsFirstTimePredicted) { _popups.PopupEntity(Loc.GetString("jetpack-no-station"), uid, Filter.Entities(args.Performer)); } return; } SetEnabled(component, !IsEnabled(uid)); }
protected override bool CanEnable(JetpackComponent component) { return(TryComp <GasTankComponent>(component.Owner, out var gasTank) && !(gasTank.Air.TotalMoles < component.MoleUsage)); }
private void OnJetpackDropped(EntityUid uid, JetpackComponent component, DroppedEvent args) { SetEnabled(component, false, args.User); }
private void OnJetpackCanWeightlessMove(EntityUid uid, JetpackComponent component, ref CanWeightlessMoveEvent args) { args.CanMove = true; }
protected virtual bool CanEnable(JetpackComponent component) { return(true); }
private void OnJetpackGetAction(EntityUid uid, JetpackComponent component, GetItemActionsEvent args) { args.Actions.Add(component.ToggleAction); }
protected override bool CanEnable(JetpackComponent component) { // No predicted atmos so you'd have to do a lot of funny to get this working. return(false); }
protected abstract bool CanEnable(JetpackComponent component);