From dd4bbc1877e2a3b660643729df38121d0ef258a1 Mon Sep 17 00:00:00 2001 From: CAtlas0784 Date: Sat, 17 Oct 2026 02:35:55 +0700 Subject: [PATCH] feat: add png export, neonteam details, relic slot manager, rich traces, e0s1 presets, and server-aware lineup persistence --- css/styles.css | 314 ++++++++++++ index.html | 334 ++++++++++--- js/app.js | 1169 +++++++++++++++++++++++++++++++++++++++----- js/avatars-data.js | 7 +- 4 files changed, 1623 insertions(+), 201 deletions(-) diff --git a/css/styles.css b/css/styles.css index a848e53..7ffa293 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1929,3 +1929,317 @@ input:checked + .slider:before { margin-top: 0.5rem; } +/* ========================================================================== + Neonteam & Punklorde Features: Character Switcher, Overview, Relics, Skills + ========================================================================== */ + +/* Character Switcher Strip */ +.modal-char-switcher-strip { + display: flex; + gap: 0.5rem; + overflow-x: auto; + padding: 0.25rem 0.25rem 0.65rem 0.25rem; + margin-bottom: 1.25rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + scrollbar-width: thin; +} + +.modal-char-switcher-item { + width: 44px; + height: 44px; + min-width: 44px; + border-radius: 50%; + overflow: hidden; + border: 2px solid var(--border-color); + cursor: pointer; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + background: var(--bg-card); + position: relative; + flex-shrink: 0; +} + +.modal-char-switcher-item:hover { + transform: scale(1.1); + border-color: var(--accent-cyan); +} + +.modal-char-switcher-item.active { + border-color: var(--accent-gold); + box-shadow: 0 0 12px rgba(251, 191, 36, 0.6); + transform: scale(1.15); +} + +.modal-char-switcher-item img { + width: 100%; + height: 100%; + object-fit: cover; +} + +/* Overview Layout (Neonteam Style) */ +.overview-layout { + display: grid; + grid-template-columns: 280px 1fr; + gap: 1.5rem; + align-items: start; +} + +@media (max-width: 820px) { + .overview-layout { + grid-template-columns: 1fr; + } +} + +.overview-portrait-box { + position: relative; + border-radius: var(--radius-lg); + overflow: hidden; + min-height: 420px; + background: radial-gradient(circle at 50% 25%, rgba(56, 189, 248, 0.15) 0%, rgba(10, 14, 23, 0.95) 100%); + border: 1px solid var(--border-color); + display: flex; + flex-direction: column; + justify-content: flex-end; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5); +} + +.overview-portrait-img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + object-position: top center; + transition: transform 0.4s ease; +} + +.overview-portrait-box:hover .overview-portrait-img { + transform: scale(1.03); +} + +.overview-portrait-info { + position: relative; + z-index: 2; + padding: 1.25rem 1rem; + background: linear-gradient(to top, rgba(10, 14, 23, 0.98) 0%, rgba(10, 14, 23, 0.75) 60%, transparent 100%); +} + +.overview-stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 0.65rem; +} + +.overview-stat-card { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + padding: 0.65rem 0.85rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.overview-stat-label { + font-size: 0.8rem; + color: var(--text-muted); + display: flex; + align-items: center; + gap: 0.4rem; +} + +.overview-stat-val { + font-size: 0.925rem; + font-weight: 800; + font-family: monospace; + color: var(--text-highlight); +} + +/* Relics 6 Slots Layout */ +.relics-slots-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 0.85rem; +} + +.relic-slot-box { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 0.85rem; + display: flex; + gap: 0.85rem; + align-items: center; + position: relative; + transition: all 0.2s ease; +} + +.relic-slot-box:hover { + border-color: rgba(56, 189, 248, 0.5); + background: rgba(18, 24, 38, 0.85); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); +} + +.relic-slot-icon-wrap { + width: 52px; + height: 52px; + min-width: 52px; + border-radius: var(--radius-sm); + background: var(--bg-card); + border: 1px solid var(--border-color); + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + position: relative; + flex-shrink: 0; +} + +.relic-slot-badge { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.8); + font-size: 0.6rem; + text-align: center; + font-weight: 800; + color: #cbd5e1; + padding: 0.05rem 0; +} + +.relic-slot-content { + flex: 1; + min-width: 0; +} + +.relic-slot-title { + font-size: 0.85rem; + font-weight: 700; + color: var(--text-highlight); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.relic-slot-main { + font-size: 0.75rem; + font-weight: 700; + color: var(--accent-gold); + margin-top: 0.2rem; +} + +.relic-slot-subs { + font-size: 0.7rem; + color: var(--text-muted); + margin-top: 0.2rem; + line-height: 1.35; +} + +.relic-slot-actions { + display: flex; + flex-direction: column; + gap: 0.35rem; + flex-shrink: 0; +} + +/* Rich Skills & Traces */ +.skill-row-icon { + width: 38px; + height: 38px; + min-width: 38px; + border-radius: 8px; + background: rgba(0, 0, 0, 0.4); + border: 1px solid var(--border-color); + object-fit: contain; + padding: 3px; +} + +.skill-type-tag { + font-size: 0.7rem; + font-weight: 700; + background: rgba(56, 189, 248, 0.15); + border: 1px solid rgba(56, 189, 248, 0.35); + color: var(--accent-cyan); + padding: 0.15rem 0.45rem; + border-radius: 4px; + white-space: nowrap; +} + +.skill-desc-box { + background: rgba(11, 15, 25, 0.65); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: var(--radius-sm); + padding: 0.65rem 0.85rem; + font-size: 0.8rem; + line-height: 1.5; + color: #cbd5e1; +} + +.skill-desc-box .param-val { + color: var(--accent-cyan); + font-weight: 700; +} + +.trace-card-item { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + padding: 0.75rem 1rem; + display: flex; + flex-direction: column; + gap: 0.35rem; +} + +.trace-icon-small { + width: 28px; + height: 28px; + min-width: 28px; + border-radius: 6px; + background: rgba(0, 0, 0, 0.35); + border: 1px solid var(--border-color); + object-fit: contain; + padding: 2px; +} + +/* Outside Character Card Quick Buttons (E0S1 / E6S5) */ +.btn-card-e0s1 { + background: rgba(56, 189, 248, 0.15) !important; + border: 1px solid rgba(56, 189, 248, 0.5) !important; + color: var(--accent-cyan) !important; + font-weight: 800 !important; + font-size: 0.725rem !important; + padding: 0.25rem 0.55rem !important; +} + +.btn-card-e0s1:hover { + background: rgba(56, 189, 248, 0.35) !important; + border-color: var(--accent-cyan) !important; + box-shadow: 0 0 10px rgba(56, 189, 248, 0.4) !important; + transform: translateY(-1px); +} + +.btn-card-e6s5 { + background: rgba(251, 191, 36, 0.15) !important; + border: 1px solid rgba(251, 191, 36, 0.5) !important; + color: var(--accent-gold) !important; + font-weight: 800 !important; + font-size: 0.725rem !important; + padding: 0.25rem 0.55rem !important; +} + +.btn-card-e6s5:hover { + background: rgba(251, 191, 36, 0.35) !important; + border-color: var(--accent-gold) !important; + box-shadow: 0 0 10px rgba(251, 191, 36, 0.4) !important; + transform: translateY(-1px); +} + +/* Locked Creative Mode Styling */ +.switch input:disabled + .slider { + opacity: 0.45; + cursor: not-allowed; + filter: grayscale(0.8); +} + + diff --git a/index.html b/index.html index 6aa1b90..495016d 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,7 @@ GaC-Srtool — Ultimate Star Rail Server & Build Manager + @@ -140,21 +141,21 @@

เครื่องมือจัดการทีมและเซิร์ฟเวอร์แบบทันที

- - - - @@ -492,13 +493,14 @@

ปรับแต่งพฤติกรรมเริ่มต้นของระบบในเกมและการจัดทีม

- -
- -
- - - + +
+
+ ระบบบันทึกทีมและข้อมูล (Lineup Storage) + Persistent API (GaC) +
+
+ GaC Server เก็บทีมใน persistent.json (รองรับโหมดสร้างสรรค์) • สำหรับ FireflyGo เก็บใน freesr-data.json
@@ -601,6 +603,11 @@
+ + +
@@ -611,33 +618,137 @@
- +
- + + + + + + + -