Сборка под игру 3.3: хранилище, Пирамида, проверка версии
- Пирамида: StreamModeWrite/Read теперь глобальные перечисления (в 3.2 были внутри TileEntity). - Хранилище: Bag поверх ItemStackGrid (конструктор с местом хранения, Resize, ItemGrid), запись и чтение через PooledBinaryWriter/Reader. Формат хранилища 2; формат 1 из сейвов 3.2 читается. Незнакомый номер формата больше не считается «хранилища нет» - байты сохраняются. - Сфера на браслете: ModificationCount/GetModification/SetModification. - Непустой сундук: TEFeatureStorage.IsEmpty (ITileEntityLootable в 3.3 нет). - Поиск ножа в инвентаре через ItemGrid. - GameVersionGuard пускает только 3.3. Проверено в игре на V 3.3.0 b14: хранилище из сейва 3.2 (24 стопки) прочиталось, сохранилось и перечиталось; Пирамида включается; «Жертва», обыск трупа и мешки работают. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f4470b784f
commit
e8e21d5a58
@@ -130,17 +130,19 @@ namespace NecromancerTome
|
||||
|
||||
public static bool HasAnyKnife(EntityPlayerLocal player)
|
||||
{
|
||||
return ContainsKnife(player.inventory?.GetSlots()) || ContainsKnife(player.bag?.GetSlots());
|
||||
return ContainsKnife(player.inventory?.ItemGrid) || ContainsKnife(player.bag?.ItemGrid);
|
||||
}
|
||||
|
||||
private static bool ContainsKnife(ItemStack[] slots)
|
||||
// В 3.3 у пояса и рюкзака нет GetSlots: предметы лежат в ItemStackGrid.
|
||||
private static bool ContainsKnife(ItemStackGrid grid)
|
||||
{
|
||||
if (slots == null)
|
||||
if (grid == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
foreach (ItemStack stack in slots)
|
||||
for (int i = 0; i < grid.Length; i++)
|
||||
{
|
||||
ItemStack stack = grid.GetItem(i);
|
||||
if (stack == null || stack.IsEmpty())
|
||||
{
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user