|
|
|
@ -2,5 +2,481 @@ |
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
#include "core/hle/service/mii/types/char_info.h"
|
|
|
|
#include "core/hle/service/mii/types/store_data.h"
|
|
|
|
|
|
|
|
namespace Service::Mii {} // namespace Service::Mii
|
|
|
|
namespace Service::Mii { |
|
|
|
|
|
|
|
void CharInfo::SetFromStoreData(const StoreData& store_data) { |
|
|
|
name = store_data.GetNickname(); |
|
|
|
null_terminator = '\0'; |
|
|
|
create_id = store_data.GetCreateId(); |
|
|
|
font_region = static_cast<u8>(store_data.GetFontRegion()); |
|
|
|
favorite_color = store_data.GetFavoriteColor(); |
|
|
|
gender = store_data.GetGender(); |
|
|
|
height = store_data.GetHeight(); |
|
|
|
build = store_data.GetBuild(); |
|
|
|
type = store_data.GetType(); |
|
|
|
region_move = store_data.GetRegionMove(); |
|
|
|
faceline_type = store_data.GetFacelineType(); |
|
|
|
faceline_color = store_data.GetFacelineColor(); |
|
|
|
faceline_wrinkle = store_data.GetFacelineWrinkle(); |
|
|
|
faceline_make = store_data.GetFacelineMake(); |
|
|
|
hair_type = store_data.GetHairType(); |
|
|
|
hair_color = store_data.GetHairColor(); |
|
|
|
hair_flip = store_data.GetHairFlip(); |
|
|
|
eye_type = store_data.GetEyeType(); |
|
|
|
eye_color = store_data.GetEyeColor(); |
|
|
|
eye_scale = store_data.GetEyeScale(); |
|
|
|
eye_aspect = store_data.GetEyeAspect(); |
|
|
|
eye_rotate = store_data.GetEyeRotate(); |
|
|
|
eye_x = store_data.GetEyeX(); |
|
|
|
eye_y = store_data.GetEyeY(); |
|
|
|
eyebrow_type = store_data.GetEyebrowType(); |
|
|
|
eyebrow_color = store_data.GetEyebrowColor(); |
|
|
|
eyebrow_scale = store_data.GetEyebrowScale(); |
|
|
|
eyebrow_aspect = store_data.GetEyebrowAspect(); |
|
|
|
eyebrow_rotate = store_data.GetEyebrowRotate(); |
|
|
|
eyebrow_x = store_data.GetEyebrowX(); |
|
|
|
eyebrow_y = store_data.GetEyebrowY(); |
|
|
|
nose_type = store_data.GetNoseType(); |
|
|
|
nose_scale = store_data.GetNoseScale(); |
|
|
|
nose_y = store_data.GetNoseY(); |
|
|
|
mouth_type = store_data.GetMouthType(); |
|
|
|
mouth_color = store_data.GetMouthColor(); |
|
|
|
mouth_scale = store_data.GetMouthScale(); |
|
|
|
mouth_aspect = store_data.GetMouthAspect(); |
|
|
|
mouth_y = store_data.GetMouthY(); |
|
|
|
beard_color = store_data.GetBeardColor(); |
|
|
|
beard_type = store_data.GetBeardType(); |
|
|
|
mustache_type = store_data.GetMustacheType(); |
|
|
|
mustache_scale = store_data.GetMustacheScale(); |
|
|
|
mustache_y = store_data.GetMustacheY(); |
|
|
|
glasses_type = store_data.GetGlassType(); |
|
|
|
glasses_color = store_data.GetGlassColor(); |
|
|
|
glasses_scale = store_data.GetGlassScale(); |
|
|
|
glasses_y = store_data.GetGlassY(); |
|
|
|
mole_type = store_data.GetMoleType(); |
|
|
|
mole_scale = store_data.GetMoleScale(); |
|
|
|
mole_x = store_data.GetMoleX(); |
|
|
|
mole_y = store_data.GetMoleY(); |
|
|
|
padding = '\0'; |
|
|
|
} |
|
|
|
|
|
|
|
u32 CharInfo::Verify() const { |
|
|
|
if (!create_id.IsValid()) { |
|
|
|
return 0x32; |
|
|
|
} |
|
|
|
if (!name.IsValid()) { |
|
|
|
return 0x33; |
|
|
|
} |
|
|
|
if (3 < font_region) { |
|
|
|
return 0x17; |
|
|
|
} |
|
|
|
if (0xb < favorite_color) { |
|
|
|
return 0x16; |
|
|
|
} |
|
|
|
if (1 < gender) { |
|
|
|
return 0x18; |
|
|
|
} |
|
|
|
if (height < 0) { |
|
|
|
return 0x20; |
|
|
|
} |
|
|
|
if (build < 0) { |
|
|
|
return 3; |
|
|
|
} |
|
|
|
if (1 < type) { |
|
|
|
return 0x35; |
|
|
|
} |
|
|
|
if (3 < region_move) { |
|
|
|
return 0x31; |
|
|
|
} |
|
|
|
if (0xb < faceline_type) { |
|
|
|
return 0x15; |
|
|
|
} |
|
|
|
if (9 < faceline_color) { |
|
|
|
return 0x12; |
|
|
|
} |
|
|
|
if (0xb < faceline_wrinkle) { |
|
|
|
return 0x14; |
|
|
|
} |
|
|
|
if (0xb < faceline_make) { |
|
|
|
return 0x13; |
|
|
|
} |
|
|
|
if (0x83 < hair_type) { |
|
|
|
return 0x1f; |
|
|
|
} |
|
|
|
if (99 < hair_color) { |
|
|
|
return 0x1d; |
|
|
|
} |
|
|
|
if (1 < hair_flip) { |
|
|
|
return 0x1e; |
|
|
|
} |
|
|
|
if (0x3b < eye_type) { |
|
|
|
return 8; |
|
|
|
} |
|
|
|
if (99 < eye_color) { |
|
|
|
return 5; |
|
|
|
} |
|
|
|
if (7 < eye_scale) { |
|
|
|
return 7; |
|
|
|
} |
|
|
|
if (6 < eye_aspect) { |
|
|
|
return 4; |
|
|
|
} |
|
|
|
if (7 < eye_rotate) { |
|
|
|
return 6; |
|
|
|
} |
|
|
|
if (0xc < eye_x) { |
|
|
|
return 9; |
|
|
|
} |
|
|
|
if (0x12 < eye_y) { |
|
|
|
return 10; |
|
|
|
} |
|
|
|
if (0x17 < eyebrow_type) { |
|
|
|
return 0xf; |
|
|
|
} |
|
|
|
if (99 < eyebrow_color) { |
|
|
|
return 0xc; |
|
|
|
} |
|
|
|
if (8 < eyebrow_scale) { |
|
|
|
return 0xe; |
|
|
|
} |
|
|
|
if (6 < eyebrow_aspect) { |
|
|
|
return 0xb; |
|
|
|
} |
|
|
|
if (0xb < eyebrow_rotate) { |
|
|
|
return 0xd; |
|
|
|
} |
|
|
|
if (0xc < eyebrow_x) { |
|
|
|
return 0x10; |
|
|
|
} |
|
|
|
if (0xf < eyebrow_y - 3) { |
|
|
|
return 0x11; |
|
|
|
} |
|
|
|
if (0x11 < nose_type) { |
|
|
|
return 0x2f; |
|
|
|
} |
|
|
|
if (nose_scale >= 9) { |
|
|
|
return 0x2e; |
|
|
|
} |
|
|
|
if (0x12 < nose_y) { |
|
|
|
return 0x30; |
|
|
|
} |
|
|
|
if (0x23 < mouth_type) { |
|
|
|
return 0x28; |
|
|
|
} |
|
|
|
if (99 < mouth_color) { |
|
|
|
return 0x26; |
|
|
|
} |
|
|
|
if (8 < mouth_scale) { |
|
|
|
return 0x27; |
|
|
|
} |
|
|
|
if (6 < mouth_aspect) { |
|
|
|
return 0x25; |
|
|
|
} |
|
|
|
if (0x12 < mouth_y) { |
|
|
|
return 0x29; |
|
|
|
} |
|
|
|
if (99 < beard_color) { |
|
|
|
return 1; |
|
|
|
} |
|
|
|
if (5 < beard_type) { |
|
|
|
return 2; |
|
|
|
} |
|
|
|
if (5 < mustache_type) { |
|
|
|
return 0x2b; |
|
|
|
} |
|
|
|
if (8 < mustache_scale) { |
|
|
|
return 0x2a; |
|
|
|
} |
|
|
|
if (0x10 < mustache_y) { |
|
|
|
return 0x2c; |
|
|
|
} |
|
|
|
if (0x13 < glasses_type) { |
|
|
|
return 0x1b; |
|
|
|
} |
|
|
|
if (99 < glasses_color) { |
|
|
|
return 0x19; |
|
|
|
} |
|
|
|
if (7 < glasses_scale) { |
|
|
|
return 0x1a; |
|
|
|
} |
|
|
|
if (0x14 < glasses_y) { |
|
|
|
return 0x1c; |
|
|
|
} |
|
|
|
if (mole_type >= 2) { |
|
|
|
return 0x22; |
|
|
|
} |
|
|
|
if (8 < mole_scale) { |
|
|
|
return 0x21; |
|
|
|
} |
|
|
|
if (mole_x >= 0x11) { |
|
|
|
return 0x23; |
|
|
|
} |
|
|
|
if (0x1e < mole_y) { |
|
|
|
return 0x24; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
Common::UUID CharInfo::GetCreateId() const { |
|
|
|
return create_id; |
|
|
|
} |
|
|
|
|
|
|
|
Nickname CharInfo::GetNickname() const { |
|
|
|
return name; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFontRegion() const { |
|
|
|
return font_region; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFavoriteColor() const { |
|
|
|
return favorite_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetGender() const { |
|
|
|
return gender; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetHeight() const { |
|
|
|
return height; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetBuild() const { |
|
|
|
return build; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetType() const { |
|
|
|
return type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetRegionMove() const { |
|
|
|
return region_move; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFacelineType() const { |
|
|
|
return faceline_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFacelineColor() const { |
|
|
|
return faceline_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFacelineWrinkle() const { |
|
|
|
return faceline_wrinkle; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetFacelineMake() const { |
|
|
|
return faceline_make; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetHairType() const { |
|
|
|
return hair_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetHairColor() const { |
|
|
|
return hair_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetHairFlip() const { |
|
|
|
return hair_flip; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeType() const { |
|
|
|
return eye_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeColor() const { |
|
|
|
return eye_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeScale() const { |
|
|
|
return eye_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeAspect() const { |
|
|
|
return eye_aspect; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeRotate() const { |
|
|
|
return eye_rotate; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeX() const { |
|
|
|
return eye_x; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyeY() const { |
|
|
|
return eye_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowType() const { |
|
|
|
return eyebrow_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowColor() const { |
|
|
|
return eyebrow_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowScale() const { |
|
|
|
return eyebrow_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowAspect() const { |
|
|
|
return eyebrow_aspect; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowRotate() const { |
|
|
|
return eyebrow_rotate; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowX() const { |
|
|
|
return eyebrow_x; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetEyebrowY() const { |
|
|
|
return eyebrow_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetNoseType() const { |
|
|
|
return nose_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetNoseScale() const { |
|
|
|
return nose_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetNoseY() const { |
|
|
|
return nose_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMouthType() const { |
|
|
|
return mouth_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMouthColor() const { |
|
|
|
return mouth_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMouthScale() const { |
|
|
|
return mouth_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMouthAspect() const { |
|
|
|
return mouth_aspect; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMouthY() const { |
|
|
|
return mouth_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetBeardColor() const { |
|
|
|
return beard_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetBeardType() const { |
|
|
|
return beard_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMustacheType() const { |
|
|
|
return mustache_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMustacheScale() const { |
|
|
|
return mustache_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMustacheY() const { |
|
|
|
return mustache_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetGlassType() const { |
|
|
|
return glasses_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetGlassColor() const { |
|
|
|
return glasses_color; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetGlassScale() const { |
|
|
|
return glasses_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetGlassY() const { |
|
|
|
return glasses_y; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMoleType() const { |
|
|
|
return mole_type; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMoleScale() const { |
|
|
|
return mole_scale; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMoleX() const { |
|
|
|
return mole_x; |
|
|
|
} |
|
|
|
|
|
|
|
u8 CharInfo::GetMoleY() const { |
|
|
|
return mole_y; |
|
|
|
} |
|
|
|
|
|
|
|
bool CharInfo::operator==(const CharInfo& info) { |
|
|
|
bool is_identical = info.Verify() == 0; |
|
|
|
is_identical &= name == info.GetNickname(); |
|
|
|
is_identical &= create_id == info.GetCreateId(); |
|
|
|
is_identical &= font_region == info.GetFontRegion(); |
|
|
|
is_identical &= favorite_color == info.GetFavoriteColor(); |
|
|
|
is_identical &= gender == info.GetGender(); |
|
|
|
is_identical &= height == info.GetHeight(); |
|
|
|
is_identical &= build == info.GetBuild(); |
|
|
|
is_identical &= type == info.GetType(); |
|
|
|
is_identical &= region_move == info.GetRegionMove(); |
|
|
|
is_identical &= faceline_type == info.GetFacelineType(); |
|
|
|
is_identical &= faceline_color == info.GetFacelineColor(); |
|
|
|
is_identical &= faceline_wrinkle == info.GetFacelineWrinkle(); |
|
|
|
is_identical &= faceline_make == info.GetFacelineMake(); |
|
|
|
is_identical &= hair_type == info.GetHairType(); |
|
|
|
is_identical &= hair_color == info.GetHairColor(); |
|
|
|
is_identical &= hair_flip == info.GetHairFlip(); |
|
|
|
is_identical &= eye_type == info.GetEyeType(); |
|
|
|
is_identical &= eye_color == info.GetEyeColor(); |
|
|
|
is_identical &= eye_scale == info.GetEyeScale(); |
|
|
|
is_identical &= eye_aspect == info.GetEyeAspect(); |
|
|
|
is_identical &= eye_rotate == info.GetEyeRotate(); |
|
|
|
is_identical &= eye_x == info.GetEyeX(); |
|
|
|
is_identical &= eye_y == info.GetEyeY(); |
|
|
|
is_identical &= eyebrow_type == info.GetEyebrowType(); |
|
|
|
is_identical &= eyebrow_color == info.GetEyebrowColor(); |
|
|
|
is_identical &= eyebrow_scale == info.GetEyebrowScale(); |
|
|
|
is_identical &= eyebrow_aspect == info.GetEyebrowAspect(); |
|
|
|
is_identical &= eyebrow_rotate == info.GetEyebrowRotate(); |
|
|
|
is_identical &= eyebrow_x == info.GetEyebrowX(); |
|
|
|
is_identical &= eyebrow_y == info.GetEyebrowY(); |
|
|
|
is_identical &= nose_type == info.GetNoseType(); |
|
|
|
is_identical &= nose_scale == info.GetNoseScale(); |
|
|
|
is_identical &= nose_y == info.GetNoseY(); |
|
|
|
is_identical &= mouth_type == info.GetMouthType(); |
|
|
|
is_identical &= mouth_color == info.GetMouthColor(); |
|
|
|
is_identical &= mouth_scale == info.GetMouthScale(); |
|
|
|
is_identical &= mouth_aspect == info.GetMouthAspect(); |
|
|
|
is_identical &= mouth_y == info.GetMouthY(); |
|
|
|
is_identical &= beard_color == info.GetBeardColor(); |
|
|
|
is_identical &= beard_type == info.GetBeardType(); |
|
|
|
is_identical &= mustache_type == info.GetMustacheType(); |
|
|
|
is_identical &= mustache_scale == info.GetMustacheScale(); |
|
|
|
is_identical &= mustache_y == info.GetMustacheY(); |
|
|
|
is_identical &= glasses_type == info.GetGlassType(); |
|
|
|
is_identical &= glasses_color == info.GetGlassColor(); |
|
|
|
is_identical &= glasses_scale == info.GetGlassScale(); |
|
|
|
is_identical &= glasses_y == info.GetGlassY(); |
|
|
|
is_identical &= mole_type == info.GetMoleType(); |
|
|
|
is_identical &= mole_scale == info.GetMoleScale(); |
|
|
|
is_identical &= mole_x == info.GetMoleX(); |
|
|
|
is_identical &= mole_y == info.GetMoleY(); |
|
|
|
return is_identical; |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace Service::Mii
|