]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Replace StationRandomTransform (#29149)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Tue, 18 Jun 2024 13:27:34 +0000 (23:27 +1000)
committerGitHub <noreply@github.com>
Tue, 18 Jun 2024 13:27:34 +0000 (23:27 +1000)
* Revert "Rotate and Offset station CCVar nuke (#26175)"

This reverts commit 44b20f60ff178813ebbc5b449229b0bbba81f649.

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

* Fix

* Review

Content.Server/GameTicking/GameTicker.RoundFlow.cs
Content.Server/Maps/GameMapPrototype.cs
Content.Server/Station/Components/StationRandomTransformComponent.cs [deleted file]
Content.Server/Station/Systems/StationSystem.cs
Resources/Prototypes/Entities/Stations/base.yml
Resources/Prototypes/Entities/Stations/nanotrasen.yml
Resources/Prototypes/Maps/europa.yml
Resources/Prototypes/Maps/train.yml

index eed120dc4e8a5daed1c9ecb28815e185320a296d..d67b8d96e356dd2541f4279bc26599f91be921c9 100644 (file)
@@ -160,6 +160,12 @@ namespace Content.Server.GameTicking
             // 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);
 
index bd15194495ecd498c807931731d3bd58e6eb1a0f..5942a9930eb06ff18a315b3178810ae6097eb1d5 100644 (file)
@@ -3,6 +3,7 @@ using JetBrains.Annotations;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Utility;
 using System.Diagnostics;
+using System.Numerics;
 
 namespace Content.Server.Maps;
 
@@ -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)]
diff --git a/Content.Server/Station/Components/StationRandomTransformComponent.cs b/Content.Server/Station/Components/StationRandomTransformComponent.cs
deleted file mode 100644 (file)
index ea0fc5f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-using Content.Server.Station.Systems;
-
-namespace Content.Server.Station.Components;
-
-/// <summary>
-/// Stores station parameters that can be randomized by the roundstart
-/// </summary>
-[RegisterComponent, Access(typeof(StationSystem))]
-public sealed partial class StationRandomTransformComponent : Component
-{
-    [DataField]
-    public float? MaxStationOffset = 100.0f;
-
-    [DataField]
-    public bool EnableStationRotation = true;
-}
index 88e419ae39af0cd260c7b1948dc67749a637ee44..84e44b6469cdcd71f8763adc18acdd96b76ef6d0 100644 (file)
@@ -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;
@@ -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!;
@@ -282,51 +283,11 @@ public sealed class StationSystem : EntitySystem
         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);
 
index 6a1abdfbe3dc8b90082109eb49aa975f51591b3c..8a0d6c40030403d76b6cbc101e161eda4aafac14 100644 (file)
@@ -4,12 +4,6 @@
   components:
     - type: StationData
 
-- type: entity
-  id: BaseRandomStation
-  abstract: true
-  components:
-    - type: StationRandomTransform
-
 - type: entity
   id: BaseStationCargo
   abstract: true
index 7e650d536f224e033f1891223e8cf71be60ae577..ab885b03e53727b142a8bb59ed36c3af42748822 100644 (file)
@@ -25,7 +25,6 @@
     - BaseStationSiliconLawCrewsimov
     - BaseStationAllEventsEligible
     - BaseStationNanotrasen
-    - BaseRandomStation
   noSpawn: true
   components:
     - type: Transform
index 412e1b46569fad17a5171376e8dbefab2ee38ff4..7197165ce1fe6746874eadb5a2cb3a7b5e415fb6 100644 (file)
@@ -2,6 +2,8 @@
   id: Europa
   mapName: 'Europa'
   mapPath: /Maps/europa.yml
+  maxRandomOffset: 0
+  randomRotation: false
   minPlayers: 0
   maxPlayers: 40
   stations:
@@ -10,9 +12,6 @@
       components:
         - type: StationBiome
           biome: Snow
-        - type: StationRandomTransform
-          enableStationRotation: false
-          maxStationOffset: null
         - type: StationNameSetup
           mapNameTemplate: '{0} Europa {1}'
           nameGenerator:
index 7f24fcdd677188d412a68f1dbeabc63d4dbd3ea6..a93c4558885cc11f360423c213f44c92a02f3983 100644 (file)
@@ -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: