shrani
This commit is contained in:
302
docs/sessions/SESSION_SUMMARY_FAZA6.md
Normal file
302
docs/sessions/SESSION_SUMMARY_FAZA6.md
Normal file
@@ -0,0 +1,302 @@
|
||||
# 💾 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!**
|
||||
Reference in New Issue
Block a user