update: game core flow pages

This commit is contained in:
Vick Scarlet
2026-08-16 20:06:16 +08:00
committed by 神戸小鳥
parent 25bd9ce2b7
commit 0c0fac5bfd
34 changed files with 890 additions and 768 deletions
+58 -4
View File
@@ -1,10 +1,64 @@
import { useState } from 'react'
import { usePicked, useEnd } from '@remake/hooks'
import { useJudge } from '@/hooks/judge'
import type { JudgeKeys, Judge } from '@/hooks/judge'
import { properties, judgeDisplay } from '@/display'
import TalentComponent from '@/components/Talent'
import './Summary.css'
interface JudgeItemProps {
prop: JudgeKeys
judge: Judge
}
function JudgeItem({ prop, judge }: JudgeItemProps) {
const { value, grade, level } = judge
return (
<li className={`${prop} grade-${grade}`}>
<span className="property">{properties[prop]}</span>
<span className="value font-mono">{value}</span>
<span className="level">{judgeDisplay(prop, level)}</span>
</li>
)
}
export default function Summary() {
const picked = usePicked()
const judges = useJudge()
const end = useEnd()
const [locked, setLocked] = useState<number | null>(null)
const handleSelect = (id: number) => {
if (locked === id) setLocked(null)
else setLocked(id)
}
const handleEnd = () => {
const achievements = end()
// TODO: Show achievements
console.log('Achievements', achievements)
}
return (
<div className="screen summary">
<h2></h2>
<p>: {}</p>
{/* 展现解锁的成就等 */}
<button onClick={() => {}}></button>
<ul className="judge-list">
{judges.map(([key, { value, grade, level }]) => (
<JudgeItem
key={key}
prop={key}
judge={{ value, grade, level }}
/>
))}
</ul>
<div className="section">
<div className="title"></div>
<ul className="talent-list">
{Array.from(picked, id => (
<li key={id} onClick={() => handleSelect(id)}>
<TalentComponent id={id} selected={locked === id} />
</li>
))}
</ul>
</div>
<button className="primary" onClick={handleEnd}>
</button>
</div>
)
}