Перейти к основному содержимому
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.