Книга: оглавление по страницам; лист прилива без лучей, пыль вверх
Оглавление показывает по 10 глав и листается «Назад/Далее»; «Оглавление» из главы возвращает на ту же страницу. На листе Fig. VII у луны убраны лучи (походила на солнце), некропыль поднимается просто вверх, со стрелками. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
6e1a6c0720
commit
8d1fe16cf2
+33
-11
@@ -143,7 +143,9 @@ namespace NecromancerTome
|
||||
[Preserve]
|
||||
public class XUiC_NecroTome : XUiController
|
||||
{
|
||||
const int MaxButtons = 10; // было 8; девятая - кровавый прилив (10.10), кнопки btnCh1..10 в windows.xml
|
||||
/// <summary>Кнопок глав на странице оглавления (btnCh1..10 в windows.xml). Глав будет много (указание 10.10) -
|
||||
/// оглавление листается теми же «Назад/Далее», что и главы.</summary>
|
||||
const int MaxButtons = 10;
|
||||
|
||||
XUiV_Label _title, _text, _page;
|
||||
XUiV_Texture _img;
|
||||
@@ -160,6 +162,9 @@ namespace NecromancerTome
|
||||
/// <summary>Глава по кнопке оглавления (только открытые главы, по порядку).</summary>
|
||||
readonly int[] _buttonChapter = new int[MaxButtons];
|
||||
int _chapter = -1, _pageIndex;
|
||||
/// <summary>Страница оглавления; «Оглавление» из главы возвращает на неё.</summary>
|
||||
int _tocPage;
|
||||
readonly List<int> _open = new List<int>();
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
@@ -173,7 +178,7 @@ namespace NecromancerTome
|
||||
_prev = GetChildById("btnPrev") as XUiC_SimpleButton;
|
||||
_next = GetChildById("btnNext") as XUiC_SimpleButton;
|
||||
_close = GetChildById("btnClose") as XUiC_SimpleButton;
|
||||
if (_toc != null) _toc.OnPressed += (_s, _m) => ShowToc();
|
||||
if (_toc != null) _toc.OnPressed += (_s, _m) => ShowToc(_tocPage);
|
||||
if (_prev != null) _prev.OnPressed += (_s, _m) => Turn(-1);
|
||||
if (_next != null) _next.OnPressed += (_s, _m) => Turn(1);
|
||||
if (_close != null) _close.OnPressed += (_s, _m) => xui.playerUI.windowManager.Close(NecroTomeBook.WindowGroup);
|
||||
@@ -191,25 +196,33 @@ namespace NecromancerTome
|
||||
public override void OnOpen()
|
||||
{
|
||||
base.OnOpen();
|
||||
ShowToc();
|
||||
ShowToc(0);
|
||||
}
|
||||
|
||||
void ShowToc()
|
||||
void ShowToc(int _p)
|
||||
{
|
||||
_chapter = -1;
|
||||
SetLabel(_title, Localization.Get("necroTomeToc"));
|
||||
SetLabel(_text, "");
|
||||
SetLabel(_page, "");
|
||||
SetMedia(null, null);
|
||||
EntityPlayerLocal player = xui.playerUI.entityPlayer;
|
||||
int b = 0;
|
||||
for (int c = 0; c < NecroTomeBook.Chapters.Count && b < MaxButtons; c++)
|
||||
// Открытые главы по порядку; на странице - MaxButtons из них.
|
||||
_open.Clear();
|
||||
for (int c = 0; c < NecroTomeBook.Chapters.Count; c++)
|
||||
{
|
||||
NecroTomeBook.Chapter ch = NecroTomeBook.Chapters[c];
|
||||
if (ch.Unlocked != null && !ch.Unlocked(player))
|
||||
if (ch.Unlocked == null || ch.Unlocked(player))
|
||||
{
|
||||
continue;
|
||||
_open.Add(c);
|
||||
}
|
||||
}
|
||||
int pages = Mathf.Max(1, (_open.Count + MaxButtons - 1) / MaxButtons);
|
||||
_tocPage = Mathf.Clamp(_p, 0, pages - 1);
|
||||
int b = 0;
|
||||
for (int i = _tocPage * MaxButtons; i < _open.Count && b < MaxButtons; i++)
|
||||
{
|
||||
int c = _open[i];
|
||||
NecroTomeBook.Chapter ch = NecroTomeBook.Chapters[c];
|
||||
_buttonChapter[b] = c;
|
||||
if (_chapterButtons[b] != null)
|
||||
{
|
||||
@@ -226,8 +239,13 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
SetVisible(_toc, false);
|
||||
SetVisible(_prev, false);
|
||||
SetVisible(_next, false);
|
||||
// Листать оглавление - только если страниц больше одной.
|
||||
bool many = pages > 1;
|
||||
SetLabel(_page, many ? (_tocPage + 1) + " / " + pages : "");
|
||||
SetVisible(_prev, many);
|
||||
SetVisible(_next, many);
|
||||
if (_prev != null) _prev.Enabled = _tocPage > 0;
|
||||
if (_next != null) _next.Enabled = _tocPage < pages - 1;
|
||||
}
|
||||
|
||||
void ShowChapter(int _c, int _p)
|
||||
@@ -316,6 +334,10 @@ namespace NecromancerTome
|
||||
{
|
||||
ShowChapter(_chapter, _pageIndex + _d);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowToc(_tocPage + _d);
|
||||
}
|
||||
}
|
||||
|
||||
static void SetLabel(XUiV_Label _l, string _s)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 650 KiB After Width: | Height: | Size: 655 KiB |
Reference in New Issue
Block a user