优化+清理
This commit is contained in:
@@ -49,9 +49,7 @@ namespace UI
|
||||
{
|
||||
"Other",
|
||||
"Subtitle",
|
||||
"Time",
|
||||
"LiangSiCheng",
|
||||
"LinHuiYin"
|
||||
"Time"
|
||||
};
|
||||
|
||||
public override void StartDialog(DialogFormContext context)
|
||||
@@ -130,6 +128,13 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (!HasSpeakerPortrait(_context.SpeakerId))
|
||||
{
|
||||
ClearSpeakerState();
|
||||
ApplySpeakerLayout(false, false, true);
|
||||
return;
|
||||
}
|
||||
|
||||
bool isRightSpeaker = context.Direction > 0;
|
||||
if (isRightSpeaker)
|
||||
{
|
||||
@@ -381,13 +386,21 @@ namespace UI
|
||||
int requestVersion = isRightSpeaker ? ++_rightPortraitRequestVersion : ++_leftPortraitRequestVersion;
|
||||
if (string.IsNullOrWhiteSpace(speakerId) || NonPortraitSpeakerIds.Contains(speakerId))
|
||||
{
|
||||
portraitImage.sprite = null;
|
||||
return;
|
||||
}
|
||||
|
||||
int portraitCount = ResolveAvailablePortraitCount(speakerId);
|
||||
if (portraitCount <= 0)
|
||||
{
|
||||
portraitImage.sprite = null;
|
||||
return;
|
||||
}
|
||||
|
||||
string portraitAssetName = $"Characters/{speakerId}-{ResolvePortraitIndex(speakerId, lineId, portraitCount)}.png";
|
||||
if (GameEntry.SpriteCache == null)
|
||||
{
|
||||
portraitImage.sprite = null;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -400,10 +413,7 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (sprite != null)
|
||||
{
|
||||
_rightImage.sprite = sprite;
|
||||
}
|
||||
_rightImage.sprite = sprite;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -412,10 +422,7 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (sprite != null)
|
||||
{
|
||||
_leftImage.sprite = sprite;
|
||||
}
|
||||
_leftImage.sprite = sprite;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -449,6 +456,11 @@ namespace UI
|
||||
return GameEntry.Dialog.GetSpeakerPortraitCount(speakerId);
|
||||
}
|
||||
|
||||
private static bool HasSpeakerPortrait(string speakerId)
|
||||
{
|
||||
return ResolveAvailablePortraitCount(speakerId) > 0;
|
||||
}
|
||||
|
||||
private static bool IsHumanSpeaker(string speakerId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(speakerId))
|
||||
|
||||
@@ -46,4 +46,4 @@ namespace UI
|
||||
GameEntry.Event.Fire(this, MenuExitEventArgs.Create());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace UI
|
||||
{
|
||||
public class SettingForm : UGuiForm
|
||||
{
|
||||
private static readonly string[] NavigateButtonNames = { "SoundButton", "GameButton", "ScreenButton" };
|
||||
|
||||
[SerializeField] private Transform _navigate;
|
||||
|
||||
[SerializeField] private Image[] _navigateButtonImages;
|
||||
@@ -95,20 +97,58 @@ namespace UI
|
||||
|
||||
public void OnNavigateButtonClick(int index)
|
||||
{
|
||||
RefreshNavigateButtonImages();
|
||||
|
||||
if (_navigateButtonImages == null || _navigateButtonImages.Length == 0)
|
||||
{
|
||||
Log.Error("Navigate button images are invalid.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (index < 0 || index >= _navigateButtonImages.Length)
|
||||
{
|
||||
Log.Error("NavigateButtonClick index is out of range.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_navigateButtonImages[0] == null)
|
||||
_navigateButtonImages[0] = _navigate.Find("SoundButton")?.GetComponent<Image>();
|
||||
|
||||
for (int i = 0; i < _navigateButtonImages.Length; i++)
|
||||
{
|
||||
if (_navigateButtonImages[i] == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_navigateButtonImages[i].enabled = i == index;
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshNavigateButtonImages()
|
||||
{
|
||||
if (_navigate == null)
|
||||
{
|
||||
Log.Error("Navigate transform is invalid.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_navigateButtonImages == null || _navigateButtonImages.Length != NavigateButtonNames.Length)
|
||||
{
|
||||
_navigateButtonImages = new Image[NavigateButtonNames.Length];
|
||||
}
|
||||
|
||||
for (int i = 0; i < NavigateButtonNames.Length; i++)
|
||||
{
|
||||
var button = _navigate.Find(NavigateButtonNames[i]);
|
||||
if (button == null)
|
||||
{
|
||||
Log.Error($"Can not find navigate button '{NavigateButtonNames[i]}'.");
|
||||
_navigateButtonImages[i] = null;
|
||||
continue;
|
||||
}
|
||||
|
||||
_navigateButtonImages[i] = button.GetComponent<Image>();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnReturnButtonClick()
|
||||
{
|
||||
var dialogParams = new DialogParams
|
||||
|
||||
Reference in New Issue
Block a user