From bf79acd127483d64f96dc23f2e64c74ceb84303d Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:25:32 +1100 Subject: [PATCH] Salvage magnet revamp (#23119) * Generic offering window * More work * weh * Parity * Progression meter * magnet * rona * PG asteroid work * code red * Asteroid spawnings * clams * a * Marker fixes * More fixes * Workings of biome asteroids * A * Fix this loading code * a * Fix masking * weh * Fixes * Magnet claiming * toe * petogue * magnet * Bunch of fixes * Fix default * Fixes * asteroids * Fix offerings * Localisation and a bunch of fixes * a * Fixes * Preliminary draft * Announcement fixes * Fixes and bump spawn rate * Fix asteroid spawns and UI * More fixes * Expeditions fix * fix * Gravity * Fix announcement rounding * a * Offset tweak * sus * jankass * Fix merge --- Content.Client/Entry/EntryPoint.cs | 1 - .../Salvage/SalvageMagnetComponent.cs | 7 - ...editionWindow.xaml => OfferingWindow.xaml} | 16 +- .../Salvage/UI/OfferingWindow.xaml.cs | 117 +++++ .../Salvage/UI/OfferingWindowOption.xaml | 24 + .../Salvage/UI/OfferingWindowOption.xaml.cs | 87 ++++ ...vageExpeditionConsoleBoundUserInterface.cs | 154 ++++++- .../UI/SalvageExpeditionWindow.xaml.cs | 256 ----------- .../UI/SalvageMagnetBoundUserInterface.cs | 110 +++++ Content.IntegrationTests/Tests/SalvageTest.cs | 1 + Content.Server/Parallax/BiomeSystem.cs | 310 +++++++------ .../Physics/Controllers/MoverController.cs | 2 +- .../Procedural/DungeonJob.NoiseDunGen.cs | 146 ++++++ .../Procedural/DungeonJob.PostGen.cs | 2 +- .../Procedural/DungeonJob.PostGenBiome.cs | 138 ++++++ ...enerator.cs => DungeonJob.PrefabDunGen.cs} | 0 Content.Server/Procedural/DungeonJob.cs | 14 +- Content.Server/Procedural/DungeonSystem.cs | 1 - Content.Server/Salvage/FultonSystem.cs | 3 + .../Salvage/Magnet/SalvageMagnetComponent.cs | 7 + .../Magnet/SalvageMagnetDataComponent.cs | 57 +++ .../Magnet/SalvageMagnetTargetComponent.cs | 14 + .../Magnet/SalvageMobRestrictionsComponent.cs | 12 + .../Salvage/SalvageGridComponent.cs | 14 - .../Salvage/SalvageMagnetComponent.cs | 138 ------ Content.Server/Salvage/SalvageMapPrototype.cs | 20 - .../SalvageMobRestrictionsComponent.cs | 23 - .../SalvageMobRestrictionsGridComponent.cs | 23 - .../Salvage/SalvageMobRestrictionsSystem.cs | 70 --- Content.Server/Salvage/SalvageRulerCommand.cs | 2 +- .../Salvage/SalvageSystem.Magnet.cs | 408 +++++++++++++++++ Content.Server/Salvage/SalvageSystem.cs | 423 +----------------- .../DroneConsoleComponent.cs | 2 +- .../Systems/ShuttleConsoleSystem.Drone.cs | 1 - .../Shuttles/Systems/ShuttleConsoleSystem.cs | 1 - .../Shuttles/Systems/SpaceGarbageSystem.cs | 13 +- .../Station/Systems/StationSystem.cs | 8 + .../Systems/ArtifactMagnetTriggerSystem.cs | 15 +- Content.Shared/CCVar/CCVars.cs | 6 - .../Parallax/Biomes/BiomeComponent.cs | 6 + .../Parallax/Biomes/SharedBiomeSystem.cs | 8 + Content.Shared/Procedural/Dungeon.cs | 12 +- .../DungeonGenerators/NoiseDunGen.cs | 58 +++ .../PostGeneration/BiomeMarkerLayerPostGen.cs | 21 + .../Procedural/PostGeneration/BiomePostGen.cs | 15 + .../Salvage/Magnet/AsteroidOffering.cs | 16 + .../Salvage/Magnet/ISalvageMagnetOffering.cs | 6 + .../Salvage/Magnet/MagnetClaimOfferEvent.cs | 12 + .../SalvageMagnetBoundUserInterfaceState.cs | 22 + .../Salvage/Magnet/SalvageMagnetUiKey.cs | 6 + .../Salvage/Magnet/SalvageOffering.cs | 9 + Content.Shared/Salvage/SalvageMapPrototype.cs | 15 + .../Salvage/SharedSalvageMagnetComponent.cs | 31 -- .../Salvage/SharedSalvageSystem.Magnet.cs | 69 +++ Content.Shared/Salvage/SharedSalvageSystem.cs | 2 +- .../Locale/en-US/procedural/expeditions.ftl | 5 +- .../Locale/en-US/salvage/salvage-magnet.ftl | 60 +++ .../Locale/en-US/salvage/salvage-system.ftl | 23 - .../Prototypes/Entities/Stations/base.yml | 6 + .../Entities/Stations/nanotrasen.yml | 1 + .../Entities/Structures/Machines/salvage.yml | 37 +- .../Entities/Structures/Walls/asteroid.yml | 204 ++++++++- Resources/Prototypes/Maps/salvage.yml | 34 +- .../Prototypes/Procedural/Magnet/asteroid.yml | 116 +++++ .../Procedural/biome_ore_templates.yml | 9 + .../Prototypes/Procedural/biome_templates.yml | 60 +++ 66 files changed, 2257 insertions(+), 1252 deletions(-) delete mode 100644 Content.Client/Salvage/SalvageMagnetComponent.cs rename Content.Client/Salvage/UI/{SalvageExpeditionWindow.xaml => OfferingWindow.xaml} (60%) create mode 100644 Content.Client/Salvage/UI/OfferingWindow.xaml.cs create mode 100644 Content.Client/Salvage/UI/OfferingWindowOption.xaml create mode 100644 Content.Client/Salvage/UI/OfferingWindowOption.xaml.cs delete mode 100644 Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs create mode 100644 Content.Client/Salvage/UI/SalvageMagnetBoundUserInterface.cs create mode 100644 Content.Server/Procedural/DungeonJob.NoiseDunGen.cs create mode 100644 Content.Server/Procedural/DungeonJob.PostGenBiome.cs rename Content.Server/Procedural/{DungeonJob.Generator.cs => DungeonJob.PrefabDunGen.cs} (100%) create mode 100644 Content.Server/Salvage/Magnet/SalvageMagnetComponent.cs create mode 100644 Content.Server/Salvage/Magnet/SalvageMagnetDataComponent.cs create mode 100644 Content.Server/Salvage/Magnet/SalvageMagnetTargetComponent.cs create mode 100644 Content.Server/Salvage/Magnet/SalvageMobRestrictionsComponent.cs delete mode 100644 Content.Server/Salvage/SalvageGridComponent.cs delete mode 100644 Content.Server/Salvage/SalvageMagnetComponent.cs delete mode 100644 Content.Server/Salvage/SalvageMapPrototype.cs delete mode 100644 Content.Server/Salvage/SalvageMobRestrictionsComponent.cs delete mode 100644 Content.Server/Salvage/SalvageMobRestrictionsGridComponent.cs delete mode 100644 Content.Server/Salvage/SalvageMobRestrictionsSystem.cs create mode 100644 Content.Server/Salvage/SalvageSystem.Magnet.cs rename Content.Server/{Shuttle/Components => Shuttles}/DroneConsoleComponent.cs (91%) create mode 100644 Content.Shared/Procedural/DungeonGenerators/NoiseDunGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/BiomeMarkerLayerPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/BiomePostGen.cs create mode 100644 Content.Shared/Salvage/Magnet/AsteroidOffering.cs create mode 100644 Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs create mode 100644 Content.Shared/Salvage/Magnet/MagnetClaimOfferEvent.cs create mode 100644 Content.Shared/Salvage/Magnet/SalvageMagnetBoundUserInterfaceState.cs create mode 100644 Content.Shared/Salvage/Magnet/SalvageMagnetUiKey.cs create mode 100644 Content.Shared/Salvage/Magnet/SalvageOffering.cs create mode 100644 Content.Shared/Salvage/SalvageMapPrototype.cs delete mode 100644 Content.Shared/Salvage/SharedSalvageMagnetComponent.cs create mode 100644 Content.Shared/Salvage/SharedSalvageSystem.Magnet.cs create mode 100644 Resources/Locale/en-US/salvage/salvage-magnet.ftl delete mode 100644 Resources/Locale/en-US/salvage/salvage-system.ftl create mode 100644 Resources/Prototypes/Procedural/Magnet/asteroid.yml diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 04f0acac97..a9ecb3a725 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -108,7 +108,6 @@ namespace Content.Client.Entry _prototypeManager.RegisterIgnore("npcFaction"); _prototypeManager.RegisterIgnore("lobbyBackground"); _prototypeManager.RegisterIgnore("advertisementsPack"); - _prototypeManager.RegisterIgnore("salvageMap"); _prototypeManager.RegisterIgnore("gamePreset"); _prototypeManager.RegisterIgnore("noiseChannel"); _prototypeManager.RegisterIgnore("spaceBiome"); diff --git a/Content.Client/Salvage/SalvageMagnetComponent.cs b/Content.Client/Salvage/SalvageMagnetComponent.cs deleted file mode 100644 index 83b765583d..0000000000 --- a/Content.Client/Salvage/SalvageMagnetComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.Salvage; -using Robust.Shared.GameStates; - -namespace Content.Client.Salvage; - -[NetworkedComponent, RegisterComponent] -public sealed partial class SalvageMagnetComponent : SharedSalvageMagnetComponent {} diff --git a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml b/Content.Client/Salvage/UI/OfferingWindow.xaml similarity index 60% rename from Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml rename to Content.Client/Salvage/UI/OfferingWindow.xaml index 67280c34f9..12f1f688c8 100644 --- a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml +++ b/Content.Client/Salvage/UI/OfferingWindow.xaml @@ -3,10 +3,24 @@ Title="{Loc 'salvage-expedition-window-title'}" MinSize="800 360"> + + + SetWidth="96" + Margin="5"/> +/// Generic window for offering multiple selections with a timer. +/// +[GenerateTypedNameReferences] +public sealed partial class OfferingWindow : FancyWindow, + IComputerWindow +{ + [Dependency] private readonly IGameTiming _timing = default!; + + public bool Claimed; + public TimeSpan NextOffer; + private TimeSpan? _progression; + + /// + /// Time between NextOffers + /// + public TimeSpan Cooldown; + + /// + /// Time between Progressions + /// + public TimeSpan ProgressionCooldown; + + /// + /// Secondary timer used for tracking active progress. + /// + public TimeSpan? Progression + { + get => _progression; + set + { + if (_progression == value) + return; + + _progression = value; + + if (value == null) + { + ProgressionBox.Visible = false; + } + else + { + ProgressionBox.Visible = true; + } + } + } + + public OfferingWindow() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + ProgressionBar.ForegroundStyleBoxOverride = new StyleBoxFlat(Color.FromHex("#C74EBD")); + } + + public void AddOption(OfferingWindowOption option) + { + Container.AddChild(option); + } + + public void ClearOptions() + { + Container.DisposeAllChildren(); + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (_progression != null) + { + var remaining = _progression.Value - _timing.CurTime; + + if (remaining < TimeSpan.Zero) + { + ProgressionBar.Value = 1f; + ProgressionText.Text = "00:00"; + } + else + { + ProgressionBar.Value = 1f - (float) (remaining / ProgressionCooldown); + ProgressionText.Text = $"{remaining.Minutes:00}:{remaining.Seconds:00}"; + } + } + + if (Claimed) + { + NextOfferBar.Value = 1f; + NextOfferText.Text = "00:00"; + } + else + { + var remaining = NextOffer - _timing.CurTime; + + if (remaining < TimeSpan.Zero) + { + NextOfferBar.Value = 1f; + NextOfferText.Text = "00:00"; + } + else + { + NextOfferBar.Value = 1f - (float) (remaining / Cooldown); + NextOfferText.Text = $"{remaining.Minutes:00}:{remaining.Seconds:00}"; + } + } + } +} diff --git a/Content.Client/Salvage/UI/OfferingWindowOption.xaml b/Content.Client/Salvage/UI/OfferingWindowOption.xaml new file mode 100644 index 0000000000..fc2bfaa94a --- /dev/null +++ b/Content.Client/Salvage/UI/OfferingWindowOption.xaml @@ -0,0 +1,24 @@ + + + + + + + + +