using Content.Server.Administration;
using Content.Server.GameTicking;
using Content.Server.GameTicking.Events;
+using Content.Server.Parallax;
using Content.Server.Shuttles.Components;
using Content.Server.Shuttles.Events;
using Content.Server.Spawners.Components;
using Content.Shared.CCVar;
using Content.Shared.Mobs.Components;
using Content.Shared.Movement.Components;
+using Content.Shared.Parallax.Biomes;
+using Content.Shared.Salvage;
using Content.Shared.Shuttles.Components;
using Robust.Shared.Spawners;
using Content.Shared.Tiles;
using Robust.Shared.Configuration;
using Robust.Shared.Console;
using Robust.Shared.Map;
+using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent;
[Dependency] private readonly IConsoleHost _console = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly IMapManager _mapManager = default!;
+ [Dependency] private readonly IPrototypeManager _protoManager = default!;
[Dependency] private readonly IRobustRandom _random = default!;
+ [Dependency] private readonly BiomeSystem _biomes = default!;
[Dependency] private readonly GameTicker _ticker = default!;
[Dependency] private readonly MapLoaderSystem _loader = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// </summary>
public bool Enabled { get; private set; }
+ private readonly List<ProtoId<BiomeTemplatePrototype>> _arrivalsBiomeOptions = new()
+ {
+ "Grasslands",
+ "LowDesert",
+ "Snow",
+ };
+
public override void Initialize()
{
base.Initialize();
private void SetupArrivalsStation()
{
var mapId = _mapManager.CreateMap();
+ var mapUid = _mapManager.GetMapEntityId(mapId);
+ _mapManager.AddUninitializedMap(mapId);
if (!_loader.TryLoad(mapId, _cfgManager.GetCVar(CCVars.ArrivalsMap), out var uids))
{
EnsureComp<PreventPilotComponent>(id);
}
+ // Setup planet arrivals if relevant
+ if (_cfgManager.GetCVar(CCVars.ArrivalsPlanet))
+ {
+ var template = _random.Pick(_arrivalsBiomeOptions);
+ _biomes.EnsurePlanet(mapUid, _protoManager.Index(template));
+ var range = AddComp<RestrictedRangeComponent>(mapUid);
+ range.Range = 32f;
+ Dirty(mapUid, range);
+ }
+
+ _mapManager.DoMapInitialize(mapId);
+
// Handle roundstart stations.
var query = AllEntityQuery<StationArrivalsComponent>();