Cargo Console Limit (#1095)

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
This commit is contained in:
windarkata
2020-07-02 07:45:40 -05:00
committed by GitHub
parent 7e061b5968
commit 6775ae8153
7 changed files with 81 additions and 18 deletions

View File

@@ -95,5 +95,11 @@ namespace Content.Server.Cargo
return null;
return account.GetOrders();
}
public (int CurrentCapacity, int MaxCapacity) GetCapacity(int id)
{
TryGetAccount(id, out var account);
return (account.CurrentOrderSize, account.MaxOrderSize);
}
}
}

View File

@@ -1,4 +1,5 @@
using Content.Shared.Prototypes.Cargo;
using Robust.Shared.Localization;
using System.Collections.Generic;
using System.Linq;
@@ -12,9 +13,13 @@ namespace Content.Server.Cargo
public CargoOrderDatabase(int id)
{
Id = id;
CurrentOrderSize = 0;
MaxOrderSize = 20;
}
public int Id { get; private set; }
public int CurrentOrderSize { get; private set; }
public int MaxOrderSize { get; private set; }
/// <summary>
/// Removes all orders from the database.
@@ -86,9 +91,18 @@ namespace Content.Server.Cargo
/// <param name="order">The order to be approved.</param>
public void ApproveOrder(int orderNumber)
{
if (CurrentOrderSize == MaxOrderSize)
return;
if (!_orders.TryGetValue(orderNumber, out var order))
return;
else if (CurrentOrderSize + order.Amount > MaxOrderSize)
{
AddOrder(order.Requester, Loc.GetString("{0} (Overflow)", order.Reason.Replace(" (Overflow)","")), order.ProductId,
order.Amount - MaxOrderSize - CurrentOrderSize, order.PayingAccountId);
order.Amount = MaxOrderSize - CurrentOrderSize;
}
order.Approved = true;
CurrentOrderSize += order.Amount;
}
/// <summary>
@@ -100,5 +114,13 @@ namespace Content.Server.Cargo
{
return _orders.ContainsValue(order);
}
/// <summary>
/// Clears the current order capacity. This allows more orders to be processed and is invoked after an order is dispatched.
/// </summary>
public void ClearOrderCapacity()
{
CurrentOrderSize = 0;
}
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Content.Server.GameObjects.Components.Cargo;
using Content.Shared.Prototypes.Cargo;
@@ -13,5 +14,6 @@ namespace Content.Server.Cargo
void AddComponent(CargoOrderDatabaseComponent component);
List<CargoOrderData> GetOrdersFromAccount(int accountId);
List<CargoOrderData> RemoveAndGetApprovedFrom(CargoOrderDatabase database);
(int CurrentCapacity, int MaxCapacity) GetCapacity(int id);
}
}