From e59fa7ccb8b3e1c02047b0088fc6c7e1c6eedfb3 Mon Sep 17 00:00:00 2001 From: Kenneth Allen Date: Wed, 3 Nov 2021 23:52:10 +1100 Subject: [PATCH] Improve player struct display --- .../wonders-client/src/components/Civ/Civ.css | 11 ++++++- .../wonders-client/src/components/Civ/Civ.tsx | 32 ++++++++++++++----- packages/wonders-common/src/util.ts | 8 ++--- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/packages/wonders-client/src/components/Civ/Civ.css b/packages/wonders-client/src/components/Civ/Civ.css index 037defd..cee8a72 100644 --- a/packages/wonders-client/src/components/Civ/Civ.css +++ b/packages/wonders-client/src/components/Civ/Civ.css @@ -18,8 +18,10 @@ .wonder-civ-struct-group { list-style-type: none; padding-left: 0; + margin-top: 0.4em; + margin-bottom: 0.4em; font-size: 0.8em; - width: 12em; + width: 13em; } .wonder-civ-struct { border: thin black solid; @@ -32,3 +34,10 @@ .wonder-civ-struct-type-advanced-industry { background-color: lightgray; color: black; } .wonder-civ-struct-type-guild { background-color: purple; color: white; } .wonder-civ-struct-type-military { background-color: red; color: white; } +.wonder-civ-struct-age { + float: right; + font-size: 0.6em; + padding-left: 0.2em; + padding-right: 0.2em; + font-family: serif; +} diff --git a/packages/wonders-client/src/components/Civ/Civ.tsx b/packages/wonders-client/src/components/Civ/Civ.tsx index 4903006..2352e04 100644 --- a/packages/wonders-client/src/components/Civ/Civ.tsx +++ b/packages/wonders-client/src/components/Civ/Civ.tsx @@ -3,6 +3,7 @@ import { Player, playerStats, Resource, Science, Structure, StructureType, wonde import fill from 'lodash/fill' import './Civ.css' import classNames from 'classnames' +import { toRoman } from 'roman-numerals' type DisplayStyle = 'player' | 'neighbor' | 'distant' @@ -55,6 +56,27 @@ function structurePeek(struct: Structure): string { } } +function StructGroup({ pStats, displayStyle, type }: { pStats: ReturnType, displayStyle: DisplayStyle, type: StructureType }) { + const structs = pStats.structObjs.filter(o => o.structure.type === type).sort((a, b) => + a.age === b.age ? a.structure.name.localeCompare(b.structure.name) : a.age - b.age + ) + + if (displayStyle === 'distant') { + return
+ {structs.length} +
+ } + + return
    + {structs.map((s, i) => +
  1. + {s.structure.name} {structurePeek(s.structure)} +
    {toRoman(s.age + 1)}
    +
  2. + )} +
+} + export default function Civ({ player, displayStyle }: { player: Player, displayStyle: DisplayStyle }) { const pStats = useMemo(() => playerStats(player), [player]) @@ -70,14 +92,8 @@ export default function Civ({ player, displayStyle }: { player: Player, displayS
{structTypeLayout.get(displayStyle)!.map((col, i) =>
- {col.filter(type => pStats.structObjs.some(s => s.type === type)).map(type => -
    - {pStats.structObjs.filter(o => o.type === type).map((s, i) => -
  1. - {s.name} {structurePeek(s)} -
  2. - )} -
+ {col.filter(type => pStats.structObjs.some(s => s.structure.type === type)).map((type, i) => + )}
)} diff --git a/packages/wonders-common/src/util.ts b/packages/wonders-common/src/util.ts index 78661ed..a763298 100644 --- a/packages/wonders-common/src/util.ts +++ b/packages/wonders-common/src/util.ts @@ -39,12 +39,12 @@ export function sumMaps(ms?: (Map | undefined)[]) { } export function playerStats(p: Player) { - const structObjs = compact(p.structures.map(({ structure }) => structures.get(structure))) + const structObjs = compact(p.structures.map(s => ({ ...s, structure: structures.get(s.structure)! }))) return { structObjs, - resources: sumMaps(structObjs.map(s => s.resources)), - shields: sum(structObjs.map(s => s.shields)) ?? 0, - sciences: compact(structObjs.map(s => s.sciences)), + resources: sumMaps(structObjs.map(s => s.structure?.resources)), + shields: sum(structObjs.map(s => s.structure?.shields)) ?? 0, + sciences: compact(structObjs.map(s => s.structure?.sciences)), } }