diff --git a/assets/site-app.js b/assets/site-app.js index a6199d1..52f5de4 100644 --- a/assets/site-app.js +++ b/assets/site-app.js @@ -1,43 +1,43 @@ // 宇森官网 · 公开页数据打通(图鉴/规则/论坛/公告 从 Odoo 取数) // 依赖 assets/game-api.js -// ---------- 页面板块(特色 / 背景 / 致玩家) ---------- +// ---------- 页面板块:特色 / 背景 / 致玩家 合并进「背景」单页(平铺,非子菜单) ---------- +function featuresHTML(p){ + const items = (p.items || []).map(it => + `
${it.icon || ''}

${it.title || ''}

${it.desc || ''}

` + ).join(''); + return `
${p.title || '游戏特色'}${p.subtitle || ''}
${items}
`; +} + +function backgroundHTML(p){ + const layers = (p.items || []).map((it, idx) => + `
${it.title || ''}
${it.desc || ''}
${it.icon || '✦'}
` + ).join(''); + return `
${layers}

${p.title || '世界起源'}

${p.body_html || ''}
`; +} + +function letterHTML(p){ + return `

${p.title || ''}

${p.subtitle || ''}
${p.body_html || ''}
—— 宇森开发组
`; +} + async function loadPages(){ try { const d = await API.pages(); const pages = (d && d.items) || []; + const bg = document.getElementById('background'); + let html = ''; pages.forEach(p => { - if (p.key === 'features') renderFeatures(p); - else if (p.key === 'background') renderBackground(p); - else if (p.key === 'letter') renderLetter(p); + if (p.key === 'features') html += featuresHTML(p); + else if (p.key === 'background') html += backgroundHTML(p); + else if (p.key === 'letter') html += letterHTML(p); }); + if (bg) bg.innerHTML = html; // 特色 + 背景 + 致玩家 平铺进同一页,无子菜单切换 + + const story = document.getElementById('story'); + if (story) story.innerHTML = '
剧情STORY
📖
剧情内容正在筹备中…
敬请期待
'; } catch (e) { /* 失败时保留 HTML 中的静态兜底内容 */ } } -function renderFeatures(p){ - const sec = document.getElementById('features'); - if (!sec) return; - const items = (p.items || []).map(it => - `
${it.icon || ''}

${it.title || ''}

${it.desc || ''}

` - ).join(''); - sec.innerHTML = `
${p.title || '游戏特色'}${p.subtitle || ''}
${items}
`; -} - -function renderBackground(p){ - const sec = document.getElementById('background'); - if (!sec) return; - const layers = (p.items || []).map((it, idx) => - `
${it.title || ''}
${it.desc || ''}
${it.icon || '✦'}
` - ).join(''); - sec.innerHTML = `
${layers}

${p.title || '世界起源'}

${p.body_html || ''}
`; -} - -function renderLetter(p){ - const sec = document.getElementById('letter'); - if (!sec) return; - sec.innerHTML = `

${p.title || ''}

${p.subtitle || ''}
${p.body_html || ''}
—— 宇森开发组
`; -} - // ---------- 规则 ---------- async function loadRules(){ const el = document.querySelector('#rules .rules-scroll'); diff --git a/index.html b/index.html index 0865337..a396c51 100644 --- a/index.html +++ b/index.html @@ -52,6 +52,8 @@ .user-box .auth-link:hover{color:#fff;} .user-box .auth-btn{font-family:inherit;font-size:13px;color:#0b1020;background:linear-gradient(120deg,var(--gold),#f0d49a);border:none;padding:6px 16px;border-radius:20px;cursor:pointer;font-weight:600;transition:.2s;} .user-box .auth-btn:hover{filter:brightness(1.1);box-shadow:0 0 16px rgba(231,184,92,.4);} + .nav .auth-only{display:none;} /* 登录专属 tab,未登录时隐藏 */ + .nav .auth-only.visible{display:inline-block;} .cta:hover{filter:brightness(1.08);} .content{flex:1;position:relative;overflow:hidden;} @@ -201,13 +203,13 @@
@@ -232,10 +234,7 @@ - -
- - +
@@ -362,8 +361,17 @@ - -
+ +
+ + +
+
世界数据WORLD DATA
+
+
🌍
+ 加载中… +
+
@@ -587,6 +595,7 @@ function renderLoggedOut(){ if(!userBox) return; userBox.innerHTML = '登录注册'; + document.querySelectorAll('.nav .auth-only').forEach(el => el.classList.remove('visible')); } function renderLoggedIn(me){ @@ -594,6 +603,7 @@ userBox.innerHTML = ''; const nm = userBox.querySelector('.ub-name'); if(nm) nm.textContent = me.name || me.login; + document.querySelectorAll('.nav .auth-only').forEach(el => el.classList.add('visible')); const lb = document.getElementById('ubLogout'); if(lb) lb.addEventListener('click', async ()=>{ try { await API.logout(); } catch(e){} diff --git a/website/intro.html b/website/intro.html index cec2070..c0e59aa 100644 --- a/website/intro.html +++ b/website/intro.html @@ -3,64 +3,103 @@ -游戏介绍 — 宇森 +宇森 — 游戏百科 @@ -69,70 +108,176 @@ p { color:#99aabb; font-size:15px; margin-bottom:16px; line-height:1.9; }
-

游戏介绍

-

这个世界不是静止的布景,它有地质、气候、生态和文明演化逻辑

-
-

- 你的角色不是操控者,而是「园丁」——播种、引导、在关键时刻施加影响,然后看着文明顺着自己的逻辑生长。 -

-

- 每个世界由五层垂直空间组成:从地心的熔岩脉搏,到地表上繁衍的城镇,再到星空中的未知信号。层与层之间不是割裂的维度,而是同一世界的不同切面——地下的矿脉供养地表的炉火,天空的季风影响作物的丰歉,星空的异常预示着文明的转折。 -

-

- 文明中的个体(NPC)有自己的性格、记忆和成长轨迹。他们会在火灾后学会预防,在交易中积累智慧,在危机中推举领袖。 -
这是一个活的文明系统。 -

+ +
+

宇 森

+

寰 宇 · 森 罗 — 一个活的文明系统

+ +
+

+ 你的角色不是操控者,而是「园丁」——播种、引导、在关键时刻施加影响,然后看着文明顺着自己的逻辑生长。 +

+

+ 每个世界由五层垂直空间组成:从地心的熔岩脉搏,到地表上繁衍的城镇,再到星空中的未知信号。层与层之间不是割裂的维度,而是同一世界的不同切面——地下的矿脉供养地表的炉火,天空的季风影响作物的丰歉,星空的异常预示着文明的转折。 +

+

+ 文明中的个体(NPC)有自己的性格、记忆和成长轨迹。他们会在火灾后学会预防,在交易中积累智慧,在危机中推举领袖。 +
这是一个活的文明系统。 +

+
+ +

快速了解

+
+
+
🧬
+

活的文明

+

NPC 有性格、记忆和自主决策能力,不是站桩的静态单位。

+
+
+
🏔️
+

五层垂直世界

+

地心 / 地下 / 大地 / 天空 / 星空,层间资源和事件互通。

+
+
+
🔭
+

镜头语言

+

点击格子 → 飞入微观场景,建筑动画、人物走动、资源飘字。

+
+
+
🌐
+

独立世界 + 异步互动

+

每人一个世界,通过贸易 / 战争 / 联盟产生连接。

+
+
-

核心特色

-
-
-
🧬
-

活的文明

-

NPC 有性格、记忆和自主决策能力,不是站桩的静态单位。日常靠规则引擎生存,周期性通过智能体反思进化。

+ +
+

背 景

+

世界观设定 · 开发理念 · 给玩家的话

+ + +
+

✦ 核心特色

+

宇森不是传统沙盒——每个系统都围绕「活的文明」这一核心理念设计。

+
+
+
🧬
+

活的文明

+

NPC 有性格、记忆和自主决策能力,不是站桩的静态单位。日常靠规则引擎生存,周期性通过智能体反思进化。

+
+
+
🏔️
+

五层垂直世界

+

地心 / 地下 / 大地 / 天空 / 星空,五层是同一世界的不同切面,层间有资源和事件互动。

+
+
+
🔭
+

镜头语言

+

点击格子 → 由远及近飞入 → 进入微观场景。建筑动画、人物走动、资源飘字,沉浸式体验。

+
+
+
🌐
+

独立世界 + 异步互动

+

每人一个世界,通过贸易 / 战争 / 联盟产生连接。独立的世界平面,异步策略博弈。

+
+
+
🗺️
+

渐进式地图

+

从 127 格起步,随文明发展扩展至千格、万格。正六边形密铺,无缝缩放。

+
+
+
⚔️
+

深度系统

+

种族 / 性格 / 天赋 / 职业 / 建造 / 交易 / 战争 / 势力 / 装备 / 神器 / 传奇 — 十五大系统。

+
+
-
-
🏔️
-

五层垂直世界

-

地心 / 地下 / 本地 / 天空 / 星空,五层是同一世界的不同切面,层间有资源和事件互动。

+ + +
+

✦ 世界背景

+

你的角色不是操控者,而是「园丁」——播种、引导、在关键时刻施加影响,然后看着文明顺着自己的逻辑生长。

+

每个世界由五层垂直空间组成:从地心的熔岩脉搏,到地表上繁衍的城镇,再到星空中的未知信号。层与层之间不是割裂的维度,而是同一世界的不同切面——地下的矿脉供养地表的炉火,天空的季风影响作物的丰歉,星空的异常预示着文明的转折。

+

文明中的个体(NPC)有自己的性格、记忆和成长轨迹。他们会在火灾后学会预防,在交易中积累智慧,在危机中推举领袖。
这是一个活的文明系统。

+

时间与季节

+

世界拥有独立的昼夜循环和四季更替。时间不仅影响光照和氛围,还驱动 NPC 的作息、作物的生长、以及某些事件的发生概率。玩家可以通过时钟控件加速或暂停时间流逝。

+

五层结构

+

星空 — 未知的信号源,可能来自远古文明或外星存在。
+ 天空 — 季风与气候层,影响地表农业和航行。
+ 大地 — 文明的主舞台,城镇、农田、道路在此展开。
+ 地下 — 矿脉与遗迹,为地表提供资源。
+ 地心 — 熔岩与能量源头,极端环境下的特殊生态。

-
-
🔭
-

镜头语言

-

点击格子 → 由远及近飞入 → 进入微观场景。建筑动画、人物走动、资源飘字,沉浸式体验。

-
-
-
🌐
-

独立世界 + 异步互动

-

每人一个世界,通过贸易 / 战争 / 联盟产生连接。独立的世界平面,异步策略博弈。

-
-
-
🗺️
-

渐进式地图

-

从 127 格起步,随文明发展扩展至千格、万格。正六边形密铺,无缝缩放。

-
-
-
⚔️
-

深度系统

-

种族 / 性格 / 天赋 / 职业 / 建造 / 交易 / 战争 / 势力 / 装备 / 神器 / 传奇 — 十五大系统。

+ + +
+

✦ 致玩家

+

+ 欢迎来到宇森。这里没有既定的胜利条件,也没有强制的主线任务。

+ 你可以花一下午看 NPC 们如何从零建起一座小镇;也可以专注于地形塑造,把世界雕成你心中的样子;或者什么都不做,只是静静地看着昼夜交替、四季流转。

+ 这个世界会记住你的每一次选择。你种下的因,会在某个意想不到的时刻结出果——也许是一棵参天大树,也许是一场席卷大陆的战争,也许只是一个居民在酒馆里提起你的名字。

+ 去探索吧,园丁。这个世界在等你。 +

-
+ + +
+

规 则

+

游戏机制与玩法说明

+
加载中...
+
+ + +
+

图 鉴

+

世界中的万物记录

+
加载中...
+
+ + +
+

论 坛

+

玩家讨论与交流

+
加载中...
+
+ + +
+

公 告

+

官方通知与更新日志

+
加载中...
+
+ + +
+

剧 情

+

世界观主线与支线叙事

+
+
📖
+

剧情内容正在筹备中…

+

敬请期待

+
+
+ +
+ + diff --git a/world.html b/world.html index 2207ba5..da070f0 100644 --- a/world.html +++ b/world.html @@ -3323,33 +3323,43 @@ init();