* init * fax translate * translate * translate cargo panel * road map translate * Fix cargo panel | fix bot craft translate * fix, steal objectives translate * do not break my not localized fax! * fix * radio guide translate * Better DefaultRules * Translate Criminal Records * Space luw fully translate excluding CrimeList(need to rework) * Some Guidebook translate * Перевод глоссария, некоторые термины были переписанны под РУ комьюнити игры, некоторые к сожелению остались прежними * Fix * fix, translate * Обновил структуру SpeakOnUIClosed, пофиксил перевод автоматов * update and fix * fully translate * fix * not fail but warn * fix * fix2 * фикс уже переведённого дерьма от корвахов * Добавил термин подов в глоссарий * roles translate fix * Сикей в глоссарий * Delete Resources/Locale/ru-RU/_sunrise/info/character-info.ftl * remove cluster from pool * new translation * fully translate borgs * some fixes * Mr.Chang moment * upd * upd * upd * hotfix * big fix * fix some hardcode lang * oh no shitcode language * some translation * some actions| admin commands translate start * some new translation * fully translate commands | figurines | chat-repo * upd * second upd * upd * start translating items * some fixes * translate wackpack Из-за игры слов, я не смог нормально интерпритировать это дерьмо, так что пусть будет так, да теряется смысл и смешинка, но извините, я не смог как-то придумать игру слов * translate * debug translate * upd * Актуализация всего перевода * fix * fix * upd * some fixes | guns to his folders * upd * upd * upd * upd * upd * upd * Перевод меток атмоса * Последние коррективы * fix * some hardcode localization fix * fix * some fixes * stats entry fully translate * upd * some fixes * translate server side stats entry * fix * fix * fix2 * fix * upd * upd * fix * holly shit * fix * totaly feed * upd * upd * fix * upd * init * upd * upd * access in prototypes * Sunrise comments on code * my bad * я даун
74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
using System.Linq;
|
|
using Content.Client._Sunrise.TTS;
|
|
using Content.Shared._Sunrise.TTS;
|
|
using Content.Shared.Preferences;
|
|
|
|
namespace Content.Client.Lobby.UI;
|
|
|
|
public sealed partial class HumanoidProfileEditor
|
|
{
|
|
private List<TTSVoicePrototype> _voiceList = new();
|
|
|
|
private void InitializeVoice()
|
|
{
|
|
_voiceList = _prototypeManager
|
|
.EnumeratePrototypes<TTSVoicePrototype>()
|
|
.Where(o => o.RoundStart)
|
|
.OrderBy(o => Loc.GetString(o.Name))
|
|
.ToList();
|
|
|
|
VoiceButton.OnItemSelected += args =>
|
|
{
|
|
VoiceButton.SelectId(args.Id);
|
|
SetVoice(_voiceList[args.Id].ID);
|
|
};
|
|
|
|
VoicePlayButton.OnPressed += _ => PlayPreviewTts();
|
|
}
|
|
|
|
private void UpdateTtsVoicesControls()
|
|
{
|
|
if (Profile is null)
|
|
return;
|
|
|
|
VoiceButton.Clear();
|
|
|
|
var firstVoiceChoiceId = 1;
|
|
for (var i = 0; i < _voiceList.Count; i++)
|
|
{
|
|
var voice = _voiceList[i];
|
|
if (!HumanoidCharacterProfile.CanHaveVoice(voice, Profile.Sex))
|
|
continue;
|
|
|
|
var name = Loc.GetString(voice.Name);
|
|
VoiceButton.AddItem(name, i);
|
|
|
|
if (firstVoiceChoiceId == 1)
|
|
firstVoiceChoiceId = i;
|
|
|
|
if (_sponsorsMgr is null)
|
|
continue;
|
|
if (!voice.SponsorOnly || _sponsorsMgr == null ||
|
|
_sponsorsMgr.GetClientPrototypes().Contains(voice.ID))
|
|
continue;
|
|
|
|
VoiceButton.SetItemDisabled(VoiceButton.GetIdx(i), true);
|
|
VoiceButton.SetItemText(VoiceButton.GetIdx(i), Loc.GetString("sponsor-marking", ("name", name))); // Sunrise-edit
|
|
}
|
|
|
|
var voiceChoiceId = _voiceList.FindIndex(x => x.ID == Profile.Voice);
|
|
if (!VoiceButton.TrySelectId(voiceChoiceId) &&
|
|
VoiceButton.TrySelectId(firstVoiceChoiceId))
|
|
{
|
|
SetVoice(_voiceList[firstVoiceChoiceId].ID);
|
|
}
|
|
}
|
|
|
|
private void PlayPreviewTts()
|
|
{
|
|
if (Profile is null)
|
|
return;
|
|
|
|
_entManager.System<TTSSystem>().RequestPreviewTts(Profile.Voice);
|
|
}
|
|
}
|