This commit is contained in:
Oscar
2025-06-29 12:39:23 +03:00
parent eaeb0c45ac
commit db31f362d1
7 changed files with 580 additions and 2 deletions

View File

@@ -13,6 +13,10 @@ public sealed partial class Dedugan : Component
// Автоматическая стрельба
private bool _isShooting = false;
private TimeSince _lastShootTime = 0f;
// Периодическое сохранение
private TimeSince _lastAutoSave = 0f;
private const float AUTO_SAVE_INTERVAL = 60f; // Сохраняем каждые 60 секунд
void InventoryStart()
{
@@ -26,6 +30,25 @@ public sealed partial class Dedugan : Component
Inventory.OnUnEquipped += OnItemUnEquipped;
Inventory.OnItemAdded += OnItemAdded;
Inventory.OnItemRemoved += OnItemRemoved;
// Загружаем инвентарь из сохранения при старте
LoadInventoryFromSave();
}
/// <summary>
/// Загружает инвентарь из сохранения
/// </summary>
private void LoadInventoryFromSave()
{
if ( Inventory.HasSaveFile() )
{
Log.Info( "Загружаем инвентарь из сохранения..." );
Inventory.LoadFromSave();
}
else
{
Log.Info( "Файл сохранения инвентаря не найден, начинаем с пустым инвентарем" );
}
}
private void OnItemEquipped( InventoryItem item )
@@ -159,6 +182,17 @@ public sealed partial class Dedugan : Component
{
TryReloadWeapon();
}
// Периодическое автоматическое сохранение
if ( _lastAutoSave > AUTO_SAVE_INTERVAL )
{
if ( Inventory != null )
{
Log.Info( "Периодическое автоматическое сохранение инвентаря..." );
Sasalka.InventorySaveSystem.SaveInventory( Inventory );
}
_lastAutoSave = 0f;
}
}
/// <summary>

View File

@@ -116,6 +116,18 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
DrawDebugGizmos();
}
/// <summary>
/// Сохраняет инвентарь при выходе из игры
/// </summary>
public void SaveInventoryOnExit()
{
if ( Network.IsOwner && Inventory != null )
{
Log.Info( "Сохраняем инвентарь при выходе из игры..." );
Sasalka.InventorySaveSystem.SaveInventory( Inventory );
}
}
/// <summary>
/// Реализация интерфейса IUseContext
/// Возвращает список используемых предметов
@@ -189,4 +201,10 @@ public sealed partial class Dedugan : Component, IUseContext, Component.INetwork
_bodyRotationDirty = true; // Помечаем, что тело повернулось
}
}
protected override void OnDestroy()
{
// Сохраняем инвентарь при уничтожении объекта (закрытие игры)
SaveInventoryOnExit();
}
}