"use client"; import React, { FC, useEffect, useState } from "react"; import { chuni_static_avatar } from "@/prisma/schemas/artemis/generated/artemis"; import { Check, ChevronsUpDown } from "lucide-react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { z } from "zod"; type chunithm_avatar = chuni_static_avatar; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { toast } from "../ui/use-toast"; type AvatarSelectionProps = { avatarHeadSelectionData: { avatarParts: chunithm_avatar[]; }; avatarFaceSelectionData: { avatarParts: chunithm_avatar[]; }; avatarItemSelectionData: { avatarParts: chunithm_avatar[]; }; avatarBackSelectionData: { avatarParts: chunithm_avatar[]; }; avatarWearSelectionData: { avatarParts: chunithm_avatar[]; }; }; export const AvatarCustomization: FC = ({ avatarHeadSelectionData, avatarFaceSelectionData, avatarItemSelectionData, avatarBackSelectionData, avatarWearSelectionData, }) => { const FormSchema = z.object({ AvatarHeadAccessory: z.number({ required_error: "Please select a language.", }), AvatarFaceAccessory: z.number({ required_error: "Please select a language.", }), AvatarItemAccessory: z.number({ required_error: "Please select a language.", }), AvatarBackAccessory: z.number({ required_error: "Please select a language.", }), AvatarWearAccessory: z.number({ required_error: "Please select a language.", }), }); const form = useForm>({ resolver: zodResolver(FormSchema), }); function onSubmit(data: z.infer) { toast({ title: "You submitted the following values:", description: (
          {JSON.stringify(data, null, 2)}
        
), }); } const AvatarTextures: Record = { AvatarFaceStatic: { src: "avatarStatic/CHU_UI_Avatar_Tex_Face.png", className: "avatar_face_static", }, AvatarSkin: { src: `avatarAccessory/CHU_UI_Avatar_Tex_0${1400001}.png`, className: "avatar_skin", }, AvatarRightHand: { src: "avatarStatic/CHU_UI_Avatar_Tex_RightHand.png", className: "avatar_hand_r", }, AvatarLeftHand: { src: "avatarStatic/CHU_UI_Avatar_Tex_LeftHand.png", className: "avatar_hand_l", }, AvatarSkinFootL: { src: "avatarAccessory/CHU_UI_Avatar_Tex_01400001.png", className: "avatar_skinfoot_l", }, AvatarSkinFootR: { src: "avatarAccessory/CHU_UI_Avatar_Tex_01400001.png", className: "avatar_skinfoot_r", }, AvatarHeadAccessory: { src: "avatarAccessory/CHU_UI_Avatar_Tex_06202301.png", className: "avatar_head", }, AvatarItemAccessoryR: { src: "avatarAccessory/CHU_UI_Avatar_Tex_06502401.png", className: "avatar_item_r", }, AvatarItemAccessoryL: { src: "avatarAccessory/CHU_UI_Avatar_Tex_06502401.png", className: "avatar_item_l", }, AvatarBackAccessory: { src: "avatarAccessory/CHU_UI_Avatar_Tex_06703301.png", className: "avatar_back", }, AvatarWearAccessory: { src: "avatarAccessory/CHU_UI_Avatar_Tex_04103101.png", className: "avatar_wear", }, AvatarFace: { src: "avatarAccessory/CHU_UI_Avatar_Tex_02300003.png", className: "avatar_face", }, // not in use AvatarFront: { src: "avatarAccessory/CHU_UI_Avatar_Tex_01600001.png", className: "avatar_front", }, }; return (
{" "}
( Avatar Head Item {/* bugged */} {/* */} No avatar part found. {avatarHeadSelectionData.avatarParts.map((part) => ( { form.setValue( "AvatarHeadAccessory", part.avatarAccessoryId! ); console.log(part.avatarAccessoryId); }} > {part.name} ))} )} /> ( Avatar Face Item {/* bugged */} {/* */} No language found. {avatarFaceSelectionData.avatarParts.map((part) => ( { form.setValue( "AvatarFaceAccessory", part.avatarAccessoryId! ); }} > {part.name} ))} )} /> ( Avatar Hand Item {/* bugged */} {/* */} No avatar part found. {avatarItemSelectionData.avatarParts.map((part) => ( { form.setValue( "AvatarItemAccessory", part.avatarAccessoryId! ); }} > {part.name} ))} )} /> ( Avatar Back Item {/* bugged */} {/* */} No avatar part found. {avatarBackSelectionData.avatarParts.map((part) => ( { form.setValue( "AvatarBackAccessory", part.avatarAccessoryId! ); }} > {part.name} ))} )} /> ( Avatar Body Item {/* bugged */} {/* */} No avatar part found. {avatarWearSelectionData.avatarParts.map((part) => ( { form.setValue( "AvatarWearAccessory", part.avatarAccessoryId! ); }} > {part.name} ))} )} />
{/* Avatar Customization Section */}
{Object.entries(AvatarTextures).map(([key, { className, src }]) => (
{key}
))}
); };