// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "core/hle/service/mii/mii_types.h" namespace Service::Mii { class StoreData; // This is nn::mii::detail::CharInfoRaw class CharInfo { public: void SetFromStoreData(const StoreData& store_data_raw); ValidationResult Verify() const; Common::UUID GetCreateId() const; Nickname GetNickname() const; FontRegion GetFontRegion() const; FavoriteColor GetFavoriteColor() const; Gender GetGender() const; u8 GetHeight() const; u8 GetBuild() const; u8 GetType() const; u8 GetRegionMove() const; FacelineType GetFacelineType() const; FacelineColor GetFacelineColor() const; FacelineWrinkle GetFacelineWrinkle() const; FacelineMake GetFacelineMake() const; HairType GetHairType() const; CommonColor GetHairColor() const; HairFlip GetHairFlip() const; EyeType GetEyeType() const; CommonColor GetEyeColor() const; u8 GetEyeScale() const; u8 GetEyeAspect() const; u8 GetEyeRotate() const; u8 GetEyeX() const; u8 GetEyeY() const; EyebrowType GetEyebrowType() const; CommonColor GetEyebrowColor() const; u8 GetEyebrowScale() const; u8 GetEyebrowAspect() const; u8 GetEyebrowRotate() const; u8 GetEyebrowX() const; u8 GetEyebrowY() const; NoseType GetNoseType() const; u8 GetNoseScale() const; u8 GetNoseY() const; MouthType GetMouthType() const; CommonColor GetMouthColor() const; u8 GetMouthScale() const; u8 GetMouthAspect() const; u8 GetMouthY() const; CommonColor GetBeardColor() const; BeardType GetBeardType() const; MustacheType GetMustacheType() const; u8 GetMustacheScale() const; u8 GetMustacheY() const; GlassType GetGlassType() const; CommonColor GetGlassColor() const; u8 GetGlassScale() const; u8 GetGlassY() const; MoleType GetMoleType() const; u8 GetMoleScale() const; u8 GetMoleX() const; u8 GetMoleY() const; bool operator==(const CharInfo& info); private: Common::UUID create_id{}; Nickname name{}; u16 null_terminator{}; FontRegion font_region{}; FavoriteColor favorite_color{}; Gender gender{}; u8 height{}; u8 build{}; u8 type{}; u8 region_move{}; FacelineType faceline_type{}; FacelineColor faceline_color{}; FacelineWrinkle faceline_wrinkle{}; FacelineMake faceline_make{}; HairType hair_type{}; CommonColor hair_color{}; HairFlip hair_flip{}; EyeType eye_type{}; CommonColor eye_color{}; u8 eye_scale{}; u8 eye_aspect{}; u8 eye_rotate{}; u8 eye_x{}; u8 eye_y{}; EyebrowType eyebrow_type{}; CommonColor eyebrow_color{}; u8 eyebrow_scale{}; u8 eyebrow_aspect{}; u8 eyebrow_rotate{}; u8 eyebrow_x{}; u8 eyebrow_y{}; NoseType nose_type{}; u8 nose_scale{}; u8 nose_y{}; MouthType mouth_type{}; CommonColor mouth_color{}; u8 mouth_scale{}; u8 mouth_aspect{}; u8 mouth_y{}; CommonColor beard_color{}; BeardType beard_type{}; MustacheType mustache_type{}; u8 mustache_scale{}; u8 mustache_y{}; GlassType glass_type{}; CommonColor glass_color{}; u8 glass_scale{}; u8 glass_y{}; MoleType mole_type{}; u8 mole_scale{}; u8 mole_x{}; u8 mole_y{}; u8 padding{}; }; static_assert(sizeof(CharInfo) == 0x58, "CharInfo has incorrect size."); static_assert(std::has_unique_object_representations_v, "All bits of CharInfo must contribute to its value."); struct CharInfoElement { CharInfo char_info{}; Source source{}; }; static_assert(sizeof(CharInfoElement) == 0x5c, "CharInfoElement has incorrect size."); }; // namespace Service::Mii