/
RaskolnickOFF
/
3D
Обзор
Документация
Войти
/
RaskolnickOFF
/
3D
Код
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/source/core/SaveStorage.js
89 строк
2 KB
RaskolnickOFF
fixes
15 июн 2026, 06:05
15 июн 2026, 06:05
2c51574
Код
Авторство
О чём код?
// js/source/core/SaveStorage.js import SETTINGS from '../settings/Settings.js'; const DB_NAME = 'Survival25D'; const STORE_NAME = 'saves'; const VERSION = 1; export class SaveStorage { constructor() { this.db = null; } async init() { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, VERSION); request.onupgradeneeded = (event) => { const db = event.target.result; if (!db.objectStoreNames.contains(STORE_NAME)) { db.createObjectStore(STORE_NAME, { keyPath: 'id' }); } }; request.onsuccess = (event) => { this.db = event.target.result; resolve(); }; request.onerror = (event) => { reject(event.target.error); }; }); } async save(id, data) { if (!this.db) await this.init(); return new Promise((resolve, reject) => { const transaction = this.db.transaction([STORE_NAME], 'readwrite'); const store = transaction.objectStore(STORE_NAME); const record = { id: id, timestamp: Date.now(), version: VERSION, data: data }; const request = store.put(record); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } async load(id) { if (!this.db) await this.init(); return new Promise((resolve, reject) => { const transaction = this.db.transaction([STORE_NAME], 'readonly'); const store = transaction.objectStore(STORE_NAME); const request = store.get(id); request.onsuccess = () => { if (request.result) { resolve(request.result.data); } else { resolve(null); } }; request.onerror = () => reject(request.error); }); } async delete(id) { if (!this.db) await this.init(); return new Promise((resolve, reject) => { const transaction = this.db.transaction([STORE_NAME], 'readwrite'); const store = transaction.objectStore(STORE_NAME); const request = store.delete(id); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } }