Перейти к основному содержимому
The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.

Кастомные имена

CustomNameInfo​

Структура CustomNameInfo используется для создания кастомных имён и транспортировки данных локализации.

CustomNameInfo emptyInfo = new CustomNameInfo();
CustomNameInfo nameInfo = new CustomNameInfo("english text");

Можно добавить переводы на другие языки тоже:

nameInfo = new CustomNameInfo
{
[LanguageCode.Russian] = "русский текст",
[LanguageCode.Spanish] = "texto en español",
};
// или
nameInfo[LanguageCode.Russian] = "русский текст";
nameInfo[LanguageCode.Spanish] = "texto en español";

Вы также можете использовать свои коды языков:

nameInfo[(LanguageCode)123] = "日本語テキスト";
к сведению

Смотрите подробнее в Кастомные языки.


В отличие от словарей, и CustomName, и CustomNameInfo возвращают null, если они не содержат определённого LanguageCode:

string translation = nameInfo[(LanguageCode)123];
// возвращает null, если этот язык не определён
string display = translation ?? nameInfo.English;

CustomName​

Обычно, CustomName создаются автоматически, когда добавляешь имена и описания своим предметам, особенностям, способностям и др.:

RogueLibs.CreateCustomItem<MyCustomItem>()
.WithName(new CustomNameInfo("English name")
{
Russian = "русское название",
Spanish = "nombre español",
})
.WithDescription(new CustomNameInfo("English description")
{
Russian = "русское описание",
Spanish = "descripción en español",
});

Вы можете инициализировать их сами тоже, но тогда вам придётся указать название и тип CustomName самим:

CustomName name = RogueLibs.CreateCustomName("Name", "Type", new CustomNameInfo("Info"));

Если вы будете использовать второй способ, то вот список типов используемых в игре:

  • Item - названия предметов и специальных способностей;
  • Description - описания предметов, специальных способностей, особенностей, статусных эффектов и персонажей;
  • StatusEffect - названия особенностей и статусных эффектов;
  • Interface - кнопки интерфейса, метки и всякое такое;
  • Unlock - названия и описания мутаторов и Больших Квестов;
  • Object - названия объектов и типов чанков;
  • Agent - названия персонажей;
  • Dialogue - диалоги и фразы персонажей;
Pro-tip: Строки-константы типов имён

Используйте строки-константы в статическом классе NameTypes для избежания опечаток.

Использование​

Если хотите использовать ваши кастомные имена, используйте NameDB.GetName() или любые другие методы, использующие его:

string dialogue = gc.nameDB.GetName("CryForHelp", NameTypes.Dialogue);
Owner.SayDialogue("CryForHelp");

CustomName и CustomNameInfo также могут быть неявно преобразованы в CustomTooltip:

public class Recycler : CustomItem, IItemCombinable
{
[RLSetup]
public static void Setup()
{
recycleTooltip = RogueLibs.CreateCustomName("Recycle", NameTypes.Interface, new CustomNameInfo
{
English = "Recycle",
Russian = "Переработать",
});
}
private static CustomName recycleTooltip;

/* ... */
public CustomTooltip CombineTooltip(InvItem _) => recycleTooltip;
}
The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.