Skip to content

Commit

Permalink
Replace StationRandomTransform (#29149)
Browse files Browse the repository at this point in the history
* Revert "Rotate and Offset station CCVar nuke (#26175)"

This reverts commit 44b20f6.

# Conflicts:
#	Content.Server/Station/Systems/StationSystem.cs
#	Resources/Prototypes/Maps/europa.yml

* Fix

* Review
  • Loading branch information
metalgearsloth authored Jun 18, 2024
1 parent 92159ed commit b0b76a1
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 73 deletions.
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.MaxRandomOffset != 0f)
loadOpts.Offset = _robustRandom.NextVector2(map.MaxRandomOffset);

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

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

Expand Down
11 changes: 9 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,22 @@ public sealed partial class GameMapPrototype : IPrototype
[IdDataField]
public string ID { get; private set; } = default!;

[DataField]
public float MaxRandomOffset = 1000f;

[DataField]
public bool RandomRotation = true;

/// <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
maxRandomOffset: 0
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
maxRandomOffset: 0
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

0 comments on commit b0b76a1

Please sign in to comment.