Coordinates Disks & Shuttle FTL Travel (#23240)

* Adds the CentComm Disk and configures it to work with direct-use shuttles

* Added functionality for drone shuttles (i.e. cargo shuttle)

* Adds support for pods, and a disk console object for disks to be inserted into. Also sprites.

* Added the disk to HoP's locker

* Removed leftover logs & comments

* Fix for integration test

* Apply suggestions from code review (formatting & proper DataField)

Co-authored-by: 0x6273 <0x40@keemail.me>

* Fix integration test & changes based on code review

* Includes Disk Cases to contain Coordinate Disks, which are now CDs instead of Floppy Disks

* Check pods & non-evac shuttles for CentCom travel, even in FTL

* Import

* Remove CentCom travel restrictions & pod disk consoles

* Major changes that changes the coordinates disk system to work with salvage expeditions

* Missed CC diskcase removal

* Fix build

* Review suggestions and changes

* Major additional changes after merge

* Minor tag miss

* Integration test fix

* review

---------

Co-authored-by: 0x6273 <0x40@keemail.me>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
SlamBamActionman
2024-04-01 06:50:00 +02:00
committed by GitHub
parent cc35f16839
commit bed9e9ac6a
24 changed files with 217 additions and 23 deletions

View File

@@ -33,6 +33,9 @@ using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using Content.Server.Shuttles.Components;
using Content.Shared.Coordinates;
using Content.Shared.Shuttles.Components;
namespace Content.Server.Salvage;
@@ -46,8 +49,10 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
private readonly BiomeSystem _biome;
private readonly DungeonSystem _dungeon;
private readonly MetaDataSystem _metaData;
private readonly SharedTransformSystem _xforms;
public readonly EntityUid Station;
public readonly EntityUid? CoordinatesDisk;
private readonly SalvageMissionParams _missionParams;
private readonly ISawmill _sawmill;
@@ -63,7 +68,9 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
BiomeSystem biome,
DungeonSystem dungeon,
MetaDataSystem metaData,
SharedTransformSystem xform,
EntityUid station,
EntityUid? coordinatesDisk,
SalvageMissionParams missionParams,
CancellationToken cancellation = default) : base(maxTime, cancellation)
{
@@ -75,7 +82,9 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
_biome = biome;
_dungeon = dungeon;
_metaData = metaData;
_xforms = xform;
Station = station;
CoordinatesDisk = coordinatesDisk;
_missionParams = missionParams;
_sawmill = logManager.GetSawmill("salvage_job");
#if !DEBUG
@@ -94,6 +103,18 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
var random = new Random(_missionParams.Seed);
var destComp = _entManager.AddComponent<FTLDestinationComponent>(mapUid);
destComp.BeaconsOnly = true;
destComp.RequireCoordinateDisk = true;
destComp.Enabled = true;
_metaData.SetEntityName(mapUid, SharedSalvageSystem.GetFTLName(_prototypeManager.Index<DatasetPrototype>("names_borer"), _missionParams.Seed));
_entManager.AddComponent<FTLBeaconComponent>(mapUid);
// Saving the mission mapUid to a CD is made optional, in case one is somehow made in a process without a CD entity
if (CoordinatesDisk.HasValue)
{
var cd = _entManager.EnsureComponent<ShuttleDestinationCoordinatesComponent>(CoordinatesDisk.Value);
cd.Destination = mapUid;
_entManager.Dirty(CoordinatesDisk.Value, cd);
}
// Setup mission configs
// As we go through the config the rating will deplete so we'll go for most important to least important.
@@ -144,11 +165,6 @@ public sealed class SpawnSalvageMissionJob : Job<bool>
expedition.EndTime = _timing.CurTime + mission.Duration;
expedition.MissionParams = _missionParams;
// Don't want consoles to have the incorrect name until refreshed.
var ftlUid = _entManager.CreateEntityUninitialized("FTLPoint", new EntityCoordinates(mapUid, grid.TileSizeHalfVector));
_metaData.SetEntityName(ftlUid, SharedSalvageSystem.GetFTLName(_prototypeManager.Index<DatasetPrototype>("names_borer"), _missionParams.Seed));
_entManager.InitializeAndStartEntity(ftlUid);
var landingPadRadius = 24;
var minDungeonOffset = landingPadRadius + 4;