Skip to content

Commit df9a437

Browse files
committed
feat: display rarity colors
1 parent 0512d84 commit df9a437

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/components/editor/operator/EditorOperator.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,13 @@ export const EditorOperatorName = <T extends FieldValues>({
136136
export const OperatorAvatar = ({
137137
id,
138138
name,
139+
rarity = 0,
139140
size,
140141
className,
141142
}: {
142143
id?: string
143144
name?: string
145+
rarity?: number
144146
size?: 'small' | 'medium' | 'large'
145147
className?: string
146148
}) => {
@@ -163,11 +165,26 @@ export const OperatorAvatar = ({
163165
large: 'h-8 w-8',
164166
}[size]
165167

166-
const commonClassName = 'rounded-md object-cover bp4-elevation-1 bg-slate-100'
168+
const colorClassName =
169+
rarity === 6
170+
? ['bg-orange-200', 'ring-orange-300']
171+
: rarity === 5
172+
? ['bg-yellow-100', 'ring-yellow-200']
173+
: rarity === 4
174+
? ['bg-purple-100', 'ring-purple-200']
175+
: ['bg-slate-100', 'ring-slate-200']
176+
177+
const commonClassName =
178+
'ring-inset ring-2 border-solid rounded-md object-cover'
167179

168180
return foundId ? (
169181
<img
170-
className={clsx(sizingClassName, commonClassName, className)}
182+
className={clsx(
183+
sizingClassName,
184+
colorClassName,
185+
commonClassName,
186+
className,
187+
)}
171188
src={'/assets/operator-avatars/' + foundId + '.png'}
172189
alt={id}
173190
loading="lazy"
@@ -176,6 +193,7 @@ export const OperatorAvatar = ({
176193
<div
177194
className={clsx(
178195
sizingClassName,
196+
colorClassName,
179197
commonClassName,
180198
'flex items-center justify-center font-bold text-2xl text-slate-300 select-none',
181199
className,

src/components/viewer/OperationViewer.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import { useLevels } from '../../apis/level'
4545
import { CopilotDocV1 } from '../../models/copilot.schema'
4646
import { createCustomLevel, findLevelByStageName } from '../../models/level'
4747
import { Level } from '../../models/operation'
48+
import { OPERATORS } from '../../models/operator'
4849
import { formatError } from '../../utils/error'
4950
import { ActionCard } from '../ActionCard'
5051
import { UserName } from '../UserName'
@@ -250,11 +251,16 @@ const OperatorCard: FC<{
250251
operator: CopilotDocV1.Operator
251252
}> = ({ operator }) => {
252253
const { name, skill } = operator
254+
const info = OPERATORS.find((o) => o.name === name)
253255
const skillStr = [null, '一', '二', '三'][skill ?? 1] ?? '未知'
254256
return (
255257
<div className="min-w-24 flex flex-col items-center">
256-
<OperatorAvatar name={name} className="w-16 h-16 mb-1" />
257-
<span className="mb-1 font-bold">{name}</span>
258+
<OperatorAvatar
259+
id={info?.id}
260+
rarity={info?.rarity}
261+
className="w-16 h-16 mb-1"
262+
/>
263+
<span className={clsx('mb-1 font-bold')}>{name}</span>
258264
<span className="text-xs text-zinc-500">{skillStr}技能</span>
259265
</div>
260266
)

0 commit comments

Comments
 (0)