Урна: черепа не пропадают при Shift+клике стопкой (#82); рецепты из кузни на верстак, не больше 8 компонентов, долгие ÷4 (#83)
Проверка «Содержимого» урны - в следующем кадре: игра звала onModified посреди перекладки, лишние черепа возвращались в исходную ячейку рюкзака и затирались пустотой. Кузня делает только из вплавленного - урны логиста, лутера, старателя и гео-оссуарий на верстаке (на ломе). Зомбособака 9 -> 7 компонентов (окно показывает 8). Время долгих вещей вчетверо меньше. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b5a4ec4a2c
commit
3cd0e3d6cb
@@ -1,3 +1,4 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NecromancerTome
|
||||
@@ -42,7 +43,7 @@ namespace NecromancerTome
|
||||
_bag.SetSlot(1, _u.Sample.Clone());
|
||||
}
|
||||
XUiC_BagStorageWindowGroup.Open(ui.xui, _p, _bag, LootContainer.GetLootContainer(LootTemplate),
|
||||
Localization.Get("necroCinerariumTrunk"), Check, () =>
|
||||
Localization.Get("necroCinerariumTrunk"), CheckLater, () =>
|
||||
{
|
||||
Check();
|
||||
_urn = null;
|
||||
@@ -52,6 +53,28 @@ namespace NecromancerTome
|
||||
Debug.Log("[NecromancerTome] Cinerarium: «Содержимое» урны " + _u.ToWorldPos() + " открыто, череп " + (_u.HasSkull ? "есть" : "нет"));
|
||||
}
|
||||
|
||||
static bool _checkQueued;
|
||||
|
||||
/// <summary>Изменение в ячейках - проверка в следующем кадре. Игра зовёт onModified посреди своей перекладки: при Shift+клике
|
||||
/// стопки черепов из рюкзака она сначала кладёт стопку в урну (тут срабатывал Check и возвращал лишние черепа в ту же ячейку
|
||||
/// рюкзака), а потом пишет в исходную ячейку пустоту - и вернувшиеся черепа пропадали (стрим 26.10: «черепа исчезли из сумки»).</summary>
|
||||
static void CheckLater()
|
||||
{
|
||||
if (_checkQueued)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_checkQueued = true;
|
||||
GameManager.Instance.StartCoroutine(CheckNextFrame());
|
||||
}
|
||||
|
||||
static IEnumerator CheckNextFrame()
|
||||
{
|
||||
yield return null;
|
||||
_checkQueued = false;
|
||||
Check();
|
||||
}
|
||||
|
||||
/// <summary>Оставить в ячейке один череп, остальное - игроку; отметить в урне. У рабочего - запомнить образец; череп во
|
||||
/// второй ячейке - не образец, переложить в первую (или вернуть).</summary>
|
||||
static void Check()
|
||||
|
||||
Reference in New Issue
Block a user