using System; using System.Collections.Generic; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; using Robust.Shared.GameObjects; namespace Content.Client.Cargo.Components { [RegisterComponent] public class CargoOrderDatabaseComponent : SharedCargoOrderDatabaseComponent { private readonly List _orders = new(); 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 not CargoOrderDatabaseState state) return; Clear(); if (state.Orders == null) return; foreach (var order in state.Orders) { AddOrder(order); } OnDatabaseUpdated?.Invoke(); } } }