save
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user