New REM client: REM-Client 158566c, 64-bit (market window after EVE Online with price chart and order book; trade tax and courier fee in the dealers; equipment dealer: autobuy panel, "loot only", "Sell all loot" with a keep list, mounting only onto free hardpoints; [AFK] after 5 minutes idle or tabbed out; option bars clickable and draggable; player cloak; waypoint bot on F2; nav map in the original's look with gliding zoom; radar after Jeider's super radar; admin window; RemGfx R27-R32: nebula swathes, hull finish, sun corona, glass, planets, soft shadows; smoother ship paths in multiplayer)

This commit is contained in:
2026-11-02 22:32:18 +01:00
parent 279d10a91d
commit 128cb2527e
27 changed files with 407 additions and 36 deletions
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+8 -2
View File
@@ -89,6 +89,10 @@ Overlay = 1
; R4 sun shadows in space and space cutscenes (cascaded shadow maps): ShadowMapSize is the atlas
; of the four cascades (2048 / 4096 / 8192), ShadowDistance how far from the camera (metres).
Shadows = 1
; R32 soft shadow-map shadows (PCSS): the sun's angular size in degrees -- sharp where a shadow touches
; its caster, softer farther away (0 = the fixed 3x3 filter). The ray-traced shadows (RtShadows) are
; not affected.
ShadowSoftness = 1.5
ShadowMapSize = 4096
ShadowDistance = 3000
; PlanetShadows = 1: planets also receive the shadows of ships, docking rings and stations
@@ -102,11 +106,13 @@ ShadowCullMargin = 400
DynamicLights = 1
; R17 weapon lights: laser beams light their surroundings along their length, muzzle flashes,
; projectiles, impacts and explosions as points in the colour of their particles (needs
; DynamicLights = 1). WeaponGlow draws weapon effects brighter for the bloom (1 = original).
; DynamicLights = 1). WeaponGlow draws weapon effects brighter for the bloom (1 = original, below 1
; dimmer); BeamGlow the lasers' glowing volumes (R24, 0 = off).
WeaponLights = 1
WeaponLightIntensity = 1.0
WeaponLightRange = 1.0
WeaponGlow = 1.6
WeaponGlow = 1.0
BeamGlow = 0.4
; R2 debug view (diagnosis from screenshots): 0 off, 1 normals, 2 depth (1 m black .. 130 km
; white), 3 motion vectors (grey = still, magenta = unknown), 4 material class (glass, nomad,
; planet water, engine glow ... one colour each), 5 game object (one colour per object), 6 phase
Binary file not shown.
Binary file not shown.
+62
View File
@@ -0,0 +1,62 @@
<rml>
<head>
<title>Admin</title>
<link type="text/rcss" href="rem.rcss"/>
<style>
.split { flex: 1; display: flex; flex-direction: row; min-height: 0; }
.side { flex: 0 0 38%; display: flex; flex-direction: column; min-height: 0; margin-right: 18dp; }
.list { flex: 1 1 0; min-height: 0; overflow-y: auto; border: 1dp #24405c; border-radius: 3dp; }
.row { padding: 6dp 10dp; border-bottom: 1dp #ffffff08; border-left: 2dp #00000000; font-family: "IBM Plex Mono"; font-size: 14dp; }
.row:hover { background-color: #122033; }
.row.selected { background-color: #f2b13c24; border-left-color: #f2b13c; }
.detail { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.help { padding: 12dp 14dp; border: 1dp #24405c; border-radius: 3dp; background-color: #0d1622; line-height: 1.5; margin-bottom: 14dp; }
.cmd { font-family: "IBM Plex Mono"; font-size: 18dp; color: #f2b13c; margin-bottom: 8dp; }
.runline { display: flex; flex-direction: row; align-items: center; }
.runline input { flex: 1; margin-right: 10dp; }
.search { margin-bottom: 8dp; }
.recent { margin-top: 14dp; }
.recent .row { font-size: 13dp; color: #8197ad; }
</style>
</head>
<body class="window medium" data-model="admin">
<div class="win-head">
<img class="head-ico" src="3db:INTERFACE/NEURONET/ICONS/rem_player.3db"/>
<span class="title">ADMIN</span>
<span class="spacer"></span>
<span class="chip">{{ commands.size }} commands</span>
<span class="close" data-action="close">&#215;</span>
</div>
<div class="win-main">
<div class="content">
<div class="split">
<div class="side">
<input class="text search" type="text" data-value="filter" maxlength="40"/>
<div class="list">
<div class="hint" style="padding: 10dp;" data-if="commands.size == 0">{{ received ? 'No command matches.' : 'Asking the server...' }}</div>
<div class="row" data-for="c : commands" data-class-selected="c.selected" data-action="pick" data-attr-data-arg="c.name">{{ c.name }}</div>
</div>
</div>
<div class="detail">
<div class="help">
<div class="cmd">{{ has_pick ? pick_name : 'Pick a command' }}</div>
<div>{{ has_pick ? pick_help : 'Every admin command of the server, run from here - its answer comes in the chat.' }}</div>
</div>
<div class="label">Arguments</div>
<div class="runline">
<input class="text" type="text" data-value="args" maxlength="200"/>
<div class="btn primary" data-class-disabled="!has_pick" data-action="run">Run<div class="tip">Runs the command on the server as you typed it; the answer comes as a system message in the chat.</div></div>
</div>
<div class="recent" data-if="recent.size &gt; 0">
<div class="label">Run here</div>
<div class="row" data-for="r : recent" data-action="again" data-attr-data-arg="r">{{ r }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="win-foot">
<span class="key">Esc</span><span class="hint">close</span>
</div>
</body>
</rml>
+3 -3
View File
@@ -503,11 +503,11 @@
</div>
</div>
<div class="table" data-if="courier_has_depot" style="height: 150dp;">
<div class="head"><span class="c1">To your depot on</span></div>
<div class="head"><span class="c1">To your depot on</span><span class="c2">Fee</span></div>
<div class="body">
<div class="empty" data-if="courier_targets.size == 0">You have no other depot.</div>
<div class="row" data-for="r : courier_targets" data-class-selected="r.selected" data-action="pick-courier-target" data-attr-data-arg="r.key">
<span class="c1">{{ r.a }}</span>
<span class="c1">{{ r.a }}</span><span class="c2">{{ r.b }}</span>
</div>
</div>
</div>
@@ -519,7 +519,7 @@
</div>
<div class="hint" data-if="courier_msg != ''">{{ courier_msg }}</div>
<div class="actions" data-if="courier_has_depot">
<div class="btn primary" data-class-disabled="!can_send" data-action="send-couriers">Send couriers<div class="tip">The cargo leaves your depot now; couriers fly it to the depot you picked (several when it does not fit one hold).</div></div>
<div class="btn primary" data-class-disabled="!can_send" data-action="send-couriers">Send couriers<div class="tip">The cargo leaves your depot now; couriers fly it to the depot you picked (several when it does not fit one hold). The fee is paid from your credits.</div></div>
</div>
</div>
</div>
+15 -12
View File
@@ -31,13 +31,13 @@
.chips { position: absolute; left: 0; top: 0; width: 242dp; height: 11dp; display: flex; flex-direction: row; }
.sg { flex: 1; height: 11dp; margin-right: 2dp; }
.sg:last-child { margin-right: 0; }
.fillbox { position: absolute; left: 0; top: 0; height: 11dp; overflow: hidden; }
.power .chips.dim .sg { background-color: #a7a15e33; }
.power .fillbox .sg { background-color: #c9c272; }
.shield .chips.dim .sg { background-color: #3e3db544; }
.shield .fillbox .sg { background-color: #5856dc; }
.hull .chips.dim .sg { background-color: #782a3355; }
.hull .fillbox .sg { background-color: #b53844; }
/* each segment lit by the value (no clipped fill row: the HUD's scaled parts are not clipped) */
.power .sg { background-color: #a7a15e33; }
.power .sg.lit { background-color: #c9c272; }
.shield .sg { background-color: #3e3db544; }
.shield .sg.lit { background-color: #5856dc; }
.hull .sg { background-color: #782a3355; }
.hull .sg.lit { background-color: #b53844; }
/* --- bottom left: target / contacts --------------------------------------------------- */
.lhead { left: 46dp; bottom: 289dp; width: 291dp; height: 52dp; display: flex; flex-direction: row; align-items: center; padding: 0 6dp 0 10dp; }
@@ -70,6 +70,8 @@
.w.on { color: #7cf27c; }
.w .n { flex: 1; white-space: nowrap; overflow: hidden; }
.w .a { margin-left: 8dp; }
.w.cloak { border-top: 1dp #24405c; margin-top: 4dp; color: #8fb8d8; }
.w.cloak.on { color: #b98cf2; }
.special { color: #f2d23c; font-size: 18dp; margin-top: 6dp; }
/* the HUD editor: four layers over the whole screen, each moved / sized as one */
.grp { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; }
@@ -110,9 +112,9 @@
<div data-if="core || editing">
<div class="fp inner thrust" data-class-low="thrust_low">{{ thrust }}</div>
<div class="fp bars">
<div class="bar power"><div class="chips dim"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div><div class="fillbox" data-style-width="power"><div class="chips"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div></div></div>
<div class="bar shield"><div class="chips dim"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div><div class="fillbox" data-style-width="shield"><div class="chips"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div></div></div>
<div class="bar hull"><div class="chips dim"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div><div class="fillbox" data-style-width="hull"><div class="chips"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div></div></div>
<div class="bar power"><div class="chips"><div class="sg" data-class-lit="power_n > 0"></div><div class="sg" data-class-lit="power_n > 1"></div><div class="sg" data-class-lit="power_n > 2"></div><div class="sg" data-class-lit="power_n > 3"></div><div class="sg" data-class-lit="power_n > 4"></div><div class="sg" data-class-lit="power_n > 5"></div><div class="sg" data-class-lit="power_n > 6"></div><div class="sg" data-class-lit="power_n > 7"></div><div class="sg" data-class-lit="power_n > 8"></div><div class="sg" data-class-lit="power_n > 9"></div><div class="sg" data-class-lit="power_n > 10"></div><div class="sg" data-class-lit="power_n > 11"></div><div class="sg" data-class-lit="power_n > 12"></div><div class="sg" data-class-lit="power_n > 13"></div><div class="sg" data-class-lit="power_n > 14"></div><div class="sg" data-class-lit="power_n > 15"></div></div></div>
<div class="bar shield"><div class="chips"><div class="sg" data-class-lit="shield_n > 0"></div><div class="sg" data-class-lit="shield_n > 1"></div><div class="sg" data-class-lit="shield_n > 2"></div><div class="sg" data-class-lit="shield_n > 3"></div><div class="sg" data-class-lit="shield_n > 4"></div><div class="sg" data-class-lit="shield_n > 5"></div><div class="sg" data-class-lit="shield_n > 6"></div><div class="sg" data-class-lit="shield_n > 7"></div><div class="sg" data-class-lit="shield_n > 8"></div><div class="sg" data-class-lit="shield_n > 9"></div><div class="sg" data-class-lit="shield_n > 10"></div><div class="sg" data-class-lit="shield_n > 11"></div><div class="sg" data-class-lit="shield_n > 12"></div><div class="sg" data-class-lit="shield_n > 13"></div><div class="sg" data-class-lit="shield_n > 14"></div><div class="sg" data-class-lit="shield_n > 15"></div></div></div>
<div class="bar hull"><div class="chips"><div class="sg" data-class-lit="hull_n > 0"></div><div class="sg" data-class-lit="hull_n > 1"></div><div class="sg" data-class-lit="hull_n > 2"></div><div class="sg" data-class-lit="hull_n > 3"></div><div class="sg" data-class-lit="hull_n > 4"></div><div class="sg" data-class-lit="hull_n > 5"></div><div class="sg" data-class-lit="hull_n > 6"></div><div class="sg" data-class-lit="hull_n > 7"></div><div class="sg" data-class-lit="hull_n > 8"></div><div class="sg" data-class-lit="hull_n > 9"></div><div class="sg" data-class-lit="hull_n > 10"></div><div class="sg" data-class-lit="hull_n > 11"></div><div class="sg" data-class-lit="hull_n > 12"></div><div class="sg" data-class-lit="hull_n > 13"></div><div class="sg" data-class-lit="hull_n > 14"></div><div class="sg" data-class-lit="hull_n > 15"></div></div></div>
</div>
<div class="fp inner speed">{{ speed }}</div>
</div>
@@ -132,8 +134,8 @@
<div data-if="has_target">
<div class="tname">{{ target_name }}</div>
<div class="tsub">{{ target_sub }} {{ target_rank }} {{ target_range }}</div>
<div class="tbar hull"><span class="l">Hull</span><div class="bar"><div class="chips dim"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div><div class="fillbox" data-style-width="target_hull"><div class="chips"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div></div></div></div>
<div class="tbar shield" data-if="target_has_shield"><span class="l">Shield</span><div class="bar"><div class="chips dim"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div><div class="fillbox" data-style-width="target_shield"><div class="chips"><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div><div class="sg"></div></div></div></div></div>
<div class="tbar hull"><span class="l">Hull</span><div class="bar"><div class="chips"><div class="sg" data-class-lit="target_hull_n > 0"></div><div class="sg" data-class-lit="target_hull_n > 1"></div><div class="sg" data-class-lit="target_hull_n > 2"></div><div class="sg" data-class-lit="target_hull_n > 3"></div><div class="sg" data-class-lit="target_hull_n > 4"></div><div class="sg" data-class-lit="target_hull_n > 5"></div><div class="sg" data-class-lit="target_hull_n > 6"></div><div class="sg" data-class-lit="target_hull_n > 7"></div><div class="sg" data-class-lit="target_hull_n > 8"></div><div class="sg" data-class-lit="target_hull_n > 9"></div><div class="sg" data-class-lit="target_hull_n > 10"></div><div class="sg" data-class-lit="target_hull_n > 11"></div><div class="sg" data-class-lit="target_hull_n > 12"></div><div class="sg" data-class-lit="target_hull_n > 13"></div><div class="sg" data-class-lit="target_hull_n > 14"></div><div class="sg" data-class-lit="target_hull_n > 15"></div></div></div></div>
<div class="tbar shield" data-if="target_has_shield"><span class="l">Shield</span><div class="bar"><div class="chips"><div class="sg" data-class-lit="target_shield_n > 0"></div><div class="sg" data-class-lit="target_shield_n > 1"></div><div class="sg" data-class-lit="target_shield_n > 2"></div><div class="sg" data-class-lit="target_shield_n > 3"></div><div class="sg" data-class-lit="target_shield_n > 4"></div><div class="sg" data-class-lit="target_shield_n > 5"></div><div class="sg" data-class-lit="target_shield_n > 6"></div><div class="sg" data-class-lit="target_shield_n > 7"></div><div class="sg" data-class-lit="target_shield_n > 8"></div><div class="sg" data-class-lit="target_shield_n > 9"></div><div class="sg" data-class-lit="target_shield_n > 10"></div><div class="sg" data-class-lit="target_shield_n > 11"></div><div class="sg" data-class-lit="target_shield_n > 12"></div><div class="sg" data-class-lit="target_shield_n > 13"></div><div class="sg" data-class-lit="target_shield_n > 14"></div><div class="sg" data-class-lit="target_shield_n > 15"></div></div></div></div>
<div class="tbtns">
<div class="ib" data-for="b : target_buttons" data-action="tbutton" data-attr-data-arg="b.key"><img class="ico" data-attr-src="b.icon"/></div>
</div>
@@ -171,6 +173,7 @@
<div class="w" data-for="w : weapons" data-class-on="w.active" data-action="weapon" data-attr-data-arg="w.key">
<span class="n">{{ w.key + 1 }} {{ w.name }}</span><span class="a">{{ w.ammo }}</span>
</div>
<div class="w cloak" data-if="has_cloak" data-class-on="cloak_on" data-action="cloak"><span class="n">{{ cloak_name }}</span><span class="a">{{ cloak_on ? 'ON' : 'OFF' }}</span></div>
<div class="special" data-if="special != ''">{{ special }}</div>
</div>
</div>
+1 -1
View File
@@ -3,7 +3,7 @@
<title>Loading</title>
<link type="text/rcss" href="rem.rcss"/>
<style>
body.loaddoc { position: absolute; left: 0; top: 0; width: 0; height: 0; display: block; background-color: transparent; }
body.loaddoc { position: absolute; left: 0; top: 0; right: 0; bottom: 0; display: block; background-color: transparent; pointer-events: none; }
.load { position: absolute; left: 50%; bottom: 60dp; transform: translateX(-50%); width: 420dp; padding: 10dp 16dp 12dp 16dp; background-color: #070b12d9; border: 2dp #3d6d96; border-top: 2dp #f2b13c; border-radius: 4dp; }
.load .t { font-family: "Saira SemiCondensed"; font-weight: 700; font-size: 18dp; letter-spacing: 4dp; color: #dbe6f0; text-align: center; margin-bottom: 8dp; }
.load .track { position: relative; height: 4dp; background-color: #24405c; border-radius: 2dp; }
+232
View File
@@ -0,0 +1,232 @@
<rml>
<head>
<title>Market</title>
<link type="text/rcss" href="rem.rcss"/>
<style>
.split { flex: 1; display: flex; flex-direction: row; min-height: 0; }
.goods { flex: 0 0 31%; display: flex; flex-direction: column; min-height: 0; margin-right: 18dp; }
.detail { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow-y: auto; }
.list { flex: 1 1 0; min-height: 0; overflow-y: auto; border: 1dp #24405c; border-radius: 3dp; }
.g { display: flex; flex-direction: row; align-items: center; padding: 5dp 10dp; border-bottom: 1dp #ffffff08; border-left: 2dp #00000000; font-size: 14dp; }
.g:hover { background-color: #122033; }
.g.selected { background-color: #f2b13c24; border-left-color: #f2b13c; }
.g .n { flex: 1; }
.g.quiet .n { color: #8197ad; }
.g .v { font-family: "IBM Plex Mono"; width: 62dp; text-align: right; font-size: 13dp; }
.g .v.s { color: #f2b13c; }
.g .v.b { color: #5fd08a; }
.g .v.npc { color: #5cc8f0; }
.ghead { display: flex; flex-direction: row; padding: 0 10dp 4dp 12dp; font-size: 12dp; color: #8197ad; }
.ghead .n { flex: 1; }
.ghead .v { width: 62dp; text-align: right; }
.tools { display: flex; flex-direction: row; align-items: center; margin-bottom: 8dp; }
.tools input { flex: 1; margin-right: 8dp; }
.toggle { font-size: 13dp; color: #8197ad; padding: 4dp 8dp; border: 1dp #24405c; border-radius: 3dp; }
.toggle.on { color: #f2b13c; border-color: #f2b13c; }
.toggle:hover { color: #5cc8f0; }
.ihead { display: flex; flex-direction: row; align-items: flex-end; margin-bottom: 8dp; }
.ihead .t { font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 22dp; color: #dbe6f0; flex: 1; }
.ihead .npc { font-size: 13dp; color: #5cc8f0; }
.chartbar { display: flex; flex-direction: row; align-items: center; margin-bottom: 6dp; }
.chartbar .toggle { margin-right: 6dp; }
.legend { margin-left: auto; font-size: 12dp; color: #8197ad; }
.legend .k { display: inline-block; width: 10dp; height: 10dp; margin: 0 4dp 0 12dp; border-radius: 2dp; }
.chart { position: relative; height: 190dp; border: 1dp #24405c; border-radius: 3dp; background-color: #0d1622; margin-left: 76dp; }
.chart .grid { position: absolute; left: 0; right: 0; height: 1dp; background-color: #24405c66; }
.chart .col { position: absolute; top: 0; bottom: 0; }
.chart .col:hover { background-color: #5cc8f014; }
.chart .mean { position: absolute; bottom: 0; left: 0; right: 0; background-color: #f2b13c55; border-top: 2dp #f2b13c; border-radius: 2dp 2dp 0 0; }
.chart .band { position: absolute; left: 35%; width: 30%; min-height: 2dp; background-color: #dbe6f0cc; border-radius: 1dp; }
.chart .npc { position: absolute; left: 20%; width: 60%; height: 3dp; margin-bottom: -1dp; background-color: #5cc8f0; border-radius: 2dp; }
.chart .empty { position: absolute; left: 0; right: 0; top: 80dp; text-align: center; color: #8197ad; }
.axis { position: relative; height: 0; }
.axis .y { position: absolute; left: 0; width: 70dp; text-align: right; font-family: "IBM Plex Mono"; font-size: 11dp; color: #8197ad; }
.vol { position: relative; height: 34dp; margin-left: 76dp; margin-top: 3dp; }
.vol .vb { position: absolute; bottom: 0; background-color: #3d6d96; border-radius: 2dp 2dp 0 0; }
.dates { display: flex; flex-direction: row; margin-left: 76dp; font-family: "IBM Plex Mono"; font-size: 11dp; color: #8197ad; margin-bottom: 12dp; }
.dates .r { margin-left: auto; }
.books { display: flex; flex-direction: row; min-height: 150dp; }
.book { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.book.gap { margin-right: 14dp; }
.book .table { flex: 1; height: 160dp; }
.table .c2 { width: 60dp; text-align: right; font-family: "IBM Plex Mono"; }
.table .mine .c1 { color: #5cc8f0; }
.panel { margin-top: 12dp; padding: 10dp 12dp; border: 1dp #24405c; border-radius: 3dp; background-color: #122033; }
.panel .row2 { display: flex; flex-direction: row; align-items: center; }
.panel .label { width: 120dp; }
.panel input.text { width: 120dp; margin-right: 10dp; }
.panel .sum { font-family: "IBM Plex Mono"; color: #f2b13c; margin: 0 14dp; }
.panel .info { font-size: 13dp; color: #8197ad; margin-top: 6dp; }
.panel .pick { font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 16dp; color: #dbe6f0; margin-bottom: 6dp; }
.status { margin-top: 10dp; padding: 6dp 10dp; border-left: 3dp #5fd08a; background-color: #0d1622; }
.status.bad { border-left-color: #ef6a5b; }
.mine-split { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.mine-split .table { flex: 1; }
.mt .c1 { flex: 1; }
.mt .cs { width: 70dp; }
.mt .cb { width: 24%; }
.mt .cn { width: 110dp; text-align: right; font-family: "IBM Plex Mono"; margin-right: 14dp; }
</style>
</head>
<body class="window" data-model="market">
<div class="win-head">
<img class="head-ico" src="3db:INTERFACE/REM/IMAGES/icon_economy.3db"/>
<span class="title">MARKET</span>
<span class="loc">{{ here }}</span>
<span class="spacer"></span>
<span class="chip">{{ fees }}<div class="tip">Broker fee: from your bank when you place an order or give it a new price. Sales tax: from what you get for a sale. Orders end after their days: goods back into the depot, escrow back to the bank.</div></span>
<span class="close" data-action="close">&#215;</span>
</div>
<div class="win-main">
<div class="content">
<div class="subtabs">
<div class="tab" data-class-active="tab == 0" data-action="tab" data-arg="0">Market</div>
<div class="tab" data-class-active="tab == 1" data-action="tab" data-arg="1">My orders</div>
<div class="tab" style="margin-left: auto;" data-action="refresh">Refresh</div>
</div>
<!-- ================================================= MARKET -->
<div class="split" data-if="tab == 0">
<div class="goods">
<div class="tools">
<input class="text" type="text" data-value="filter" maxlength="40"/>
<span class="toggle" data-class-on="only_orders" data-action="only-orders">with orders<div class="tip">Only goods somebody offers or wants. Off: every commodity, to place a buy order for it.</div></span>
</div>
<div class="ghead"><span class="n">Good</span><span class="v">sell</span><span class="v">buy</span><span class="v">NPC</span></div>
<div class="list">
<div class="hint" style="padding: 10dp;" data-if="goods.size == 0">{{ received ? 'No good matches.' : 'Asking the server...' }}</div>
<div class="g" data-for="r : goods" data-class-selected="r.selected" data-class-quiet="!r.has_orders" data-action="good" data-attr-data-arg="r.key">
<span class="n">{{ r.name }}</span><span class="v s">{{ r.sell }}</span><span class="v b">{{ r.buy }}</span><span class="v npc">{{ r.npc }}</span>
</div>
</div>
</div>
<div class="detail">
<div class="ihead">
<span class="t">{{ has_item ? item_name : 'Pick a good' }}</span>
<span class="npc">{{ item_npc }}</span>
</div>
<div class="chartbar">
<span class="toggle" data-class-on="!days90" data-action="days" data-arg="30">30 days</span>
<span class="toggle" data-class-on="days90" data-action="days" data-arg="90">90 days</span>
<span class="toggle" style="margin-left: 10dp;" data-class-on="!region_here" data-action="region" data-arg="all">all regions</span>
<span class="toggle" data-class-on="region_here" data-action="region" data-arg="here">{{ here_region != '' ? here_region : 'this region' }}</span>
<span class="legend"><span class="k" style="background-color: #f2b13c;"></span>market mean<span class="k" style="background-color: #dbe6f0;"></span>low - high<span class="k" style="background-color: #5cc8f0;"></span>NPC price<span class="k" style="background-color: #3d6d96;"></span>volume</span>
</div>
<div class="axis">
<span class="y" style="top: 0dp;">{{ chart_hi }}</span>
<span class="y" style="top: 176dp;">{{ chart_lo }}</span>
</div>
<div class="chart">
<div class="grid" style="top: 25%;"></div><div class="grid" style="top: 50%;"></div><div class="grid" style="top: 75%;"></div>
<div class="col" data-for="b : bars" data-style-left="b.x + '%'" data-style-width="b.w + '%'">
<div class="mean" data-if="b.trades" data-style-height="b.mean + '%'"></div>
<div class="band" data-if="b.trades" data-style-bottom="b.lo + '%'" data-style-height="(b.hi - b.lo) + '%'"></div>
<div class="npc" data-if="b.npc &gt;= 0" data-style-bottom="b.npc + '%'"></div>
<div class="tip">{{ b.tip }}</div>
</div>
<div class="empty" data-if="chart_note != ''">{{ chart_note }}</div>
</div>
<div class="vol">
<div class="vb" data-for="b : bars" data-style-left="b.x + '%'" data-style-width="b.w + '%'" data-style-height="b.vol + '%'"></div>
</div>
<div class="dates"><span>{{ chart_from }}</span><span class="r">{{ chart_to }}</span></div>
<div class="books" data-if="has_item">
<div class="book gap">
<div class="label">Sell orders - buy from them</div>
<div class="table">
<div class="head"><span class="c1">Base</span><span class="c2">jumps</span><span class="c3">qty</span><span class="c4">price</span></div>
<div class="body">
<div class="hint" style="padding: 8dp;" data-if="sells.size == 0">Nobody sells this. Place a buy order.</div>
<div class="row" data-for="r : sells" data-class-selected="r.selected" data-class-mine="r.mine" data-action="pick-sell" data-attr-data-arg="r.id">
<span class="c1">{{ r.base }}</span><span class="c2">{{ r.jumps }}</span><span class="c3">{{ r.qty }}</span><span class="c4">{{ r.price }}</span>
<div class="tip">{{ r.who }} - ends in {{ r.expires }}{{ r.mine ? ' - your order' : '' }}</div>
</div>
</div>
</div>
</div>
<div class="book">
<div class="label">Buy orders - sell into them</div>
<div class="table">
<div class="head"><span class="c1">Base</span><span class="c2">jumps</span><span class="c3">qty</span><span class="c4">price</span></div>
<div class="body">
<div class="hint" style="padding: 8dp;" data-if="buys.size == 0">Nobody wants this yet. Place a sell order.</div>
<div class="row" data-for="r : buys" data-class-selected="r.selected" data-class-mine="r.mine" data-action="pick-buy" data-attr-data-arg="r.id">
<span class="c1">{{ r.base }}</span><span class="c2">{{ r.jumps }}</span><span class="c3">{{ r.qty }}</span><span class="c4">{{ r.price }}</span>
<div class="tip">{{ r.who }} - ends in {{ r.expires }}{{ r.mine ? ' - your order' : '' }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel" data-if="has_pick">
<div class="pick">{{ pick_text }}</div>
<div class="row2">
<input class="range" type="range" min="1" step="1" data-attr-max="amount_max" data-value="amount"/>
<span class="num" style="width: 80dp; text-align: right;">{{ amount_text }}</span>
<div class="btn" style="margin-left: 10dp; padding: 3dp 10dp;" data-action="max">Max</div>
<span class="sum">{{ deal_total }}</span>
<div class="btn primary" data-action="deal">{{ pick_buy ? 'Sell' : 'Buy' }}<div class="tip">{{ pick_buy ? 'Sells from your depot on that base into the buy order; the credits go to your bank.' : 'Buys with your bank credits; the goods go into your depot on that base.' }}</div></div>
</div>
</div>
<div class="panel" data-if="has_item">
<div class="row2" style="margin-bottom: 8dp;">
<span class="toggle" data-class-on="!place_buy" data-action="place-mode" data-arg="sell">Sell order</span>
<span class="toggle" style="margin-left: 6dp;" data-class-on="place_buy" data-action="place-mode" data-arg="buy">Buy order</span>
<span class="hint" style="margin-left: 14dp;">{{ place_have }}</span>
</div>
<div class="row2">
<span class="label">Amount</span><input class="text" type="text" data-value="place_qty" maxlength="10"/>
<span class="label" style="width: 90dp;">Price / unit</span><input class="text" type="text" data-value="place_price" maxlength="12"/>
<span class="label" style="width: 50dp;">Days</span><input class="text" type="text" style="width: 50dp;" data-value="place_days" maxlength="2"/>
<div class="btn primary" data-class-disabled="!can_place" data-action="place">Place<div class="tip">Sell order: the goods leave your depot here and wait on the market. Buy order: the credits wait in escrow; what is sold into it goes into your depot here.</div></div>
</div>
<div class="info">{{ place_info }}</div>
</div>
<div class="status" data-class-bad="!status_ok" data-if="status != ''">{{ status }}</div>
</div>
</div>
<!-- ================================================= MY ORDERS -->
<div class="mine-split" data-if="tab == 1">
<div class="label">Your orders</div>
<div class="table mt" style="flex: 1 1 0;">
<div class="head"><span class="cs">Kind</span><span class="c1">Good</span><span class="cb">Base</span><span class="cn">qty</span><span class="cn">price</span><span class="cn">ends in</span></div>
<div class="body">
<div class="hint" style="padding: 8dp;" data-if="mine.size == 0">You have no orders on the market.</div>
<div class="row" data-for="r : mine" data-class-selected="r.selected" data-action="mine-pick" data-attr-data-arg="r.id">
<span class="cs" data-style-color="r.buy ? '#5fd08a' : '#f2b13c'">{{ r.kind }}</span><span class="c1">{{ r.item }}</span><span class="cb">{{ r.base }}</span>
<span class="cn">{{ r.qty }}</span><span class="cn">{{ r.price }}</span><span class="cn">{{ r.expires }}</span>
</div>
</div>
</div>
<div class="panel" data-if="has_mine_pick">
<div class="row2">
<span class="label">New price</span><input class="text" type="text" data-value="reprice" maxlength="12"/>
<div class="btn primary" data-action="mine-price">Set price<div class="tip">A new price per unit; the broker fee is charged again. A buy order's escrow follows the price.</div></div>
<div class="btn danger" style="margin-left: 10dp;" data-action="mine-cancel">Take back<div class="tip">Sell order: the goods go back into your depot on that base. Buy order: the escrow goes back to your bank.</div></div>
</div>
</div>
<div class="status" data-class-bad="!status_ok" data-if="status != ''">{{ status }}</div>
<div class="label" style="margin-top: 12dp;">Your last trades</div>
<div class="table mt" style="flex: 1 1 0;">
<div class="head"><span class="cb">When</span><span class="cs">Side</span><span class="c1">Good</span><span class="cn">qty</span><span class="cn">price</span><span class="cb">Base</span></div>
<div class="body">
<div class="hint" style="padding: 8dp;" data-if="trades.size == 0">No trades yet.</div>
<div class="row" data-for="r : trades">
<span class="cb">{{ r.when }}</span><span class="cs">{{ r.side }}</span><span class="c1">{{ r.item }}</span>
<span class="cn">{{ r.qty }}</span><span class="cn">{{ r.price }}</span><span class="cb">{{ r.base }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="win-foot">
<span class="key">Esc</span><span class="hint">close</span>
</div>
</body>
</rml>
+7
View File
@@ -79,6 +79,13 @@
.ln.lane { border-top: 3dp #2f6d8f; }
.ln.route { border-top: 3dp #5cc8f0; }
.ln.waypath { border-top: 3dp #f2b13c; }
/* the original's look (player's wish): lanes, jump links, the route and every marker are drawn by
the original map under the box (NeuroNetNavMap::RemDrawBackground); ours stay as names, the
selection ring and the bookmarks (REM's own) */
.ln { display: none; }
.mi .s { opacity: 0; }
.bookmark .s { opacity: 1; }
</style>
</head>
<body class="window" data-model="navmap">
-1
View File
@@ -16,7 +16,6 @@
.nb img { transform: perspective(240dp) rotateY(0deg) scale(1); transition: transform 0.2s cubic-out; }
.nb.active img { image-color: #f2b13c; }
.nb .tip { top: 40dp; right: 0; left: auto; bottom: auto; width: 230dp; white-space: normal; text-align: right; }
.nb:hover .tip { display: block; }
</style>
</head>
<body class="nnstrip" data-model="nnbar">
+5 -7
View File
@@ -3,14 +3,13 @@
<title>Objective</title>
<link type="text/rcss" href="rem.rcss"/>
<style>
/* no box of its own: only the banner, centred under the top bars */
body.objdoc { position: absolute; left: 0; top: 0; width: 0; height: 0; display: block; background-color: transparent; }
/* no box of its own: only the banner, centred under the top bars. The body spans the
screen (a 0 x 0 body made the banner's box shrink to nothing at the left edge with the
text running out of it) and lets the mouse through. */
body.objdoc { position: absolute; left: 0; top: 0; right: 0; bottom: 0; display: flex; flex-direction: row; justify-content: center; align-items: flex-start; background-color: transparent; pointer-events: none; }
.obj
{
position: absolute;
left: 50%;
top: 70dp;
transform: translateX(-50%);
margin-top: 70dp;
max-width: 900dp;
padding: 8dp 22dp;
background-color: #070b12d9;
@@ -23,7 +22,6 @@
letter-spacing: 1.5dp;
color: #f2b13c;
text-align: center;
white-space: nowrap;
}
</style>
</head>
+4 -2
View File
@@ -32,7 +32,9 @@
.slide { display: flex; flex-direction: row; align-items: center; width: 330dp; }
.slide .step { width: 26dp; padding: 2dp 0; text-align: center; border: 1dp #24405c; border-radius: 3dp; color: #dbe6f0; }
.slide .step:hover { border-color: #5cc8f0; color: #5cc8f0; }
.slide .track { flex: 1; height: 6dp; margin: 0 8dp; background-color: #24405c; border-radius: 3dp; }
.slide .track { flex: 1; height: 18dp; margin: 0 8dp; padding: 6dp 0; cursor: pointer; }
.slide .rail { height: 6dp; background-color: #24405c; border-radius: 3dp; }
.slide .track:hover .rail { background-color: #2e5378; }
.slide .fill { height: 6dp; background-color: #f2b13c; border-radius: 3dp; }
.opt .v { width: 120dp; text-align: right; font-family: "IBM Plex Mono"; font-size: 12dp; color: #8197ad; margin-left: 10dp; }
.ask { padding: 12dp; margin-bottom: 12dp; border: 1dp #24405c; border-left: 3dp #f2b13c; border-radius: 3dp; background-color: #0d1622; display: flex; flex-direction: row; align-items: center; }
@@ -91,7 +93,7 @@
<div class="switch" data-if="r.kind == 1" data-class-on="r.on" data-action="toggle" data-attr-data-arg="r.key">{{ r.value }}</div>
<div class="slide" data-if="r.kind == 2">
<span class="step" data-action="dec" data-attr-data-arg="r.key">-</span>
<div class="track"><div class="fill" data-style-width="r.fill + '%'"></div></div>
<div class="track" data-scrub="set" data-attr-data-arg="r.key"><div class="rail"><div class="fill" data-style-width="r.fill + '%'"></div></div></div>
<span class="step" data-action="inc" data-attr-data-arg="r.key">+</span>
<span class="v">{{ r.value }}</span>
</div>
+56 -2
View File
@@ -40,6 +40,25 @@
.cmp .cv.down { color: #ef6a5b; }
.cmp .cv.dim { color: #8197ad; }
.cmp .cn { margin-top: 4dp; font-size: 12dp; color: #8197ad; }
.col-h .tools { margin-left: auto; display: flex; flex-direction: row; align-items: center; }
.col-h .tools .btn { margin: 0 0 0 8dp; padding: 3dp 10dp; }
.switch { width: 58dp; padding: 3dp 0; text-align: center; border: 2dp #3d6d96; border-radius: 4dp; font-family: "Saira SemiCondensed"; font-weight: 600; font-size: 13dp; letter-spacing: 1dp; color: #8197ad; }
.switch.on { border-color: #f2b13c; color: #f2b13c; background-color: #f2b13c1f; }
.switch:hover { border-color: #5cc8f0; }
.flag { display: flex; flex-direction: row; align-items: center; font-size: 13dp; color: #b8c4cc; }
.flag .switch { width: 44dp; margin-right: 6dp; }
.gear { font-size: 16dp; }
.panel { position: absolute; top: 60dp; width: 420dp; max-height: 70%; display: flex; flex-direction: column; padding: 14dp; border: 1dp #f2b13c; border-radius: 3dp; background-color: #0b1320f4; z-index: 10; }
.panel.left { left: 24dp; }
.panel.right { right: 24dp; }
.panel h3 { margin-bottom: 4dp; }
.panel .pnote { font-size: 12dp; color: #8197ad; margin-bottom: 10dp; }
.panel .plist { flex: 1 1 auto; min-height: 0; overflow-y: auto; border: 1dp #24405c; border-radius: 3dp; }
.panel .prow { display: flex; flex-direction: row; align-items: center; padding: 5dp 10dp; border-bottom: 1dp #ffffff08; }
.panel .prow .n { flex: 1; min-width: 0; }
.panel .pfoot { display: flex; flex-direction: row; margin-top: 10dp; }
.panel .pfoot .btn { margin: 0 8dp 0 0; padding: 3dp 10dp; }
.content { position: relative; }
</style>
</head>
<body class="window" data-model="outfitter">
@@ -49,13 +68,23 @@
<span class="spacer"></span>
<span class="chip">Hold <span class="v">{{ hold }}</span></span>
<span class="chip">Credits <span class="v">{{ credits }}</span></span>
<span class="chip" data-if="tax != ''">{{ tax }}<div class="tip">The server takes this share of what you sell to the base. It follows the region's trade of the last days: the busiest region pays the most.</div></span>
<span class="close" data-action="close">&#215;</span>
</div>
<div class="win-main">
<div class="content">
<div class="subtabs">
<div class="tab" data-class-active="category == -1" data-action="category" data-arg="-1">All</div>
<div class="tab" data-class-active="category == 0" data-action="category" data-arg="0">Weapons</div>
<div class="tab" data-class-active="category == 1" data-action="category" data-arg="1">Ammo</div>
<div class="tab" data-class-active="category == 2" data-action="category" data-arg="2">Equipment</div>
<div class="tab" data-class-active="category == 3" data-action="category" data-arg="3">Cargo bay</div>
</div>
<div class="split">
<div class="colm">
<div class="col-h"><h3>For sale here</h3><span class="hint">{{ market.size }}</span></div>
<div class="col-h"><h3>For sale here</h3><span class="hint" style="margin-left: 10dp;">{{ market.size }}</span>
<span class="tools"><div class="btn" data-class-active="panel == 1" data-action="autobuy-panel"><span class="gear">&#9881;</span> Autobuy<div class="tip">What the server buys by itself when you dock: ammunition for your launchers, nanobots and shield batteries.</div></div></span>
</div>
<input class="text search" type="text" data-value="filter" maxlength="40"/>
<div class="list">
<div class="hint" style="padding: 10dp;" data-if="market.size == 0">No equipment for sale here.</div>
@@ -76,7 +105,13 @@
</div>
</div>
<div class="colm">
<div class="col-h"><h3>Your equipment</h3><span class="hint">hold {{ hold }}</span></div>
<div class="col-h"><h3>Your equipment</h3>
<span class="tools">
<span class="flag"><div class="switch" data-class-on="hide_mounted" data-action="hide-mounted">{{ hide_mounted ? 'ON' : 'OFF' }}</div>loot only<div class="tip">Leaves out what is mounted and the ammunition, nanobots and shield batteries your ship uses: what is left is loot to sell.</div></span>
<div class="btn" data-class-disabled="loot_count == 0" data-action="sell-loot">Sell all loot ({{ loot_count }})<div class="tip">Sells everything that came aboard since you last launched (loot), except what you keep (the gear button).</div></div>
<div class="btn" data-class-active="panel == 2" data-action="keep-panel"><span class="gear">&#9881;</span><div class="tip">What "Sell all loot" keeps.</div></div>
</span>
</div>
<div class="list">
<div class="hint" style="padding: 10dp;" data-if="gear.size == 0">No equipment.</div>
<div class="good" data-for="r : gear" data-class-selected="r.selected" data-class-disabled="r.disabled" data-action="sell-pick" data-attr-data-arg="r.key">
@@ -87,6 +122,24 @@
</div>
</div>
</div>
<div class="panel left" data-if="panel == 1">
<h3>AUTOBUY</h3>
<div class="pnote" data-if="autobuy_known">Bought by itself when you dock, where the base sells it, as far as hold and credits go (also /autobuy in the chat).</div>
<div class="pnote" data-if="!autobuy_known">This server sends no autobuy settings.</div>
<div class="plist">
<div class="prow" data-for="r : autobuy"><span class="n">{{ r.name }}</span><div class="switch" data-class-on="r.on" data-action="autobuy" data-attr-data-arg="r.key">{{ r.on ? 'ON' : 'OFF' }}</div></div>
</div>
<div class="pfoot"><div class="btn" data-action="autobuy-all" data-arg="1">All on</div><div class="btn" data-action="autobuy-all" data-arg="0">All off</div><div class="btn" data-action="autobuy-panel">Close</div></div>
</div>
<div class="panel right" data-if="panel == 2">
<h3>KEEP LOOT</h3>
<div class="pnote">"Sell all loot" sells everything that came aboard since you launched; what is set to KEEP here stays in the hold.</div>
<div class="plist">
<div class="hint" style="padding: 10dp;" data-if="keep.size == 0">No equipment in the hold.</div>
<div class="prow" data-for="r : keep"><span class="n">{{ r.name }}</span><div class="switch" data-class-on="r.on" data-action="keep" data-attr-data-arg="r.key">{{ r.on ? 'KEEP' : 'SELL' }}</div></div>
</div>
<div class="pfoot"><div class="btn" data-action="keep-panel">Close</div></div>
</div>
<div class="deal">
<img data-if="has_pick &amp;&amp; pick.icon != ''" data-attr-src="pick.icon"/>
<div class="what">
@@ -100,6 +153,7 @@
</div>
<span class="why" data-if="reason != ''">{{ reason }}</span>
<span class="sum">{{ total }}</span>
<span class="why" data-if="tax_note != ''" style="color: #b8c4cc;">{{ tax_note }}</span>
<div class="btn" style="margin-right: 10dp;" data-if="side == 1 &amp;&amp; mount_label != ''" data-action="mount">{{ mount_label }}<div class="tip">{{ mount_tip }}</div></div>
<div class="btn primary" data-class-disabled="!has_pick || reason != ''" data-action="deal">{{ side == 0 ? 'Buy' : 'Sell' }}<div class="tip">{{ side == 0 ? 'Buys it: onto a free hardpoint of your ship when there is one, else into the hold.' : 'Sells it; used equipment fetches less.' }}</div></div>
</div>
+7 -4
View File
@@ -3,9 +3,10 @@
<title>Radar</title>
<link type="text/rcss" href="rem.rcss"/>
<style>
/* the 3D radar (rem_ui_radar.cpp): the turnable sphere and symbols are the <radar> element's own geometry,
frame, title, range buttons and names are this document's */
body.radar { position: absolute; left: 16dp; top: 31%; width: 320dp; height: 346dp; background-color: transparent; pointer-events: none;
/* the radar (rem_ui_radar.cpp): the dish, rim, fans, symbols and wireframes are the <radar> element's own
geometry; frame, title, projection / range buttons and names are this document's */
.head .threat { margin-left: 8dp; font-family: "IBM Plex Mono"; font-size: 11dp; color: #ff3b30; font-weight: 700; }
body.radar { position: absolute; left: 16dp; top: 31%; width: 320dp; height: 250dp; background-color: transparent; pointer-events: none;
font-family: "Saira SemiCondensed"; font-size: 14dp; color: #dbe6f0; }
.frame { position: absolute; left: 0; top: 0; right: 0; bottom: 0; box-sizing: border-box; background-color: #050a18c0;
border: 1dp #3d6d96; border-radius: 4dp; pointer-events: auto; display: flex; flex-direction: column; }
@@ -17,7 +18,7 @@
.rng:hover { color: #5cc8f0; border-color: #5cc8f0; }
.rng.on { color: #f2b13c; border-color: #f2b13c; background-color: #f2b13c24; }
#scope { position: relative; flex: 1; }
radar { display: block; position: absolute; left: 0; top: 0; right: 0; bottom: 0; cursor: move; }
radar { display: block; position: absolute; left: 0; top: 0; right: 0; bottom: 0; }
.lbl { position: absolute; font-size: 12dp; white-space: nowrap; pointer-events: none; }
.fwd { position: absolute; left: 50%; margin-left: -4dp; top: 4dp; font-family: "IBM Plex Mono"; font-size: 10dp; color: #f2b13c; pointer-events: none; }
</style>
@@ -26,7 +27,9 @@
<div class="frame">
<div class="head">
<span class="title">RADAR</span><span class="count">{{ count }}</span>
<span class="threat" data-if="threat">MISSILE</span>
<span class="spacer"></span>
<span class="rng" data-action="projection">{{ projection == 1 ? '3D' : 'TOP' }}</span>
<span class="rng" data-class-on="range == 0" data-action="range" data-arg="0">2.5K</span>
<span class="rng" data-class-on="range == 1" data-action="range" data-arg="1">5K</span>
<span class="rng" data-class-on="range == 2" data-action="range" data-arg="2">7.5K</span>
+2 -1
View File
@@ -274,7 +274,8 @@ h3, .label
border-radius: 3dp;
padding: 6dp 9dp;
}
.btn:hover .tip { display: block; }
/* shown by the tool tip window over every window (rem_ui_tooltip.cpp), not here: inside its own
document another window could cover it */
.actions { display: flex; flex-direction: row; flex-wrap: wrap; }
-1
View File
@@ -16,7 +16,6 @@
.nb img { transform: perspective(240dp) rotateY(0deg) scale(1); transition: transform 0.2s cubic-out; }
.nb.active img { image-color: #f2b13c; }
.nb .tip { top: 40dp; left: 0; right: auto; bottom: auto; width: 230dp; white-space: normal; }
.nb:hover .tip { display: block; }
</style>
</head>
<body class="nnstrip" data-model="rembar">
+3
View File
@@ -19,10 +19,13 @@
white-space: nowrap;
}
.ftip.roll { border-left-color: #5cc8f0; font-size: 14dp; white-space: pre-line; }
/* a REM window's .tip (the hovered element's), drawn here so no other window covers it */
.ftip.hov { width: 260dp; white-space: normal; font-family: Barlow; background-color: #05090f; border-left: 2dp #3d6d96; }
</style>
</head>
<body class="tipdoc" data-model="tooltip">
<div class="ftip" data-if="tip_shown" data-style-left="tip_left" data-style-top="tip_top">{{ tip_text }}</div>
<div class="ftip roll" data-if="roll_shown" data-style-left="roll_left" data-style-top="roll_top">{{ roll_text }}</div>
<div class="ftip hov" data-if="hov_shown" data-style-left="hov_left" data-style-top="hov_top" data-rml="hov_rml"></div>
</body>
</rml>
+2
View File
@@ -37,6 +37,7 @@
<span class="spacer"></span>
<span class="chip">Hold <span class="v">{{ hold }}</span></span>
<span class="chip">Credits <span class="v">{{ credits }}</span></span>
<span class="chip" data-if="tax != ''">{{ tax }}<div class="tip">The server takes this share of what you sell to the base. It follows the region's trade of the last days: the busiest region pays the most.</div></span>
<span class="close" data-action="close">&#215;</span>
</div>
<div class="win-main">
@@ -75,6 +76,7 @@
</div>
<span class="why" data-if="reason != ''">{{ reason }}</span>
<span class="sum">{{ total }}</span>
<span class="why" data-if="tax_note != ''" style="color: #b8c4cc;">{{ tax_note }}</span>
<div class="btn primary" data-class-disabled="!has_pick || reason != ''" data-action="deal">{{ side == 0 ? 'Buy' : 'Sell' }}<div class="tip">{{ side == 0 ? 'Buys the amount into your cargo hold.' : 'Sells the amount from your cargo hold.' }}</div></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.