diff --git a/Content.Client/Lathe/UI/LatheBoundUserInterface.cs b/Content.Client/Lathe/UI/LatheBoundUserInterface.cs index 6e6d1b9176..84bd8e5fde 100644 --- a/Content.Client/Lathe/UI/LatheBoundUserInterface.cs +++ b/Content.Client/Lathe/UI/LatheBoundUserInterface.cs @@ -20,15 +20,14 @@ namespace Content.Client.Lathe.UI _menu = new LatheMenu(this); _menu.OnClose += Close; - _menu.OnServerListButtonPressed += _ => { - SendMessage(new ConsoleServerSelectionMessage()); + SendPredictedMessage(new ConsoleServerSelectionMessage()); }; _menu.RecipeQueueAction += (recipe, amount) => { - SendMessage(new LatheQueueRecipeMessage(recipe, amount)); + SendPredictedMessage(new LatheQueueRecipeMessage(recipe, amount)); }; _menu.OpenCenteredRight(); @@ -54,8 +53,10 @@ namespace Content.Client.Lathe.UI protected override void Dispose(bool disposing) { base.Dispose(disposing); + if (!disposing) return; + _menu?.Dispose(); } } diff --git a/Content.Client/_White/MeatyOre/MeatyOreUIController.cs b/Content.Client/_White/MeatyOre/MeatyOreUIController.cs index 5c366174f7..0833003f1f 100644 --- a/Content.Client/_White/MeatyOre/MeatyOreUIController.cs +++ b/Content.Client/_White/MeatyOre/MeatyOreUIController.cs @@ -43,7 +43,9 @@ public sealed class MeatyOreUIController : UIController { base.FrameUpdate(args); - if(!_buttonLoaded) return; + if (!_buttonLoaded) + return; + var shouldBeVisible = CheckButtonVisibility(); MeatyOreButton!.Visible = shouldBeVisible; } @@ -51,13 +53,19 @@ public sealed class MeatyOreUIController : UIController private bool CheckButtonVisibility() { - if(!_sponsorsManager.TryGetInfo(out var sponsor)) return false; - if(sponsor?.Tier == null || sponsor?.MeatyOreCoin == 0) return false; + if (!_sponsorsManager.TryGetInfo(out var sponsor)) + return false; - var controlledEntity = _playerManager!.LocalPlayer!.ControlledEntity; - if(controlledEntity == null) return false; + if (sponsor.Tier == null || sponsor.MeatyOreCoin == 0) + return false; - if (!_entityManager.HasComponent(controlledEntity)) return false; + var controlledEntity = _playerManager.LocalPlayer!.ControlledEntity; + + if (controlledEntity == null) + return false; + + if (!_entityManager.HasComponent(controlledEntity)) + return false; return true; } diff --git a/Content.Server/Changeling/ChangelingSystem.Shop.cs b/Content.Server/Changeling/ChangelingSystem.Shop.cs index 9dbc95fc55..f26ffeb32d 100644 --- a/Content.Server/Changeling/ChangelingSystem.Shop.cs +++ b/Content.Server/Changeling/ChangelingSystem.Shop.cs @@ -45,7 +45,7 @@ public sealed partial class ChangelingSystem private void OnShop(EntityUid uid, SubdermalImplantComponent component, ChangelingShopActionEvent args) { - if(!TryComp(uid, out var store)) + if (!TryComp(uid, out var store)) return; _storeSystem.ToggleUi(args.Performer, uid, store); diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs index 7a47bdd810..574ad33d34 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs @@ -309,7 +309,7 @@ public sealed class PlayTimeTrackingManager : IPlayTimeTrackingManager, ISharedP var data = new PlayTimeData(); _playTimeData.Add(session, data); - var playTimes = await _db.GetPlayTimes(session.UserId, cancel); + var playTimes = await _db.GetPlayTimes(session.UserId); cancel.ThrowIfCancellationRequested(); foreach (var timer in playTimes) diff --git a/Content.Server/_White/MeatyOre/MeatyOreStoreSystem.cs b/Content.Server/_White/MeatyOre/MeatyOreStoreSystem.cs index 6eb85dab67..2eb9b7722a 100644 --- a/Content.Server/_White/MeatyOre/MeatyOreStoreSystem.cs +++ b/Content.Server/_White/MeatyOre/MeatyOreStoreSystem.cs @@ -1,4 +1,5 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Chat.Managers; using System.Net.Http; @@ -29,6 +30,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Prototypes; namespace Content.Server._White.MeatyOre; @@ -46,6 +48,7 @@ public sealed class MeatyOreStoreSystem : EntitySystem [Dependency] private readonly SharedJobSystem _jobSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly GameTicker _gameTicker = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; private HttpClient _httpClient = default!; private string _apiUrl = default!; @@ -149,7 +152,7 @@ public sealed class MeatyOreStoreSystem : EntitySystem return; _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) @@ -187,19 +190,19 @@ public sealed class MeatyOreStoreSystem : EntitySystem private (EntityUid, StoreComponent) CreateStore(NetUserId userId, int balance) { var session = _playerManager.GetSessionById(userId); - var storeEntity = _entityManager.SpawnEntity("StoreMeatyOreEntity", MapCoordinates.Nullspace); - var storeComponent = Comp(storeEntity); + var user = session.AttachedEntity!; - _storeSystem.InitializeFromPreset(StorePresetPrototype, storeEntity, storeComponent); + var storeComponent = Comp(user.Value); + + _storeSystem.InitializeFromPreset(StorePresetPrototype, user.Value, storeComponent); storeComponent.Balance.Clear(); _storeSystem.TryAddCurrency(new Dictionary { { MeatyOreCurrencyPrototype, balance } }, - storeEntity, storeComponent); + user.Value, storeComponent); - _meatyOreStores[userId] = (storeEntity, storeComponent); - _pvsOverrideSystem.AddSessionOverride(storeEntity, session); + _meatyOreStores[userId] = (user.Value, storeComponent); - return (storeEntity, storeComponent); + return (user.Value, storeComponent); } private async void TryAddRole(EntityUid user, EntityUid target, StoreComponent store, EntityUid storeEntity) diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index af674a618d..0466cfd26d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -221,8 +221,17 @@ type: SpellSelectorBUI enum.CultEmpowerRemoveUiKey.Key: type: SpellRemoverBUI + enum.StoreUiKey.Key: + type: StoreBoundUserInterface # WD-EDIT END - type: Puller + # WD edit start + - type: Store + preset: StorePresetMeatyOre + balance: + MeatyOreCoin: 0 + - type: IgnorBUIInteractionRange # Oleg kryt + # WD edit end - type: Butcherable butcheringType: Spike # TODO human. spawned: diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index baf21783d9..defebd8052 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -38,7 +38,7 @@ materials: Steel: 250 Plastic: 100 - + - type: latheRecipe id: WeaponLaserCarbine result: WeaponLaserCarbine @@ -390,6 +390,30 @@ materials: 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 id: ShellShotgunIncendiary result: ShellShotgunIncendiary diff --git a/Resources/Prototypes/Store/meatyore_store_presset.yml b/Resources/Prototypes/Store/meatyore_store_presset.yml index 9a49a24504..c73ab3a8e4 100644 --- a/Resources/Prototypes/Store/meatyore_store_presset.yml +++ b/Resources/Prototypes/Store/meatyore_store_presset.yml @@ -19,6 +19,7 @@ currencyWhitelist: - MeatyOreCoin +# This is unused now - type: entity id: StoreMeatyOreEntity name: ThisIsDumb @@ -32,5 +33,4 @@ interfaces: enum.StoreUiKey.Key: type: StoreBoundUserInterface - range: -1 - type: IgnorBUIInteractionRange