[VFS] Add set_* functions (eg. set_display_name) to XContentMetadata
This commit is contained in:
parent
20c612cd42
commit
5c23c4043c
|
@ -10,6 +10,7 @@
|
|||
#ifndef XENIA_VFS_DEVICES_STFS_CONTAINER_DEVICE_H_
|
||||
#define XENIA_VFS_DEVICES_STFS_CONTAINER_DEVICE_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
@ -202,15 +203,15 @@ struct XContentMetadata {
|
|||
uint8_t title_thumbnail[0x3D00];
|
||||
wchar_t description_ex[3][0x80];
|
||||
|
||||
std::wstring get_display_name(uint32_t locale) {
|
||||
uint32_t locale_id = locale;
|
||||
locale_id--;
|
||||
std::wstring get_display_name(XLanguage lang) {
|
||||
uint32_t lang_id = (uint32_t)lang;
|
||||
lang_id--;
|
||||
|
||||
wchar_t* str = 0;
|
||||
if (locale_id >= 0 && locale_id < 9) {
|
||||
str = display_name[locale_id];
|
||||
} else if (locale_id >= 9 && locale_id < 12 && metadata_version >= 2) {
|
||||
str = display_name_ex[locale_id - 9];
|
||||
if (lang_id >= 0 && lang_id < 9) {
|
||||
str = display_name[lang_id];
|
||||
} else if (lang_id >= 9 && lang_id < 12 && metadata_version >= 2) {
|
||||
str = display_name_ex[lang_id - 9];
|
||||
}
|
||||
if (!str) {
|
||||
return L"";
|
||||
|
@ -222,15 +223,15 @@ struct XContentMetadata {
|
|||
|
||||
return std::wstring(wstr.data());
|
||||
}
|
||||
std::wstring get_description(uint32_t locale) {
|
||||
uint32_t locale_id = locale;
|
||||
locale_id--;
|
||||
std::wstring get_description(XLanguage lang) {
|
||||
uint32_t lang_id = (uint32_t)lang;
|
||||
lang_id--;
|
||||
|
||||
wchar_t* str = 0;
|
||||
if (locale_id >= 0 && locale_id < 9) {
|
||||
str = display_name[locale_id];
|
||||
} else if (locale_id >= 9 && locale_id < 12 && metadata_version >= 2) {
|
||||
str = display_name_ex[locale_id - 9];
|
||||
if (lang_id >= 0 && lang_id < 9) {
|
||||
str = display_name[lang_id];
|
||||
} else if (lang_id >= 9 && lang_id < 12 && metadata_version >= 2) {
|
||||
str = display_name_ex[lang_id - 9];
|
||||
}
|
||||
if (!str) {
|
||||
return L"";
|
||||
|
@ -256,6 +257,53 @@ struct XContentMetadata {
|
|||
|
||||
return std::wstring(wstr.data());
|
||||
}
|
||||
|
||||
bool set_display_name(const std::wstring& value, XLanguage lang) {
|
||||
uint32_t lang_id = (uint32_t)lang;
|
||||
lang_id--;
|
||||
|
||||
wchar_t* str = 0;
|
||||
if (lang_id >= 0 && lang_id < 9) {
|
||||
str = display_name[lang_id];
|
||||
} else if (lang_id >= 9 && lang_id < 12 && metadata_version >= 2) {
|
||||
str = display_name_ex[lang_id - 9];
|
||||
}
|
||||
if (!str) {
|
||||
return false;
|
||||
}
|
||||
|
||||
xe::copy_and_swap<wchar_t>(str, value.c_str(),
|
||||
std::min(value.length(), (size_t)128));
|
||||
return true;
|
||||
}
|
||||
bool set_description(const std::wstring& value, XLanguage lang) {
|
||||
uint32_t lang_id = (uint32_t)lang;
|
||||
lang_id--;
|
||||
|
||||
wchar_t* str = 0;
|
||||
if (lang_id >= 0 && lang_id < 9) {
|
||||
str = description[lang_id];
|
||||
} else if (lang_id >= 9 && lang_id < 12 && metadata_version >= 2) {
|
||||
str = description_ex[lang_id - 9];
|
||||
}
|
||||
if (!str) {
|
||||
return false;
|
||||
}
|
||||
|
||||
xe::copy_and_swap<wchar_t>(str, value.c_str(),
|
||||
std::min(value.length(), (size_t)128));
|
||||
return true;
|
||||
}
|
||||
bool set_publisher(const std::wstring& value) {
|
||||
xe::copy_and_swap<wchar_t>(publisher, value.c_str(),
|
||||
std::min(value.length(), (size_t)128));
|
||||
return true;
|
||||
}
|
||||
bool set_title_name(const std::wstring& value) {
|
||||
xe::copy_and_swap<wchar_t>(title_name, value.c_str(),
|
||||
std::min(value.length(), (size_t)128));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
static_assert_size(XContentMetadata, 0x93D6);
|
||||
#pragma pack(pop)
|
||||
|
|
Loading…
Reference in New Issue