1
0

SalvageSystem.ExpeditionConsole.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Content.Shared.Shuttles.Components;
  2. using Content.Shared.Procedural;
  3. using Content.Shared.Salvage.Expeditions;
  4. using Content.Shared.Dataset;
  5. using Robust.Shared.Prototypes;
  6. namespace Content.Server.Salvage;
  7. public sealed partial class SalvageSystem
  8. {
  9. [ValidatePrototypeId<EntityPrototype>]
  10. public const string CoordinatesDisk = "CoordinatesDisk";
  11. private void OnSalvageClaimMessage(EntityUid uid, SalvageExpeditionConsoleComponent component, ClaimSalvageMessage args)
  12. {
  13. var station = _station.GetOwningStation(uid);
  14. if (!TryComp<SalvageExpeditionDataComponent>(station, out var data) || data.Claimed)
  15. return;
  16. if (!data.Missions.TryGetValue(args.Index, out var missionparams))
  17. return;
  18. var cdUid = Spawn(CoordinatesDisk, Transform(uid).Coordinates);
  19. SpawnMission(missionparams, station.Value, cdUid);
  20. data.ActiveMission = args.Index;
  21. var mission = GetMission(_prototypeManager.Index<SalvageDifficultyPrototype>(missionparams.Difficulty), missionparams.Seed);
  22. data.NextOffer = _timing.CurTime + mission.Duration + TimeSpan.FromSeconds(1);
  23. _labelSystem.Label(cdUid, GetFTLName(_prototypeManager.Index<LocalizedDatasetPrototype>("NamesBorer"), missionparams.Seed));
  24. _audio.PlayPvs(component.PrintSound, uid);
  25. UpdateConsoles((station.Value, data));
  26. }
  27. private void OnSalvageConsoleInit(Entity<SalvageExpeditionConsoleComponent> console, ref ComponentInit args)
  28. {
  29. UpdateConsole(console);
  30. }
  31. private void OnSalvageConsoleParent(Entity<SalvageExpeditionConsoleComponent> console, ref EntParentChangedMessage args)
  32. {
  33. UpdateConsole(console);
  34. }
  35. private void UpdateConsoles(Entity<SalvageExpeditionDataComponent> component)
  36. {
  37. var state = GetState(component);
  38. var query = AllEntityQuery<SalvageExpeditionConsoleComponent, UserInterfaceComponent, TransformComponent>();
  39. while (query.MoveNext(out var uid, out _, out var uiComp, out var xform))
  40. {
  41. var station = _station.GetOwningStation(uid, xform);
  42. if (station != component.Owner)
  43. continue;
  44. _ui.SetUiState((uid, uiComp), SalvageConsoleUiKey.Expedition, state);
  45. }
  46. }
  47. private void UpdateConsole(Entity<SalvageExpeditionConsoleComponent> component)
  48. {
  49. var station = _station.GetOwningStation(component);
  50. SalvageExpeditionConsoleState state;
  51. if (TryComp<SalvageExpeditionDataComponent>(station, out var dataComponent))
  52. {
  53. state = GetState(dataComponent);
  54. }
  55. else
  56. {
  57. state = new SalvageExpeditionConsoleState(TimeSpan.Zero, false, true, 0, new List<SalvageMissionParams>());
  58. }
  59. _ui.SetUiState(component.Owner, SalvageConsoleUiKey.Expedition, state);
  60. }
  61. }