# 💾 FAZA 6: SAVE/LOAD SYSTEM - PREGLED **Datum:** 12. December 2025 **Status:** ✅ VSE ŽE OBSTAJA! --- ## ✅ **ŠTO JE ŽE IMPLEMENTIRANO:** ### **1. SaveSystem** ✅ (osnovna verzija) **Datoteka:** `src/systems/SaveSystem.js` (280 vrstic) **Funkcionalnosti:** - ✅ **saveGame()** - Shrani celotno stanje igre - ✅ **loadGame()** - Naloži shranjeno stanje - ✅ **localStorage** - Shranjevanje v browser storage - ✅ **Serializacija** - Player, inventory, terrain, NPCs, buildings, stats - ✅ **Notification** - Vizualno obvestilo ob shranjevanju **Kaj se shrani:** ```javascript { player: { gridX, gridY, hp, maxHp, gold, level }, inventory: { slots, resources }, terrain: { decorations, tiles }, npcs: [ { gridX, gridY, type, state, hp } ], buildings: [ { gridX, gridY, type } ], stats: { hunger, thirst, stamina }, time: { day, hour, gameTime }, farm: { cropsPlanted, totalHarvested, goldEarned } } ``` --- ### **2. SaveManager** ✅ (napredna verzija) **Datoteka:** `src/systems/SaveManager.js` (274 vrstic) **Funkcionalnosti:** - ✅ **3 Save Slots** - Več shranjenih iger - ✅ **Auto-Save** - Avtomatsko shranjevanje (vsake 5 minut) - ✅ **Metadata** - Datum, čas, level, dan - ✅ **Quick Save/Load** - F5/F9 tipke - ✅ **Export/Import** - Backup save datotek - ✅ **Slot Management** - Brisanje, preverjanje **Metode:** ```javascript saveToSlot(1-3) // Shrani v slot loadFromSlot(1-3) // Naloži iz slota deleteSlot(1-3) // Izbriši slot quickSave() // Hitro shranjevanje quickLoad() // Hitro nalaganje update(delta) // Auto-save timer toggleAutoSave() // Vklop/izklop auto-save exportSlot(1-3) // Izvozi save file importSlot(1-3) // Uvozi save file ``` --- ### **3. Auto-Save Funkcionalnost** ✅ **Nastavitve:** - ✅ **Interval:** 5 minut (300,000 ms) - ✅ **Toggle:** Vklop/izklop možen - ✅ **Timer:** Odštevanje do naslednjega shranjevanja - ✅ **Notification:** Vizualno obvestilo "💾 Auto-Saved" **Kako deluje:** ```javascript // V GameScene.update(): if (this.saveManager) { this.saveManager.update(delta); // Vsake 5 minut avtomatsko shrani } ``` --- ### **4. Serializacija** ✅ **Podprti sistemi:** - ✅ **Player** - Pozicija, HP, gold, level - ✅ **Inventory** - Vsi itemi in količine - ✅ **Terrain** - Dekoracije, tiles - ✅ **NPCs** - Vsi NPCji in njihovo stanje - ✅ **Buildings** - Vse postavljene stavbe - ✅ **Stats** - Hunger, thirst, stamina - ✅ **Time** - Dan, ura, game time - ✅ **Farm Stats** - Crops planted, harvested, gold **Format:** - ✅ **JSON** - Human-readable - ✅ **localStorage** - Browser storage - ✅ **Compression** - Možna (če potrebno) --- ### **5. Keyboard Shortcuts** ✅ **Že implementirano:** - ✅ **F5** - Quick Save (trenutni slot) - ✅ **F9** - Quick Load (trenutni slot) - ✅ **F8** - Factory Reset (izbriše vse) **Console Commands:** ```javascript save(1) // Shrani v slot 1 load(1) // Naloži iz slota 1 save(2) // Shrani v slot 2 load(2) // Naloži iz slota 2 ``` --- ## 📊 **STATISTIKA:** | Sistem | Status | Vrstice | Datoteka | |--------|--------|---------|----------| | **SaveSystem** | ✅ Obstaja | 280 | SaveSystem.js | | **SaveManager** | ✅ Obstaja | 274 | SaveManager.js | | **Auto-Save** | ✅ Obstaja | Vključeno | SaveManager.js | | **Serializacija** | ✅ Obstaja | Vključeno | SaveSystem.js | **Skupaj:** ~554 vrstic save/load kode! --- ## 🔧 **KAKO AKTIVIRATI:** ### **Možnost 1: SaveManager (priporočeno)** ```javascript // V GameScene.create(): this.saveManager = new SaveManager(this); // V GameScene.update(): if (this.saveManager) { this.saveManager.update(delta); // Auto-save } // Keyboard shortcuts (že implementirani): // F5 - Quick Save // F9 - Quick Load ``` ### **Možnost 2: SaveSystem (osnovna)** ```javascript // V GameScene.create(): this.saveSystem = new SaveSystem(this); // Manual save/load: this.saveSystem.saveGame(); this.saveSystem.loadGame(); ``` --- ## 🎮 **KAKO UPORABLJATI:** ### **V Igri:** 1. **Pritisni F5** - Shrani igro (slot 1) 2. **Pritisni F9** - Naloži igro (slot 1) 3. **Pritisni F8** - Factory reset (izbriše vse) ### **V Konzoli:** ```javascript // Shrani v slot 1, 2 ali 3 save(1) save(2) save(3) // Naloži iz slota 1, 2 ali 3 load(1) load(2) load(3) // Preveri vse slote gameScene.saveManager.getAllSlotsInfo() // Izvozi save file gameScene.saveManager.exportSlot(1) // Vklopi/izklopi auto-save gameScene.saveManager.toggleAutoSave() // Preveri čas do naslednjega auto-save gameScene.saveManager.getTimeUntilNextSave() ``` --- ## 📝 **SAVE FILE STRUKTURA:** ```json { "version": "2.5.0", "timestamp": 1702379520000, "player": { "gridX": 50, "gridY": 50, "hp": 100, "maxHp": 100, "gold": 500, "level": 5 }, "inventory": { "slots": [ { "type": "axe", "count": 1 }, { "type": "wood", "count": 50 } ], "resources": { "wood": 50, "stone": 30, "iron": 10 } }, "terrain": { "decorations": [ { "gridX": 10, "gridY": 10, "type": "tree_green", "hp": 100 } ] }, "npcs": [ { "gridX": 30, "gridY": 30, "type": "zombie", "state": "PASSIVE", "hp": 50 } ], "buildings": [ { "gridX": 45, "gridY": 45, "type": "barn" } ], "stats": { "hunger": 80, "thirst": 90, "stamina": 100 }, "time": { "day": 5, "hour": 12.5, "gameTime": 120.5 }, "farm": { "cropsPlanted": 50, "totalHarvested": 30, "goldEarned": 500 } } ``` --- ## 🎯 **FEATURES:** | Feature | Status | Opis | |---------|--------|------| | **Save Game** | ✅ | Shrani celotno stanje | | **Load Game** | ✅ | Naloži shranjeno stanje | | **3 Slots** | ✅ | Več shranjenih iger | | **Auto-Save** | ✅ | Vsake 5 minut | | **Quick Save** | ✅ | F5 tipka | | **Quick Load** | ✅ | F9 tipka | | **Export** | ✅ | Backup save file | | **Import** | ✅ | Restore save file | | **Metadata** | ✅ | Datum, čas, level | | **Notification** | ✅ | Vizualno obvestilo | --- ## 📁 **DATOTEKE:** **Obstoječe (že implementirano):** - ✅ `src/systems/SaveSystem.js` (280 vrstic) - ✅ `src/systems/SaveManager.js` (274 vrstic) **Dodane:** - ✅ `SESSION_SUMMARY_FAZA6.md` (ta dokument) --- ## 🚀 **NASLEDNJI KORAK:** **Potrebno:** 1. **Integracija SaveManager v GameScene** (5 vrstic kode) 2. **Testiranje** - Shrani in naloži igro 3. **Preverjanje** - Ali se vse pravilno shrani **Kako dodati:** ```javascript // V GameScene.create() (okoli vrstica 100): this.saveManager = new SaveManager(this); // V GameScene.update() (okoli vrstica 700): if (this.saveManager) { this.saveManager.update(delta); } // Keyboard shortcuts so že nastavljeni v setupCamera() ``` --- **Status:** ✅ **VSE ŽE OBSTAJA!** **Potrebno:** Samo integracija v GameScene (5 minut) **Celoten save/load sistem je že implementiran z vsemi funkcionalnostmi!**