Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace StationRandomTransform #29149

Merged
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Content.Server/GameTicking/GameTicker.RoundFlow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,12 @@ public IReadOnlyList<EntityUid> LoadGameMap(GameMapPrototype map, MapId targetMa
// whereas the command can also be used on an existing map.
var loadOpts = loadOptions ?? new MapLoadOptions();

if (map.RandomOffset)
loadOpts.Offset = _robustRandom.NextVector2(map.MaxRandomOffset);
metalgearsloth marked this conversation as resolved.
Show resolved Hide resolved

if (map.RandomRotation)
loadOpts.Rotation = _robustRandom.NextAngle();

var ev = new PreGameMapLoad(targetMapId, map, loadOpts);
RaiseLocalEvent(ev);

Expand Down
14 changes: 12 additions & 2 deletions Content.Server/Maps/GameMapPrototype.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
using System.Diagnostics;
using System.Numerics;

namespace Content.Server.Maps;

Expand All @@ -21,16 +22,25 @@ public sealed partial class GameMapPrototype : IPrototype
[IdDataField]
public string ID { get; private set; } = default!;

[DataField]
public bool RandomOffset = true;

[DataField]
public bool RandomRotation = true;

[DataField]
public float MaxRandomOffset = 1000f;

/// <summary>
/// Name of the map to use in generic messages, like the map vote.
/// </summary>
[DataField("mapName", required: true)]
[DataField(required: true)]
public string MapName { get; private set; } = default!;

/// <summary>
/// Relative directory path to the given map, i.e. `/Maps/saltern.yml`
/// </summary>
[DataField("mapPath", required: true)]
[DataField(required: true)]
public ResPath MapPath { get; private set; } = default!;

[DataField("stations", required: true)]
Expand Down

This file was deleted.

47 changes: 4 additions & 43 deletions Content.Server/Station/Systems/StationSystem.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
using System.Linq;
using System.Numerics;
using Content.Server.Chat.Systems;
using Content.Server.GameTicking;
using Content.Server.Station.Components;
using Content.Server.Station.Events;
using Content.Shared.Fax;
using Content.Shared.CCVar;
using Content.Shared.Station;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
Expand All @@ -28,10 +27,12 @@ namespace Content.Server.Station.Systems;
[PublicAPI]
public sealed class StationSystem : EntitySystem
{
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
[Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly IPlayerManager _player = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly ChatSystem _chatSystem = default!;
[Dependency] private readonly GameTicker _ticker = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly MapSystem _map = default!;
Expand Down Expand Up @@ -282,51 +283,11 @@ public EntityUid InitializeNewStation(StationConfig stationConfig, IEnumerable<E
var data = Comp<StationDataComponent>(station);
name ??= MetaData(station).EntityName;

var entry = gridIds ?? Array.Empty<EntityUid>();

foreach (var grid in entry)
foreach (var grid in gridIds ?? Array.Empty<EntityUid>())
{
AddGridToStation(station, grid, null, data, name);
}

if (TryComp<StationRandomTransformComponent>(station, out var random))
{
Angle? rotation = null;
Vector2? offset = null;

if (random.MaxStationOffset != null)
offset = _random.NextVector2(-random.MaxStationOffset.Value, random.MaxStationOffset.Value);

if (random.EnableStationRotation)
rotation = _random.NextAngle();

foreach (var grid in entry)
{
//planetary maps give an error when trying to change from position or rotation.
//This is still the case, but it will be irrelevant after the https://github.com/space-wizards/space-station-14/pull/26510
if (rotation != null && offset != null)
{
var pos = _transform.GetWorldPosition(grid);
_transform.SetWorldPositionRotation(grid, pos + offset.Value, rotation.Value);
continue;
}
if (rotation != null)
{
_transform.SetWorldRotation(grid, rotation.Value);
continue;
}
if (offset != null)
{
var pos = _transform.GetWorldPosition(grid);
_transform.SetWorldPosition(grid, pos + offset.Value);
continue;
}
}
}

if (LifeStage(station) < EntityLifeStage.MapInitialized)
throw new Exception($"Station must be man-initialized");

var ev = new StationPostInitEvent((station, data));
RaiseLocalEvent(station, ref ev, true);

Expand Down
6 changes: 0 additions & 6 deletions Resources/Prototypes/Entities/Stations/base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@
components:
- type: StationData

- type: entity
id: BaseRandomStation
abstract: true
components:
- type: StationRandomTransform

- type: entity
id: BaseStationCargo
abstract: true
Expand Down
1 change: 0 additions & 1 deletion Resources/Prototypes/Entities/Stations/nanotrasen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
- BaseStationSiliconLawCrewsimov
- BaseStationAllEventsEligible
- BaseStationNanotrasen
- BaseRandomStation
noSpawn: true
components:
- type: Transform
Expand Down
5 changes: 2 additions & 3 deletions Resources/Prototypes/Maps/europa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
id: Europa
mapName: 'Europa'
mapPath: /Maps/europa.yml
randomOffset: false
randomRotation: false
minPlayers: 0
maxPlayers: 40
stations:
Expand All @@ -10,9 +12,6 @@
components:
- type: StationBiome
biome: Snow
- type: StationRandomTransform
enableStationRotation: false
maxStationOffset: null
- type: StationNameSetup
mapNameTemplate: '{0} Europa {1}'
nameGenerator:
Expand Down
4 changes: 2 additions & 2 deletions Resources/Prototypes/Maps/train.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
id: Train
mapName: 'Train'
mapPath: /Maps/train.yml
randomOffset: false
randomRotation: false
minPlayers: 10
maxPlayers: 50
stations:
Train:
stationProto: StandardNanotrasenStation
components:
- type: StationRandomTransform
enableStationRotation: false
- type: StationNameSetup
mapNameTemplate: 'Train "Sentipode" {0}-{1}'
nameGenerator:
Expand Down
Loading