Files
hanfuit c58168406b 启动器:游戏更新入口移到开始旁,移除设置页面
- 侧边栏顺序调整为 开始 → 游戏更新 → GM工具 → 一键换装 → 游戏设置
- 删除「设置」页面(侧边栏入口 + page-settings section)
- shell.js 移除 loadSettings 函数及 setRefresh 事件监听
- shell.css 清理 .settings-* 相关样式(明暗主题两套)
2026-11-04 20:38:22 +08:00

174 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DNF90 灵狐小竹整合单机版</title>
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/shell.css">
</head>
<body>
<!-- 兼容旧 app.js 的隐藏控件 -->
<div id="launcherView" class="hidden" aria-hidden="true">
<div id="logBody"></div>
<span id="statusBadge"><span id="statusText"></span></span>
<span id="footInfo"></span>
<button id="btnStart"></button><button id="btnGm"></button><button id="btnStop"></button>
<button id="btnSponsor"></button><button id="btnWinLoadout"></button><button id="btnWinSetting"></button>
<button id="btnClearLog"></button>
</div>
<div id="appShell">
<header class="shell-topnav">
<div class="shell-brand">
<div class="shell-logo">90</div>
<div><b>灵狐小竹</b><span>启动器 <em>v2.1.0</em></span></div>
</div>
<nav class="shell-nav">
<button class="shell-nav-item active" data-shell-page="start"><span class="nav-ico">▶</span>开始</button>
<button class="shell-nav-item" data-shell-page="changelog"><span class="nav-ico">📜</span>游戏更新</button>
<button class="shell-nav-item" data-shell-page="gm"><span class="nav-ico">⚙</span>GM工具</button>
<button class="shell-nav-item" data-shell-page="loadout"><span class="nav-ico">🔄</span>一键换装</button>
<button class="shell-nav-item" data-shell-page="gamesettings"><span class="nav-ico">🎮</span>游戏设置</button>
<div class="shell-nav-gap"></div>
</nav>
<div class="shell-win-controls">
<button class="tb-btn" id="shellWinMin" title="最小化">—</button>
<button class="tb-btn tb-close" id="shellWinClose" title="关闭">×</button>
</div>
</header>
<main class="shell-main">
<header class="shell-topbar">
<div class="shell-crumb" id="shellCrumb">开始 / 本地服务端</div>
</header>
<section class="shell-page active" id="page-start">
<div class="hero">
<div class="hero-bg"></div>
<div class="hero-content">
<div class="hero-kicker">DNF · 90级 · 本地服务端</div>
<h1 id="shellServerName">DNF90 灵狐小竹整合单机版</h1>
<div class="hero-status">
<span class="live-dot" id="shellStatusDot"></span>
<span id="shellStatusText">检测中…</span>
<span class="muted" id="shellPid">PID —</span>
</div>
<div class="hero-actions">
<button class="start-btn" id="shellStart"><span>▶</span> 开始游戏</button>
<button class="start-menu" id="shellStartMenu">▾</button>
<div class="start-menu-pop hidden" id="shellStartPop">
<button data-shell-action="start">启动服务端并登录</button>
<button data-shell-action="launch">仅启动客户端</button>
<button data-shell-action="stop">关闭服务端</button>
</div>
<button class="account-login" id="shellAccount" title="管理并选择游戏账号">
<span class="account-ico">👤</span>
<span><b>账号管理</b><small id="shellAccountName">加载中…</small></span>
</button>
<div class="account-picker">
<span class="account-picker-label">当前登录账号</span>
<select id="shellAccountSelect" title="选择登录账号"></select>
</div>
<button class="stop-server-btn" id="shellStop"><span>■</span> 关闭服务端</button>
</div>
<div class="hero-hint">服务端和客户端会一起启动,首次约 10 秒;切换账号后再点“开始游戏”可多开。</div>
</div>
<div class="hero-clock" id="shellClock">检查于 --:--:--</div>
</div>
<div class="stat-grid">
<div class="stat-card"><div class="stat-label">版本</div><div class="stat-row"><span>本地</span><b id="statVersion">v2026.11.03</b></div><div class="stat-row"><span>远程最新</span><b class="green" id="statRemote">检查中</b></div><div class="stat-row"><span>状态</span><b class="green" id="statState">—</b></div></div>
<div class="stat-card"><div class="stat-label">运行</div><div class="stat-row"><span>客户端</span><b id="statClient">—</b></div><div class="stat-row"><span>游戏端口</span><b id="statPorts">—</b></div><div class="stat-row"><span>资源</span><b id="statResource">—</b></div></div>
<div class="stat-card"><div class="stat-label">数据</div><div class="stat-row"><span>PVF 文件</span><b id="statPvf">—</b></div><div class="stat-row"><span>客户端目录</span><b class="small" id="statClientDir">—</b></div><div class="stat-row"><span>版本记录</span><b id="statDb">—</b></div></div>
<div class="stat-card"><div class="stat-label">工具</div><div class="stat-row"><span>内置 GM</span><b class="green">已开启</b></div><div class="stat-row"><span>GM 端口</span><b id="statGmPort">18111</b></div><div class="stat-row"><span>接口端口</span><b id="statApiPort">19527</b></div></div>
</div>
</section>
<section class="shell-page" id="page-loadout">
<div class="page-pad">
<div class="page-heading"><div><h2>一键换装</h2><p class="muted">方案保存在 LoadoutTool/config.json;全局热键由启动器后端注册。</p></div><button class="shell-btn primary" id="loSaveConfig">保存配置</button></div>
<div class="loadout-layout">
<div class="loadout-side">
<div class="lo-pages" id="loPages"></div>
<div class="lo-list" id="loList"></div>
<div class="lo-side-actions"><button class="shell-btn" id="loAddPage">新增换装页</button><button class="shell-btn" id="loAddScheme">新增方案</button><button class="shell-btn" id="loDeleteScheme">删除方案</button></div>
</div>
<div class="loadout-main">
<div class="lo-form">
<label>方案名称<input id="loName" class="shell-input"></label>
<label>绑定角色<input id="loCharacter" class="shell-input" placeholder="角色游戏内名称"></label>
<label>热键<input id="loHotkey" class="shell-input" placeholder="例如 Ctrl+F1"></label>
<button class="shell-btn" id="loCaptureHotkey">录制热键</button>
</div>
<div class="lo-toolbar"><button class="shell-btn" id="loRefreshChars">刷新角色</button><button class="shell-btn" id="loSaveCurrent">保存当前装备</button><button class="shell-btn primary" id="loApply">应用方案</button><span id="loStatus" class="muted"></span><span id="loCooldown" class="lo-cooldown"></span></div>
<div class="lo-slots" id="loSlots"><div class="empty-box">选择方案后显示装备快照</div></div>
</div>
</div>
</div>
</section>
<section class="shell-page" id="page-gamesettings">
<div class="page-pad">
<div class="page-heading"><div><h2>游戏设置</h2><p class="muted">调整服务端频道与活动;改动实时生效,无需重启。</p></div><button class="shell-btn" id="gsRefresh">刷新</button></div>
<div class="st-tabs" id="gsTabs">
<button class="st-tab active" data-gs="channels">频道开关</button>
<button class="st-tab" data-gs="activities">活动开关</button>
</div>
<div id="gsChannelsPane">
<div class="gs-summary muted" id="gsChannelSummary">正在加载频道…</div>
<div class="gs-grid" id="gsChannelGrid"><div class="empty-box">加载中…</div></div>
</div>
<div id="gsActivitiesPane" style="display:none">
<div class="gs-summary muted" id="gsActivitySummary">正在加载活动…</div>
<div class="gs-list" id="gsActivityList"><div class="empty-box">加载中…</div></div>
</div>
</div>
</section>
<section class="shell-page" id="page-changelog">
<div class="page-pad"><h2>游戏更新</h2><p class="muted">从自托管仓库(Lingbao/90CNServer)的发布记录自动获取。</p><div id="changelogBody"></div></div>
</section>
<section class="shell-page" id="page-gm">
<div id="gmView" class="gm-app">
<aside class="gm-sidebar">
<div class="gm-logo"><div><div class="gm-logo-title">DNF90 GM</div><div class="gm-logo-sub">九零轮回 · 管理工具</div></div></div>
<div class="gm-nav-group">总览</div>
<div class="gm-nav-item active" data-page="dashboard"><span class="ico">📊</span>控制台</div>
<div class="gm-nav-item" data-page="characters"><span class="ico">👥</span>角色管理</div>
<div class="gm-nav-group">资源</div>
<div class="gm-nav-item" data-page="items"><span class="ico">🎁</span>道具发放</div>
<div class="gm-nav-item" data-page="mail"><span class="ico">✉️</span>邮件系统</div>
<div class="gm-nav-item" data-page="inventory"><span class="ico">🎒</span>背包装备</div>
<div class="gm-nav-item" data-page="auction"><span class="ico">🏷️</span>拍卖行</div>
<div class="gm-nav-group">进度</div>
<div class="gm-nav-item" data-page="quests"><span class="ico">📜</span>任务管理</div>
<div class="gm-nav-item" data-page="dungeons"><span class="ico">⚔️</span>魔改中心</div>
<div class="gm-nav-group">系统</div>
<div class="gm-nav-item" data-page="wallet"><span class="ico">💰</span>钱包点券</div>
<div class="gm-nav-item" data-page="wipe"><span class="ico">🗑️</span>删档管理</div>
<div class="gm-nav-item" data-page="settings"><span class="ico">⚙️</span>连接设置</div>
<div class="gm-sidebar-foot"><div><span class="conn-dot off" id="gmConnDot"></span><span class="conn-text" id="gmConnText">数据源:SQLite</span></div><button class="gm-back" id="btnBackLauncher">← 返回启动器</button></div>
</aside>
<div class="gm-main"><header class="gm-topbar"><h1 id="gmPageTitle">控制台</h1><span class="gm-crumb" id="gmPageCrumb">/ 服务端总览</span><div class="topbar-spacer"></div><button class="gm-btn gm-btn-sm gm-btn-ghost" id="gmBtnRefresh">↻ 刷新</button></header><div class="gm-content" id="gmContent"></div></div>
</div>
</section>
</main>
</div>
<div class="shell-statusbar"><span><i class="live-dot"></i> <b id="shellBottomStatus">运行中</b></span><span>端口 <b id="shellBottomPort">—</b></span><span>内存 <b id="shellBottomMem">—</b></span><span>CPU <b>0.0%</b></span><span class="grow"></span><span id="shellBottomLog">日志 就绪</span></div>
<div class="win-resize n" data-edge="top"></div><div class="win-resize s" data-edge="bottom"></div>
<div class="win-resize w" data-edge="left"></div><div class="win-resize e" data-edge="right"></div>
<div class="win-resize nw" data-edge="topleft"></div><div class="win-resize ne" data-edge="topright"></div>
<div class="win-resize sw" data-edge="bottomleft"></div><div class="win-resize se" data-edge="bottomright"></div>
<div class="modal-mask hidden" id="sponsorModal"><div class="modal"><div class="modal-head"><span>赞助我们</span><button class="modal-close" id="btnCloseSponsor">×</button></div><div class="modal-body"><p class="sponsor-tip">感谢支持 DNF90 灵狐小竹整合单机版!</p><div class="qrcode-box" id="qrcodeBox"></div></div></div></div>
<div class="modal-mask hidden" id="accountsModal"><div class="modal" style="width:520px"><div class="modal-head"><span>账号管理</span><button class="modal-close" id="btnCloseAccounts" onclick="document.getElementById('accountsModal').classList.add('hidden')">×</button></div><div class="modal-body" style="text-align:left"><div id="accountsList" style="margin-bottom:16px"></div><div class="accounts-add"><div class="accounts-add-title">添加新账号</div><div class="gm-form-row"><div class="gm-field"><label>用户名</label><input class="gm-input" id="newAccUser"></div><div class="gm-field"><label>密码</label><input class="gm-input" id="newAccPass" type="password"></div></div><button class="gm-btn gm-btn-primary" id="btnAddAccount">+ 添加账号</button></div></div></div></div>
<script src="/app.js"></script>
<script src="/shell.js"></script>
</body>
</html>