using Content.Shared.GameObjects.Components.Cargo; using Content.Shared.Prototypes.Cargo; using Robust.Shared.GameObjects; using System; using System.Collections.Generic; namespace Content.Client.GameObjects.Components.Cargo { [RegisterComponent] public class CargoOrderDatabaseComponent : SharedCargoOrderDatabaseComponent { private List _orders = new List(); public IReadOnlyList Orders => _orders; /// /// Event called when the database is updated. /// public event Action OnDatabaseUpdated; // TODO add account selector menu /// /// Removes all orders from the database. /// public virtual void Clear() { _orders.Clear(); } /// /// Adds an order to the database. /// /// The order to be added. public virtual void AddOrder(CargoOrderData order) { if (!_orders.Contains(order)) _orders.Add(order); } public override void HandleComponentState(ComponentState curState, ComponentState nextState) { base.HandleComponentState(curState, nextState); if (!(curState is CargoOrderDatabaseState state)) return; Clear(); if (state.Orders == null) return; foreach (var order in state.Orders) { AddOrder(order); } OnDatabaseUpdated?.Invoke(); } } }