Upstream fixes (#664)

* fix weird name saving

* fix item status

* Fix single-user BUIs erroneously closing (#28375)

(cherry picked from commit 08952b467d9b2b2db85cb9ebb4e8b628c0145716)

* fix meatyore shop

* possible playtime fix

* fixes

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
ThereDrD
2024-08-25 01:37:24 +03:00
committed by GitHub
parent dba9565865
commit 1b07a035ce
8 changed files with 67 additions and 22 deletions

View File

@@ -20,15 +20,14 @@ namespace Content.Client.Lathe.UI
_menu = new LatheMenu(this); _menu = new LatheMenu(this);
_menu.OnClose += Close; _menu.OnClose += Close;
_menu.OnServerListButtonPressed += _ => _menu.OnServerListButtonPressed += _ =>
{ {
SendMessage(new ConsoleServerSelectionMessage()); SendPredictedMessage(new ConsoleServerSelectionMessage());
}; };
_menu.RecipeQueueAction += (recipe, amount) => _menu.RecipeQueueAction += (recipe, amount) =>
{ {
SendMessage(new LatheQueueRecipeMessage(recipe, amount)); SendPredictedMessage(new LatheQueueRecipeMessage(recipe, amount));
}; };
_menu.OpenCenteredRight(); _menu.OpenCenteredRight();
@@ -54,8 +53,10 @@ namespace Content.Client.Lathe.UI
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if (!disposing) if (!disposing)
return; return;
_menu?.Dispose(); _menu?.Dispose();
} }
} }

View File

@@ -43,7 +43,9 @@ public sealed class MeatyOreUIController : UIController
{ {
base.FrameUpdate(args); base.FrameUpdate(args);
if(!_buttonLoaded) return; if (!_buttonLoaded)
return;
var shouldBeVisible = CheckButtonVisibility(); var shouldBeVisible = CheckButtonVisibility();
MeatyOreButton!.Visible = shouldBeVisible; MeatyOreButton!.Visible = shouldBeVisible;
} }
@@ -51,13 +53,19 @@ public sealed class MeatyOreUIController : UIController
private bool CheckButtonVisibility() private bool CheckButtonVisibility()
{ {
if(!_sponsorsManager.TryGetInfo(out var sponsor)) return false; if (!_sponsorsManager.TryGetInfo(out var sponsor))
if(sponsor?.Tier == null || sponsor?.MeatyOreCoin == 0) return false; return false;
var controlledEntity = _playerManager!.LocalPlayer!.ControlledEntity; if (sponsor.Tier == null || sponsor.MeatyOreCoin == 0)
if(controlledEntity == null) return false; return false;
if (!_entityManager.HasComponent<HumanoidAppearanceComponent>(controlledEntity)) return false; var controlledEntity = _playerManager.LocalPlayer!.ControlledEntity;
if (controlledEntity == null)
return false;
if (!_entityManager.HasComponent<HumanoidAppearanceComponent>(controlledEntity))
return false;
return true; return true;
} }

View File

@@ -45,7 +45,7 @@ public sealed partial class ChangelingSystem
private void OnShop(EntityUid uid, SubdermalImplantComponent component, ChangelingShopActionEvent args) private void OnShop(EntityUid uid, SubdermalImplantComponent component, ChangelingShopActionEvent args)
{ {
if(!TryComp<StoreComponent>(uid, out var store)) if (!TryComp<StoreComponent>(uid, out var store))
return; return;
_storeSystem.ToggleUi(args.Performer, uid, store); _storeSystem.ToggleUi(args.Performer, uid, store);

View File

@@ -309,7 +309,7 @@ public sealed class PlayTimeTrackingManager : IPlayTimeTrackingManager, ISharedP
var data = new PlayTimeData(); var data = new PlayTimeData();
_playTimeData.Add(session, data); _playTimeData.Add(session, data);
var playTimes = await _db.GetPlayTimes(session.UserId, cancel); var playTimes = await _db.GetPlayTimes(session.UserId);
cancel.ThrowIfCancellationRequested(); cancel.ThrowIfCancellationRequested();
foreach (var timer in playTimes) foreach (var timer in playTimes)

View File

@@ -1,4 +1,5 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq; using System.Linq;
using Content.Server.Chat.Managers; using Content.Server.Chat.Managers;
using System.Net.Http; using System.Net.Http;
@@ -29,6 +30,7 @@ using Robust.Shared.Configuration;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Network; using Robust.Shared.Network;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Prototypes;
namespace Content.Server._White.MeatyOre; namespace Content.Server._White.MeatyOre;
@@ -46,6 +48,7 @@ public sealed class MeatyOreStoreSystem : EntitySystem
[Dependency] private readonly SharedJobSystem _jobSystem = default!; [Dependency] private readonly SharedJobSystem _jobSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly GameTicker _gameTicker = default!; [Dependency] private readonly GameTicker _gameTicker = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
private HttpClient _httpClient = default!; private HttpClient _httpClient = default!;
private string _apiUrl = default!; private string _apiUrl = default!;
@@ -149,7 +152,7 @@ public sealed class MeatyOreStoreSystem : EntitySystem
return; return;
_pvsOverrideSystem.AddSessionOverride(storeEntity.Value, playerSession); _pvsOverrideSystem.AddSessionOverride(storeEntity.Value, playerSession);
_storeSystem.ToggleUi(playerEntity.Value, storeEntity.Value, storeComponent); _storeSystem.ToggleUi(playerEntity.Value, storeEntity.Value);
} }
private bool TryGetStore(ICommonSession session, out StoreComponent store, [NotNullWhen(true)] out EntityUid? storeEntity) private bool TryGetStore(ICommonSession session, out StoreComponent store, [NotNullWhen(true)] out EntityUid? storeEntity)
@@ -187,19 +190,19 @@ public sealed class MeatyOreStoreSystem : EntitySystem
private (EntityUid, StoreComponent) CreateStore(NetUserId userId, int balance) private (EntityUid, StoreComponent) CreateStore(NetUserId userId, int balance)
{ {
var session = _playerManager.GetSessionById(userId); var session = _playerManager.GetSessionById(userId);
var storeEntity = _entityManager.SpawnEntity("StoreMeatyOreEntity", MapCoordinates.Nullspace); var user = session.AttachedEntity!;
var storeComponent = Comp<StoreComponent>(storeEntity);
_storeSystem.InitializeFromPreset(StorePresetPrototype, storeEntity, storeComponent); var storeComponent = Comp<StoreComponent>(user.Value);
_storeSystem.InitializeFromPreset(StorePresetPrototype, user.Value, storeComponent);
storeComponent.Balance.Clear(); storeComponent.Balance.Clear();
_storeSystem.TryAddCurrency(new Dictionary<string, FixedPoint2> { { MeatyOreCurrencyPrototype, balance } }, _storeSystem.TryAddCurrency(new Dictionary<string, FixedPoint2> { { MeatyOreCurrencyPrototype, balance } },
storeEntity, storeComponent); user.Value, storeComponent);
_meatyOreStores[userId] = (storeEntity, storeComponent); _meatyOreStores[userId] = (user.Value, storeComponent);
_pvsOverrideSystem.AddSessionOverride(storeEntity, session);
return (storeEntity, storeComponent); return (user.Value, storeComponent);
} }
private async void TryAddRole(EntityUid user, EntityUid target, StoreComponent store, EntityUid storeEntity) private async void TryAddRole(EntityUid user, EntityUid target, StoreComponent store, EntityUid storeEntity)

View File

@@ -221,8 +221,17 @@
type: SpellSelectorBUI type: SpellSelectorBUI
enum.CultEmpowerRemoveUiKey.Key: enum.CultEmpowerRemoveUiKey.Key:
type: SpellRemoverBUI type: SpellRemoverBUI
enum.StoreUiKey.Key:
type: StoreBoundUserInterface
# WD-EDIT END # WD-EDIT END
- type: Puller - type: Puller
# WD edit start
- type: Store
preset: StorePresetMeatyOre
balance:
MeatyOreCoin: 0
- type: IgnorBUIInteractionRange # Oleg kryt
# WD edit end
- type: Butcherable - type: Butcherable
butcheringType: Spike # TODO human. butcheringType: Spike # TODO human.
spawned: spawned:

View File

@@ -38,7 +38,7 @@
materials: materials:
Steel: 250 Steel: 250
Plastic: 100 Plastic: 100
- type: latheRecipe - type: latheRecipe
id: WeaponLaserCarbine id: WeaponLaserCarbine
result: WeaponLaserCarbine result: WeaponLaserCarbine
@@ -390,6 +390,30 @@
materials: materials:
Steel: 120 Steel: 120
- type: latheRecipe # WD
id: MagazineShotgun
result: MagazineShotgun
category: Ammo
completetime: 5
materials:
Steel: 300
- type: latheRecipe # WD
id: MagazineShotgunSlug
result: MagazineShotgunSlug
category: Ammo
completetime: 5
materials:
Steel: 300
- type: latheRecipe # WD
id: MagazinePistolCaselessRifle
result: MagazinePistolCaselessRifle
category: Ammo
completetime: 5
materials:
Steel: 300
- type: latheRecipe - type: latheRecipe
id: ShellShotgunIncendiary id: ShellShotgunIncendiary
result: ShellShotgunIncendiary result: ShellShotgunIncendiary

View File

@@ -19,6 +19,7 @@
currencyWhitelist: currencyWhitelist:
- MeatyOreCoin - MeatyOreCoin
# This is unused now
- type: entity - type: entity
id: StoreMeatyOreEntity id: StoreMeatyOreEntity
name: ThisIsDumb name: ThisIsDumb
@@ -32,5 +33,4 @@
interfaces: interfaces:
enum.StoreUiKey.Key: enum.StoreUiKey.Key:
type: StoreBoundUserInterface type: StoreBoundUserInterface
range: -1
- type: IgnorBUIInteractionRange - type: IgnorBUIInteractionRange