Files
novafarma/SESSION_SUMMARY_FAZA6.md
2025-12-12 10:17:21 +01:00

6.8 KiB

💾 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:

{
    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:

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:

// 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:

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)

// 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)

// 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:

// 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:

{
  "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:

// 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!