Files
novafarma/docs/sessions/SESSION_SUMMARY_FAZA6.md
2025-12-12 13:48:49 +01:00

303 lines
6.8 KiB
Markdown

# 💾 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!**