The 变形同构体 item card gets its 天赋 list (gameLogic morphPairings, from the same giveBondId the server counts with): one line per bond with the items that pair with it, 本局禁用 marked, and on a wearer's card the pairing it wears highlighted. A bond item's card says which bond it gives a 变形同构体 wearer. computeBonds marks a core bond state whose count holds 调和's +1 (harmony: 1) and both bond views send it. The popup reads it: 在场 n (含调和 +1) and a 调和 row naming the 调和 operators on that board, for the own strip and a teammate's; the strip and chip titles say it too. The mock harness gets the funny / morph / harmony variants.
51 lines
3.1 KiB
HTML
51 lines
3.1 KiB
HTML
<!doctype html>
|
||
<!--
|
||
In-match UI mock harness (dev only): drives the real game screens (js/screens/game.js …) with
|
||
fabricated m.public / m.private / m.field / b.snap / b.ev streams and a tiny mock server behind
|
||
net.request, so every phase can be developed and screenshot without the game server.
|
||
URL params: ?phase=PREP|INFO_CHECK|BAND_DRAFT|BATTLE_CHECK|SP_DRAFT|COMBAT|UNITE|SETTLE|FINAL_ASSAULT|HIDDEN_CORE|RESULT
|
||
&variant=reward|bounty|supply|shop|tactic|temp|frozen|dead|defeat|solo|popup|detail|drawer|info|pen|emote|settings|collapsed|bond|drag
|
||
|leaker (联防: you let enemies through — the ×N counter)
|
||
|overtime|drain (boss rounds: level time over / overtime drain) |paused (solo battles)
|
||
|funny (标准: 本局禁用 bonds) |morph (变形同构体 in the hand / shop, a wearer on the board) |harmony (缪尔赛思 on the board)
|
||
&shot=1 (hide the switcher) &render=engine|fallback (default: the Pixi engine, DOM fallback if it fails)
|
||
Keyboard: ` toggles the switcher.
|
||
-->
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
|
||
<title>Game Mock · 卫戍协议:盟约</title>
|
||
<link rel="icon" href="data:," />
|
||
<link rel="stylesheet" href="/fonts/fonts.css" />
|
||
<link rel="stylesheet" href="/css/theme.css" />
|
||
<link rel="stylesheet" href="/css/components.css" />
|
||
<link rel="stylesheet" href="/css/screens/game.css" />
|
||
<link rel="stylesheet" href="/css/screens/game-shop.css" />
|
||
<link rel="stylesheet" href="/css/screens/game-panels.css" />
|
||
<link rel="stylesheet" href="/css/screens/briefing.css" />
|
||
<link rel="stylesheet" href="/css/screens/draft.css" />
|
||
<link rel="stylesheet" href="/css/screens/result.css" />
|
||
<link rel="stylesheet" href="/css/screens/guide.css" />
|
||
<link rel="stylesheet" href="/css/emotes.css" />
|
||
<link rel="stylesheet" href="/css/devices.css" />
|
||
<script type="importmap">
|
||
{ "imports": { "preact": "/vendor/preact.module.js", "preact/hooks": "/vendor/hooks.module.js", "htm": "/vendor/htm.module.js" } }
|
||
</script>
|
||
<style>
|
||
.mockbar { position: fixed; z-index: 150; right: 8px; top: 50%; transform: translateY(-50%); width: 188px; max-height: 92vh; overflow: auto;
|
||
display: flex; flex-direction: column; gap: 4px; padding: 8px; background: rgba(6, 9, 8, .92); border: 1px solid #3e4b45; font: 12px/1.3 sans-serif; color: #c3cbc7; }
|
||
.mockbar h4 { margin: 6px 0 2px; font-size: 11px; letter-spacing: .12em; color: #4ed8af; }
|
||
.mockbar button { text-align: left; padding: 4px 6px; background: #141816; border: 1px solid #2f3a35; color: #f2f2f2; font-size: 12px; cursor: pointer; }
|
||
.mockbar button:hover { border-color: #4ed8af; }
|
||
.mockbar button.on { background: #145443; border-color: #4ed8af; }
|
||
.mockbar.hidden { display: none; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id="app"></div>
|
||
<div id="mockbar" class="mockbar"></div>
|
||
<script type="module" src="/dev/game-mock.js"></script>
|
||
</body>
|
||
</html>
|