提交 3a3f4db9 编写于 作者: L LeoKu

feat: add gender feature

上级 c7254cbd
...@@ -111,6 +111,7 @@ function handleGenerate() { ...@@ -111,6 +111,7 @@ function handleGenerate() {
) { ) {
colorfulOption = getSpecialAvatarOption() colorfulOption = getSpecialAvatarOption()
} }
colorfulOption.wrapperShape = avatarOption.value.wrapperShape
setAvatarOption(colorfulOption) setAvatarOption(colorfulOption)
showConfetti() showConfetti()
} else { } else {
......
...@@ -40,6 +40,8 @@ type AvatarWidgets = { ...@@ -40,6 +40,8 @@ type AvatarWidgets = {
} }
export interface AvatarOption { export interface AvatarOption {
gender?: Gender
wrapperShape?: `${WrapperShape}` wrapperShape?: `${WrapperShape}`
background: { background: {
......
import type { BeardShape, EarringsShape, GlassesShape } from '@/enums' import type { EarringsShape, GlassesShape } from '@/enums'
import { BeardShape, Gender, TopsShape } from '@/enums'
import type { AvatarOption, None } from '@/types' import type { AvatarOption, None } from '@/types'
import { NONE, SETTINGS, SPECIAL_AVATARS } from './constant' import { NONE, SETTINGS, SPECIAL_AVATARS } from './constant'
...@@ -32,7 +33,19 @@ export function getRandomAvatarOption( ...@@ -32,7 +33,19 @@ export function getRandomAvatarOption(
presetOption: Partial<AvatarOption> = {}, presetOption: Partial<AvatarOption> = {},
useOption: Partial<AvatarOption> = {} useOption: Partial<AvatarOption> = {}
): AvatarOption { ): AvatarOption {
const gender = getRandomValue(SETTINGS.gender)
const beardList: BeardShape[] = []
let topList: TopsShape[] = [TopsShape.Danny, TopsShape.Wave, TopsShape.Pixie]
if (gender === Gender.Male) {
beardList.push(BeardShape.Scruff)
topList = SETTINGS.topsShape.filter((shape) => !topList.includes(shape))
}
const avatarOption: AvatarOption = { const avatarOption: AvatarOption = {
gender,
wrapperShape: wrapperShape:
presetOption?.wrapperShape || getRandomValue(SETTINGS.wrapperShape), presetOption?.wrapperShape || getRandomValue(SETTINGS.wrapperShape),
...@@ -47,7 +60,7 @@ export function getRandomAvatarOption( ...@@ -47,7 +60,7 @@ export function getRandomAvatarOption(
shape: getRandomValue(SETTINGS.faceShape), shape: getRandomValue(SETTINGS.faceShape),
}, },
tops: { tops: {
shape: getRandomValue(SETTINGS.topsShape, { shape: getRandomValue(topList, {
avoid: [useOption.widgets?.tops?.shape], avoid: [useOption.widgets?.tops?.shape],
}), }),
}, },
...@@ -87,7 +100,7 @@ export function getRandomAvatarOption( ...@@ -87,7 +100,7 @@ export function getRandomAvatarOption(
}), }),
}, },
beard: { beard: {
shape: getRandomValue<BeardShape | None>(SETTINGS.beardShape, { shape: getRandomValue<BeardShape | None>(beardList, {
usually: [NONE], usually: [NONE],
}), }),
}, },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册