Files
novafarma/docs/TODO_JAN_9_2026_IMPLEMENTATION.md
2026-01-20 01:05:17 +01:00

375 lines
8.0 KiB
Markdown

# 🎯 TODO ZA JUTRI - JAN 9, 2026
## Implementacija Faza 2 Asset v Igro
**Status:** FAZA 2 - 100% ASSETS COMPLETE! ✅
**Next:** Dodati sisteme v igro za uporabo assetov
---
## 🚀 PRIORITY SISTEMI ZA IMPLEMENTACIJO
### **1. NPC SISTEM (HIGHEST PRIORITY!)**
**Kar imaš:**
- 4 NPCji s polnimi 8-directional animations (32 sprites total)
- Guard Captain Luka, Innkeeper Janez, Store Owner Novak, Elder Marta
- Vsak ima: portrait, idle (left/right/back), walk (left/right/back), custom action
**Kar rabiš dodati v kodo:**
#### **A. NPC Movement System:**
```javascript
// src/entities/NPC.js
class NPC extends Phaser.GameObjects.Sprite {
constructor(scene, x, y, npcData) {
// npcData = { name, spriteKey, dialogues, schedule }
super(scene, x, y, npcData.spriteKey);
this.npcData = npcData;
this.direction = 'down'; // front, left, right, back
this.state = 'idle'; // idle, walk, action
this.loadAnimations();
this.setupBehavior();
}
loadAnimations() {
// Naloži vse 8 animacij za ta NPC
// idle_left, idle_right, idle_back, idle_front
// walk_left, walk_right, walk_back, walk_front
// action (custom za vsakega)
}
setupBehavior() {
// Integracija z NPCIdleBehavior.js (že obstaja!)
// Random idle animations every 3-8 seconds
}
}
```
#### **B. NPC Dialogue System:**
```javascript
// src/ui/DialogueBox.js
class DialogueBox {
showDialogue(npcName, text, portrait) {
// Uporabi NPC portrait sprite
// Display text with typewriter effect
// Allow player choices if quest-related
}
}
```
#### **C. NPC Schedule System (Optional for later):**
```javascript
// NPCs move around town based on time
// Luka - patrols streets
// Janez - stays at inn, serves during evening
// Novak - at store during day
// Marta - sits at square, walks slowly
```
---
### **2. BUILDING RESTORATION SYSTEM**
**Kar imaš:**
- 50 building sprites (40 main + 10 decorations)
- Progression states: broken → repaired
- Windows, doors, signs, decorations
**Kar rabiš dodati v kodo:**
#### **A. Building State Manager:**
```javascript
// src/systems/BuildingStateManager.js
class BuildingStateManager {
constructor(scene) {
this.buildings = new Map();
// Each building has: id, currentStage, maxStages
}
upgradeBuilding(buildingId) {
const building = this.buildings.get(buildingId);
if (building.currentStage < building.maxStages) {
building.currentStage++;
this.updateBuildingSprite(buildingId);
return true;
}
return false;
}
updateBuildingSprite(buildingId) {
// Switch sprite to next stage
// Update collision if needed
}
}
```
#### **B. Restoration Quest System:**
```javascript
// Player collects resources → brings to building
// Building upgrades visually
// Town looks better as player progresses
```
---
### **3. PROP INTERACTION SYSTEM**
**Kar imaš:**
- 67 infrastructure props (wells, benches, signs, tools, etc.)
- Interactive elements (bulletin board, tool rack, water well)
**Kar rabiš dodati v kodo:**
#### **A. Interactive Props:**
```javascript
// src/entities/InteractiveProp.js
class InteractiveProp extends Phaser.GameObjects.Sprite {
constructor(scene, x, y, propType) {
super(scene, x, y, propType);
this.interactionType = this.getInteractionType(propType);
}
interact(player) {
switch(this.interactionType) {
case 'bulletin_board':
// Show quest board
break;
case 'water_well':
// Fill water can
break;
case 'tool_rack':
// Access community tools
break;
case 'bench':
// Sit and rest (heal?)
break;
}
}
}
```
---
### **4. WEATHER & LIGHTING SYSTEM**
**Kar imaš:**
- Fog overlay
- Rain animation
- Lit lanterns
- Wall torches
**Kar rabiš dodati v kodo:**
#### **A. Weather System:**
```javascript
// src/systems/WeatherSystem.js
class WeatherSystem {
setWeather(type) {
switch(type) {
case 'fog':
this.addFogOverlay();
break;
case 'rain':
this.addRainParticles();
break;
case 'clear':
this.clearWeather();
break;
}
}
}
```
#### **B. Lighting System:**
```javascript
// Street lamps turn on at night
// Torches flicker
// Player flashlight interacts with darkness
```
---
### **5. CEMETERY SYSTEM**
**Kar imaš:**
- 20 cemetery sprites (mausoleum, gates, crypts, plaques)
- Broken → restored progression
**Kar rabiš dodati v kodo:**
#### **A. Cemetery Interaction:**
```javascript
// Memorial plaques - read inscriptions
// Mausoleum - quest location?
// Crypt door - dungeon entrance?
// Gates - unlock with quest progression
```
---
## 📋 IMPLEMENTATION PRIORITY
### **DAY 1 (TOMORROW):**
1. **NPC Basic Movement**
- Load 4 NPCs into town
- Idle animations working
- Can walk (simple patrol?)
2. **NPC Dialogue**
- Click NPC → show dialogue
- Portrait display
- Text system
### **DAY 2:**
3. **Interactive Props**
- Bulletin board quest system
- Water well interaction
- Bench sitting
4. **Building States**
- Load broken buildings
- Simple upgrade system (test 1 building)
### **DAY 3:**
5. **Weather Effects**
- Fog overlay test
- Rain particles
6. **Lighting System**
- Night/day cycle basic
- Lanterns light up
---
## 🔧 TECHNICAL INTEGRATION CHECKLIST
### **A. Sprite Loading:**
```javascript
// In GameScene preload():
this.load.spritesheet('luka_idle_left', 'assets/references/faza2_npcs/guard_luka/idle_left.png', {
frameWidth: ???, // Check actual sprite size
frameHeight: ???
});
// ... repeat for all 32 NPC sprites
```
### **B. Animation Creation:**
```javascript
// In GameScene create():
this.anims.create({
key: 'luka_idle_left',
frames: this.anims.generateFrameNumbers('luka_idle_left'),
frameRate: 8,
repeat: -1
});
```
### **C. NPC Spawning:**
```javascript
// Create NPCs in town
this.luka = new NPC(this, 400, 300, {
name: 'Guard Captain Luka',
spriteKey: 'luka',
dialogues: LUKA_DIALOGUES
});
```
---
## 📁 FILES TO CREATE/UPDATE
### **Create:**
1. `src/entities/NPC.js` - NPC class
2. `src/ui/DialogueBox.js` - Dialogue system
3. `src/entities/InteractiveProp.js` - Props
4. `src/systems/BuildingStateManager.js` - Buildings
5. `src/systems/WeatherSystem.js` - Weather
### **Update:**
1. `src/scenes/GameScene.js` - Add NPCs, props, weather
2. `src/ai/NPCIdleBehavior.js` - Already exists! Just integrate
3. `src/config/NPCData.js` - Create NPC definitions
---
## 🎯 QUICK WIN FOR TOMORROW
**NAJLAŽJI START:**
1. Naloži 1 NPC (Luka) v GameScene
2. Dodaj idle_left animation
3. Klik na njega → show "Hello, I'm Luka!"
4. **DONE - NPC sistem dela!**
**Potem expand:**
- Dodaj ostale 3 NPCje
- Dodaj walk animations
- Dodaj dialogue choices
- Dodaj quest system
---
## 💡 POMEMBNO ZA JUTRI
### **ŠE RABIŠ VEDETI:**
1. **Sprite Sizes?** - Preveri dejanske dimenzije sprite-ov
2. **Frame Counts?** - Koliko framov ima vsaka animacija?
3. **Tiled Integration?** - Ali boš dodajal v obstoječi map ali nov?
### **QUICK CHECK:**
```bash
# Check sprite dimensions
cd assets/references/faza2_npcs/guard_luka
file idle_left.png
# Output will show: PNG image data, 128 x 128 (example)
```
---
## 🚀 JUTRI ZAČNI Z:
1. **Open** `src/scenes/GameScene.js`
2. **Preload** 1 NPC sprite (Luka idle_left)
3. **Create** simple NPC sprite
4. **Add** click interaction
5. **Test** - če dela → expand!
---
## 📊 OČAKOVAN PROGRESS JUTRI
**Realistično:**
- 1 NPC working (Luka) ✅
- Basic dialogue ✅
- 1-2 interactive props ✅
**Če gre smooth:**
- All 4 NPCs ✅
- Full dialogue system ✅
- Quest board working ✅
**Če gre EPIC:**
- NPCs patrol ✅
- Building restoration ✅
- Weather system ✅
---
## 🎊 MOTIVACIJA
**Danes si naredil:**
- 255 sprites v 12 urah! 🔥
- 100% Faza 2 complete! 🏆
**Jutri boš naredil:**
- Assets LIVE in game! 🎮
- NPCs hodijo po town! 👥
- Players lahko interactajo! 🎯
**IT'S ALL COMING TOGETHER!** 💎
---
**Sleep well, legend! Jutri se nadaljuje! 😴🌙**