From 4d8d93d1dbfae56a830aa7244ca75d1d60e9b333 Mon Sep 17 00:00:00 2001 From: Helg2 <93882977+Helg2@users.noreply.github.com> Date: Mon, 29 Jul 2024 21:51:27 +0300 Subject: [PATCH] Req qols. (#53) * Optimizes and declutters the requests panel (#16245) * Fixes requesting console screen width (#16291) * Fixes supply tgui bluescreen (#16293) * Makes large req export histories more readable and less laggy (#16213) * Further declutters the export history (#16235) * Update map_blips.dmi * eh * Update minimaps.dm Signed-off-by: Helg2 <93882977+Helg2@users.noreply.github.com> --------- Signed-off-by: Helg2 <93882977+Helg2@users.noreply.github.com> Co-authored-by: Ldip999 <60290575+Ldip999@users.noreply.github.com> --- code/__DEFINES/obj_flags.dm | 12 +++-- code/modules/reqs/supply.dm | 62 +++++++++++++++++++------ icons/UI_Icons/map_blips.dmi | Bin 13031 -> 13067 bytes tgui/packages/tgui/interfaces/Cargo.js | 24 ++++++---- 4 files changed, 72 insertions(+), 26 deletions(-) diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 324034253df..dce8f52ff30 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -1,9 +1,13 @@ // Flags for the obj_flags var on /obj -#define IN_USE (1<<0) // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! -#define CAN_BE_HIT (1<<1) //can this be bludgeoned by items? -#define PROJ_IGNORE_DENSITY (1<<2) // If non-dense structures can still get hit by projectiles -#define LIGHT_CAN_BE_SHUT (1<<3) // Is sensible to nightfall ability, and its light will be turned off +///If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define IN_USE (1<<0) +///can this be bludgeoned by items? +#define CAN_BE_HIT (1<<1) +///If non-dense structures can still get hit by projectiles +#define PROJ_IGNORE_DENSITY (1<<2) +///Is sensible to nightfall ability, and its light will be turned off +#define LIGHT_CAN_BE_SHUT (1<<3) //Fire and Acid stuff, for resistance_flags #define INDESTRUCTIBLE (1<<0) //doesn't take damage diff --git a/code/modules/reqs/supply.dm b/code/modules/reqs/supply.dm index a5a34373783..2ea9be6ee17 100644 --- a/code/modules/reqs/supply.dm +++ b/code/modules/reqs/supply.dm @@ -335,7 +335,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["requests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["deniedrequests"] = list() @@ -347,7 +350,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["deniedrequests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["approvedrequests"] = list() @@ -357,8 +363,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( continue var/list/packs = list() var/cost = 0 - for(var/datum/supply_packs/SP AS in SO.pack) - packs += SP.type + for(var/P in SO.pack) + var/datum/supply_packs/SP = P + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["approvedrequests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["awaiting_delivery"] = list() @@ -367,16 +377,30 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/datum/supply_order/SO = LAZYACCESSASSOC(SSpoints.shoppinglist, faction, key) .["awaiting_delivery_orders"]++ var/list/packs = list() - for(var/datum/supply_packs/SP AS in SO.pack) - packs += SP.type - .["awaiting_delivery"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "packs" = packs, "authed_by" = SO.authorised_by)) + var/cost = 0 + for(var/P in SO.pack) + var/datum/supply_packs/SP = P + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 + cost += SP.cost + .["awaiting_delivery"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["export_history"] = list() var/id = 0 + var/lastexport = "" for(var/datum/export_report/report AS in SSpoints.export_history) if(report.faction != user.faction) continue - .["export_history"] += list(list("id" = id, "name" = report.export_name, "points" = report.points)) - id++ + if(report.points == 0) + continue + if(report.export_name == lastexport) + .["export_history"][id]["amount"] += 1 + .["export_history"][id]["total"] += report.points + else + .["export_history"] += list(list("id" = id, "name" = report.export_name, "points" = report.points, "amount" = 1, total = report.points)) + id++ + lastexport = report.export_name .["shopping_history"] = list() for(var/datum/supply_order/SO AS in SSpoints.shopping_history) if(SO.faction != user.faction) @@ -385,7 +409,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["shopping_history"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["shopping_list_cost"] = 0 @@ -542,7 +569,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["requests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["deniedrequests"] = list() @@ -554,7 +584,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["deniedrequests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["approvedrequests"] = list() @@ -566,7 +599,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/cost = 0 for(var/P in SO.pack) var/datum/supply_packs/SP = P - packs += SP.type + if(packs[SP.type]) + packs[SP.type] += 1 + else + packs[SP.type] = 1 cost += SP.cost .["approvedrequests"] += list(list("id" = SO.id, "orderer" = SO.orderer, "orderer_rank" = SO.orderer_rank, "reason" = SO.reason, "cost" = cost, "packs" = packs, "authed_by" = SO.authorised_by)) .["awaiting_delivery"] = list() diff --git a/icons/UI_Icons/map_blips.dmi b/icons/UI_Icons/map_blips.dmi index ac690297967e536da522c330f27622a1133a3030..9e7e1217c5830a710afe2a03e75396fa872744bd 100644 GIT binary patch delta 12471 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 pI#{U35s|GoeK delta 12435 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 diff --git a/tgui/packages/tgui/interfaces/Cargo.js b/tgui/packages/tgui/interfaces/Cargo.js index 9e9569a19c4..9fa76a9acba 100644 --- a/tgui/packages/tgui/interfaces/Cargo.js +++ b/tgui/packages/tgui/interfaces/Cargo.js @@ -41,7 +41,7 @@ export const Cargo = (props, context) => { : null; return ( - + @@ -84,7 +84,9 @@ const Exports = (props, context) => { {export_history.map((exp) => ( {exp.name} - {exp.points} points + + {exp.amount} x {exp.points} points ({exp.total}) + ))} @@ -312,18 +314,21 @@ const Packs = (props, context) => { const { act, data } = useBackend(context); const { packs } = props; - return packs.map((pack) => ); + return Object.keys(packs).map((pack) => ( + + )); }; const Pack = (props, context) => { const { act, data } = useBackend(context); - const { pack } = props; + const { pack, amount } = props; const { supplypackscontents } = data; const { name, cost, contains } = supplypackscontents[pack]; + return !!contains && contains.constructor === Object ? ( }> + title={}>
@@ -334,12 +339,13 @@ const Pack = (props, context) => { }; const PackName = (props, context) => { - const { cost, name, pl } = props; + const { cost, name, pl, amount } = props; return ( - - {cost} points + + {amount ? amount + 'x' : ''} + {cost} points {amount ? '(' + amount * cost + ')' : ''} {name} @@ -583,7 +589,7 @@ export const CargoRequest = (props, context) => { : null; return ( - +