- Ядро (Bogatyri.Core): контракты модулей, EventBus, GameServices, SaveRegistry - Модули: Экономика, Поселение, Армия, Глобальный мир, Боевая система, Сохранения (каждый — отдельный asmdef, видит только ядро) - App/GameModules: регистрация модулей и связь с GameProgress/Казармами - Сохранения v2 по секциям модулей, перенос старого save.json и походов из progress.json - Сброс сохранений: ISaveSystem.ResetAll, ResetState у модулей, меню Tools - EditMode-тесты модулей, документы по каждому модулю с журналом изменений Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.7 KiB
C#
44 lines
1.7 KiB
C#
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
// Tools -> Сбросить сохранения. Для разработчиков: новая игра одной кнопкой.
|
|
// - в Play Mode -- тот же сброс, что кнопка в Настройках (все модули + прогресс);
|
|
// - вне Play Mode -- просто удаляет файлы save.json и progress.json.
|
|
// Документ: Docs/Modules/Save.md
|
|
public static class SaveResetMenu
|
|
{
|
|
static readonly string[] SaveFiles = { "save.json", "progress.json" };
|
|
|
|
[MenuItem("Tools/Сбросить сохранения")]
|
|
static void ResetSaves()
|
|
{
|
|
if (!EditorUtility.DisplayDialog("Сбросить сохранения?",
|
|
"Ресурсы, здания, Ратуша, войска, походы, задания и почта начнутся заново.\nЭто нельзя отменить.",
|
|
"Сбросить", "Отмена"))
|
|
return;
|
|
|
|
if (Application.isPlaying)
|
|
{
|
|
GameProgress.Instance.ResetAll();
|
|
return;
|
|
}
|
|
|
|
int deleted = 0;
|
|
foreach (var name in SaveFiles)
|
|
{
|
|
string path = Path.Combine(Application.persistentDataPath, name);
|
|
if (!File.Exists(path)) continue;
|
|
File.Delete(path);
|
|
deleted++;
|
|
}
|
|
Debug.Log($"[СОХРАНЕНИЕ] Удалено файлов сохранения: {deleted} ({Application.persistentDataPath}). Следующий запуск -- новая игра.");
|
|
}
|
|
|
|
[MenuItem("Tools/Открыть папку сохранений")]
|
|
static void OpenSaveFolder()
|
|
{
|
|
EditorUtility.RevealInFinder(Application.persistentDataPath);
|
|
}
|
|
}
|