303 lines
6.8 KiB
Markdown
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!**
|