feat: add MMGame backend and frontend source code

This commit is contained in:
gmh01
2026-08-01 21:30:23 +08:00
parent 26ce0dd600
commit c176c04aab
42 changed files with 3606 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
import { useNavigate } from 'react-router-dom'
import { Navbar } from '../components/Navbar'
import { useEffect, useState } from 'react'
import { api } from '../store/api'
export function Home() {
const navigate = useNavigate()
const [scripts, setScripts] = useState<any[]>([])
useEffect(() => {
api.scripts.list().then(setScripts).catch(() => {})
}, [])
return (
<div>
<Navbar />
<div className="hero">
<h1>AI </h1>
<p>1 AI </p>
<div className="actions">
<button className="btn-primary" onClick={() => navigate('/scripts')}>
</button>
<button className="btn-secondary" onClick={() => navigate('/login')}>
/
</button>
</div>
</div>
<div className="page">
<h2 style={{ marginBottom: 16 }}></h2>
<div className="script-grid">
{scripts.map((s) => (
<div
key={s.id}
className="card script-card"
style={{ cursor: 'pointer' }}
onClick={() => navigate(`/scripts/${s.id}`)}
>
<h3>{s.title}</h3>
<div className="tags">
<span className="tag">{s.type}</span>
<span className="tag difficulty">{'⭐'.repeat(s.difficulty)}</span>
<span className="tag">{s.duration}</span>
<span className="tag">{s.min_players}-{s.max_players}</span>
</div>
<p style={{ color: '#aaa', fontSize: 14, lineHeight: 1.6 }}>{s.background}</p>
</div>
))}
</div>
</div>
</div>
)
}