REM-Client b240ec16: QoL - chat mentions (tab, sound), auto repair after docking, ship comparison at the dealer, loadout presets (Base Manager page Loadouts), shared nav map bookmarks, Play again for repeatable story chapters, mail from the attention icon

This commit is contained in:
2026-11-10 10:57:32 +01:00
parent 561743134c
commit 966aff7575
31 changed files with 50 additions and 5 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
REM-Client test build (64-bit)
date: 2026-11-10 10:24
commit: 771c9ce7 (main)
subject: Server list: Connect, Refresh and Star in one row on top of the side column, Connect twice as wide
date: 2026-11-10 10:56
commit: b240ec16 (main)
subject: QoL: chat mentions, auto repair, ship comparison, loadout presets, shared bookmarks, "Play again", mail from the attention icon
tree: clean
build: OK
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+34
View File
@@ -174,6 +174,7 @@
<div class="item" data-class-active="page == 9" data-action="page" data-arg="9"><img class="ico" src="3db:INTERFACE/REM/IMAGES/icon_contracts.3db"/><span>Contracts</span><div class="tip">Trade bundles with other pilots - goods, equipment, ammunition and credits - or have them carried.</div></div>
<div class="sep"></div>
<div class="item" data-class-active="page == 10" data-action="page" data-arg="10"><img class="ico" src="3db:INTERFACE/NEURONET/ICONS/NN_Chat.3db"/><span>Mail</span><span class="badge" data-if="mail_unread &gt; 0">{{ mail_unread }}</span><div class="tip">Letters to any pilot, also offline - with credits and items from your depot.</div></div>
<div class="item" data-class-active="page == 11" data-action="page" data-arg="11"><img class="ico" src="3db:INTERFACE/REM/IMAGES/icon_ships.3db"/><span>Loadouts</span><div class="tip">Save your mounted equipment and put it back on with one click - what is missing is bought here.</div></div>
</div>
<div class="content" id="base-pages" data-model="base">
<div class="blocked" data-if="blocked != 0">
@@ -181,6 +182,39 @@
<div>{{ blocked_text }}</div>
</div>
<!-- ================================================= LOADOUTS -->
<div class="page" data-if="blocked == 0 &amp;&amp; page == 11">
<div class="colm gap">
<div class="col-h"><h3>Loadouts</h3><span class="hint">{{ lo_rows.size }} saved</span></div>
<div class="hint" data-if="lo_rows.size == 0">No loadouts yet. Mount what you like, give it a name below and save it.</div>
<div class="table" data-if="lo_rows.size &gt; 0" style="height: 260dp;">
<div class="body">
<div class="row" data-for="r : lo_rows" data-class-selected="r.selected" data-action="lo-pick" data-attr-data-arg="r.key">
<span class="c1">{{ r.a }}</span><span class="c2">{{ r.b }}{{ r.current ? '' : ' (other ship)' }}</span><span class="c3">{{ r.c }}</span>
</div>
</div>
</div>
<div class="namefield" style="margin-top: 10dp;"><span class="label">Name</span><input class="text" type="text" data-value="lo_name" maxlength="40"/></div>
<div class="actions" style="margin-top: 8dp;"><div class="btn" data-action="lo-save">Save current loadout<div class="tip">Saves what is mounted now under the name (the same name replaces it).</div></div></div>
</div>
<div class="colm gap">
<div class="col-h"><h3>What it does here</h3><span class="hint">{{ lo_cost }}</span></div>
<div class="hint" data-if="!lo_sel">Pick a loadout.</div>
<div class="table" data-if="lo_sel" style="height: 380dp;">
<div class="body">
<div class="row" data-for="r : lo_plan" data-class-short="r.short">
<span class="c1">{{ r.b }}</span><span class="c2">{{ r.a }}</span><span class="c3">{{ r.c }}</span><span class="c3">{{ r.d }}</span>
</div>
</div>
</div>
<div class="actions" style="margin-top: 8dp;" data-if="lo_sel">
<div class="btn primary" data-action="lo-apply">Apply<div class="tip">Mounts what is in the hold, buys what is missing on this base and mounts it.</div></div>
<div class="btn" data-action="lo-del">Delete</div>
</div>
<div class="hint" style="margin-top: 8dp;" data-if="lo_msg != ''">{{ lo_msg }}</div>
</div>
</div>
<!-- ================================================= DEPOT -->
<div class="page" data-if="blocked == 0 &amp;&amp; page == 0">
<div class="blocked" data-if="depot_state == 0 &amp;&amp; !depot_remote">
+1
View File
@@ -39,6 +39,7 @@
<div class="tgl" data-action="players"><div class="box" data-class-on="hide_players"></div><span class="l">Hide players' chat (universe, system, local - group and private messages stay)</span></div>
<div class="info">Hides the server's NPC pilots ([NPC] names) from the chat, the player list of the chat window, the chat targets and the contact list.</div>
<div class="tgl" style="margin-top: 8dp;" data-action="stamps"><div class="box" data-class-on="stamps"></div><span class="l">Show times in the chat history</span></div>
<div class="tgl" style="margin-top: 8dp;" data-action="mention"><div class="box" data-class-on="mention_sound"></div><span class="l">Sound when someone writes your name</span></div>
</div>
<div class="sec">
<h3>Muted players</h3>
+1 -1
View File
@@ -48,7 +48,7 @@
<div class="head"><span class="c1">Mission</span><span class="c2">Where (mission board)</span><span class="c3" style="text-align: left;">Status</span></div>
<div class="body">
<div class="empty" data-if="playable.size == 0">No missions known yet.</div>
<div class="row" data-for="r : playable" data-class-current="r.current" data-class-done="r.key == 'd'"><span class="c1">{{ r.a }}</span><span class="c2">{{ r.b }}</span><span class="c3" style="text-align: left;">{{ r.c }}</span></div>
<div class="row" data-for="r : playable" data-class-current="r.current" data-class-done="r.key == 'd'"><span class="c1">{{ r.a }}</span><span class="c2">{{ r.b }}</span><span class="c3" style="text-align: left;">{{ r.c }}</span><div class="btn small" data-if="r.key == 'r'" data-action="replay" data-attr-data-arg="r.arg">Play again<div class="tip">Docked at a base that offers it: its mission board opens. Elsewhere: where to fly.</div></div></div>
</div>
</div>
</div>
+11 -1
View File
@@ -28,6 +28,15 @@
.stat { display: flex; flex-direction: row; padding: 3dp 0; border-bottom: 1dp #ffffff08; font-size: 13dp; }
.stat .l { flex: 1; color: #8197ad; }
.stat .v { font-family: "IBM Plex Mono"; text-align: right; }
/* REM: the own ship beside it - its value and the difference (more green, less red) */
.stat .o { font-family: "IBM Plex Mono"; text-align: right; width: 70dp; margin-left: 10dp; color: #5cc8f0; }
.stat .d { font-family: "IBM Plex Mono"; text-align: right; width: 52dp; color: #8197ad; }
.stat .d.up { color: #6fd08c; }
.stat .d.down { color: #ef6a5b; }
.stathead { display: flex; flex-direction: row; font-size: 11dp; letter-spacing: 1dp; color: #8197ad; text-transform: uppercase; padding-bottom: 3dp; }
.stathead .sp { flex: 1; }
.stathead .o { width: 70dp; text-align: right; color: #5cc8f0; }
.stathead .d { width: 52dp; text-align: right; }
.deal { margin-top: 14dp; padding: 12dp; display: flex; flex-direction: row; align-items: center; background-color: #5cc8f010; }
.deal .txt { flex: 1; min-width: 0; }
.deal .t { font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 18dp; }
@@ -70,7 +79,8 @@
</div>
<div class="colm facts">
<h3 style="margin-bottom: 8dp;">Specifications</h3>
<div class="stat" data-for="s : stats"><span class="l">{{ s.label }}</span><span class="v">{{ s.value }}</span></div>
<div class="stathead" data-if="compare"><span class="sp">This ship</span><span class="o">Yours</span><span class="d">Diff</span></div>
<div class="stat" data-for="s : stats"><span class="l">{{ s.label }}</span><span class="v">{{ s.value }}</span><span class="o" data-if="compare">{{ s.own }}</span><span class="d" data-if="compare" data-class-up="s.dir &gt; 0" data-class-down="s.dir &lt; 0">{{ s.diff }}</span></div>
<div class="info">{{ pick_info }}</div>
</div>
</div>
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.