New REM client: REM-Client 8cf8582, 64-bit (inventory by hardpoint with Mount / Unmount when docked; the equipment dealer's offers show their target hardpoint, AMMO, INTERNAL or INCOMPATIBLE; hold bar and credits at the commodity trader; the dealers' amount as a wide bar with a scale; the ship dealer's stats laid out again)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-06 08:56:38 +01:00
co-authored by Claude Opus 5.5
parent a4057593d5
commit c10e4953ac
5 changed files with 77 additions and 23 deletions
+36 -6
View File
@@ -21,7 +21,20 @@
.pick-head img { width: 40dp; height: 40dp; margin-right: 12dp; }
.pick-head .t { font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 18dp; }
.jet { display: flex; flex-direction: row; align-items: center; margin-top: 10dp; }
.jet input.range { margin-right: 10dp; }
.jet .abar { margin-right: 10dp; }
/* as the equipment dealer's list: the ship's hardpoints (what sits on each, the empty ones dim), what is mounted
without one, the hold -- not mounted, an amber edge; the hold's bar over the list (rem.rcss .dstat) */
.sec { display: flex; flex-direction: row; align-items: center; margin: 12dp 0 4dp 0; padding-bottom: 3dp; border-bottom: 1dp #2b6f9e; font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 12dp; letter-spacing: 2dp; color: #5cc8f0; }
.sec:first-child { margin-top: 0; }
.sec .cnt { margin-left: auto; font-family: "IBM Plex Mono"; font-weight: 400; letter-spacing: 0; color: #8197ad; }
.sec.held { color: #f2b13c; border-bottom-color: #f2b13c66; }
.inv .slot { font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 10dp; letter-spacing: 1dp; text-transform: uppercase; white-space: nowrap; color: #8fb3d0; }
.inv.empty .n { color: #5c7a94; }
.inv.empty .txt { margin-left: 40dp; }
.inv.held { border-left-color: #f2b13c66; }
.inv.held.selected { border-left-color: #f2b13c; }
.holdrow { display: flex; flex-direction: row; margin-bottom: 8dp; }
.holdrow .dstat { margin-left: 0; }
.jet .btn { margin: 0; }
</style>
</head>
@@ -30,7 +43,6 @@
<img class="head-ico" src="3db:INTERFACE/REM/IMAGES/icon_cargo.3db"/>
<span class="title">INVENTORY</span><span class="sl">\\\</span>
<span class="spacer"></span>
<span class="chip">Hold <span class="v">{{ hold }}</span></span>
<span class="close" data-action="close">&#215;</span>
</div>
<div class="win-main">
@@ -44,12 +56,26 @@
<div class="content">
<div class="split">
<div class="colm list-col">
<div class="holdrow"><div class="dstat"><span class="sk">HOLD</span><div class="hbar"><div class="hf" data-class-warn="hold_pct &gt;= 75" data-class-bad="hold_pct &gt;= 100" data-style-width="hold_pct + '%'"></div><span class="ht">{{ hold }}</span></div></div></div>
<input class="text search" type="text" data-value="search" maxlength="40" style="margin-bottom: 8dp;"/>
<div class="list">
<div class="hint" style="padding: 10dp;" data-if="items.size == 0">Nothing here.</div>
<div class="inv" data-for="r : items" data-class-selected="r.selected" data-action="pick" data-attr-data-arg="r.key">
<div class="sec" data-if="hps.size &gt; 0">HARDPOINTS<span class="cnt">{{ hp_used }} / {{ hps.size }}</span></div>
<div class="inv" data-for="r : hps" data-class-empty="r.key == ''" data-class-selected="r.selected" data-action="pick" data-attr-data-arg="r.key">
<img data-if="r.icon != ''" data-attr-src="r.icon"/>
<div class="txt"><div class="n">{{ r.name }}</div><div class="note">{{ r.note }}</div></div>
<div class="txt"><div class="n">{{ r.key == '' ? 'empty' : r.name }}</div><div class="slot">{{ r.slot }}</div></div>
<span class="c">{{ r.note }}</span>
</div>
<div class="sec" data-if="inside.size &gt; 0">MOUNTED, NO HARDPOINT</div>
<div class="inv" data-for="r : inside" data-class-selected="r.selected" data-action="pick" data-attr-data-arg="r.key">
<img data-if="r.icon != ''" data-attr-src="r.icon"/>
<div class="txt"><div class="n">{{ r.name }}</div><div class="note" data-if="r.note != ''">{{ r.note }}</div></div>
<span class="c">{{ r.count }}</span>
</div>
<div class="sec held">CARGO HOLD &#183; NOT MOUNTED<span class="cnt">{{ items.size }}</span></div>
<div class="hint" style="padding: 10dp;" data-if="items.size == 0">Nothing in the hold.</div>
<div class="inv held" data-for="r : items" data-class-selected="r.selected" data-action="pick" data-attr-data-arg="r.key">
<img data-if="r.icon != ''" data-attr-src="r.icon"/>
<div class="txt"><div class="n">{{ r.name }}</div><div class="note" data-if="r.note != ''">{{ r.note }}</div></div>
<span class="c">{{ r.count }}</span>
</div>
</div>
@@ -59,8 +85,12 @@
<div data-if="has_pick">
<div class="pick-head"><img data-if="pick.icon != ''" data-attr-src="pick.icon"/><div><div class="t">{{ pick.name }}</div><div class="hint">{{ pick.note }}</div></div></div>
<div class="card">{{ info }}</div>
<div class="jet" data-if="mount_label != ''"><div class="btn primary" data-action="mount">{{ mount_label }}<div class="tip">{{ mount_tip }}</div></div></div>
<div class="jet" data-if="can_jettison">
<input class="range" type="range" min="1" step="1" data-attr-max="amount_max" data-value="amount"/>
<div class="abar" data-scrub="amount-at" data-class-off="amount_max &lt;= 1">
<div class="arail"><div class="afill" data-style-width="amount_max &gt; 1 ? (amount - 1) * 100 / (amount_max - 1) + '%' : '100%'"></div><div class="tk" style="left: 25%;"></div><div class="tk" style="left: 50%;"></div><div class="tk" style="left: 75%;"></div><div class="aknob" data-style-left="amount_max &gt; 1 ? (amount - 1) * 100 / (amount_max - 1) + '%' : '100%'"></div></div>
<div class="aticks" data-if="amount_max &gt; 1"><span class="lo" style="left: 0;">1</span><span style="left: 25%;" data-if="amount_max &gt;= 5">{{ 1 + (amount_max - 1) / 4 | format(0) }}</span><span style="left: 50%;" data-if="amount_max &gt;= 3">{{ 1 + (amount_max - 1) / 2 | format(0) }}</span><span style="left: 75%;" data-if="amount_max &gt;= 5">{{ 1 + (amount_max - 1) * 3 / 4 | format(0) }}</span><span class="hi">{{ amount_max }}</span></div>
</div>
<span class="num" style="width: 60dp; text-align: right; margin-right: 12dp;">{{ amount }}</span>
<div class="btn danger" data-action="jettison">Jettison<div class="tip">Throws the amount overboard. It floats in space as loot.</div></div>
</div>