public void Load() { IsPaused = true; var snapshot = SaveUtils.Load(); if (snapshot != null) { _isLoading = true; Gold = snapshot.Gold; Lives = snapshot.Lives; UpdateGold(0); UpdateLives(0); if (IsWaveActive) { var wave = _waves[_currWave % _waves.Length]; wave.OnCreateEnemy -= HandleCreateEnemy; wave.OnWaveCleared -= HandleWaveCleared; wave.IsActive = false; WavePreview.UpdateWave(null, -1); foreach (Transform enemy in EnemiesParent) { Destroy(enemy.gameObject); } } _currWave = snapshot.Wave; ResetWaveStatus(); foreach (var tower in _activeTowers.Keys) { Destroy(tower); } foreach (var tower in snapshot.Towers) { RegisterTower(TowerBase.FromSnapshot(tower)); } Items.Clear(); Inventory.ResetItems(); foreach (var item in snapshot.Items) { AddItem(ItemBase.FromSnapshot(item)); } TowerDetails.UpdateTarget(null, false); EnemyDetails.UpdateTarget(null, false); _snapshot = snapshot; _isLoading = false; } IsPaused = false; }