File size: 2,076 Bytes
3831e97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!doctype html>
<html lang="zh-CN">
<meta charset="utf-8"/>
<title>小镇角落小店 · 美术画廊</title>
<style>
 body{font-family:system-ui,sans-serif;background:#f4efe8;color:#3b2f2a;margin:0;padding:1.5rem}
 h1{font-weight:600}
 .cats{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}
 button{border:1px solid #cbb;background:#fff;border-radius:999px;padding:.35rem .8rem;cursor:pointer}
 button.active{background:#e7d3c0}
 grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}
 figure{margin:0;background:#fff;border-radius:12px;padding:.6rem;box-shadow:0 2px 10px #0001}
 img{width:100%;height:160px;object-fit:cover;border-radius:8px}
 figcaption{font-size:.8rem;margin-top:.4rem;word-break:break-all}
</style>
<h1>小镇角落小店 · 美术资源</h1>
<p>仅展示 manifest 核心类目中的独立资源(非 ffmpeg 批量变体目录)。</p>
<div class="cats" id="cats"></div>
<div id="grid"></div>
<script>
async function main(){
  const res = await fetch('../assets/manifest/assets.json');
  const man = await res.json();
  const core = ['shop','product','furniture','character','ui'];
  const cats = document.getElementById('cats');
  const grid = document.getElementById('grid');
  function render(cat){
    grid.innerHTML='';
    const keys = (man.categories[cat]||[]).filter(k=>!k.startsWith('round.'));
    const seen = new Set();
    for(const k of keys){
      const path = man.assets[k];
      if(!path || seen.has(path) || path.includes('assets/rounds/')) continue;
      seen.add(path);
      const fig = document.createElement('figure');
      fig.innerHTML = `<img src="../${path}" alt="${k}" loading="lazy"/><figcaption>${k}<br/>${path}</figcaption>`;
      grid.appendChild(fig);
    }
  }
  core.forEach((c,i)=>{
    const b=document.createElement('button');
    b.textContent=c; if(i===0) b.classList.add('active');
    b.onclick=()=>{[...cats.children].forEach(x=>x.classList.remove('active')); b.classList.add('active'); render(c)};
    cats.appendChild(b);
  });
  render('shop');
}
main();
</script>