This commit is contained in:
2025-12-12 02:41:00 +01:00
parent e15b429e75
commit 84b07bb433
13 changed files with 1917 additions and 76 deletions

View File

@@ -0,0 +1,174 @@
// ========================================================
// PRIMERI UPORABE SISTEMA ZA POSTAVITEV OGRAJ
// ========================================================
//
// Ta datoteka vsebuje primere, kako uporabljati BuildSystem
// za ročno postavitev ograj na natančne koordinate.
//
// KAKO UPORABITI:
// 1. V GameScene.js dodaj: import './examples/FencePlacementExample.js';
// 2. V create() metodi pokliči: this.setupFenceExamples();
// ========================================================
/**
* Dodaj to metodo v GameScene.js za testiranje postavitve ograj.
*/
export function setupFenceExamples(scene) {
// Počakaj, da se BuildSystem inicializira
if (!scene.buildSystem) {
console.error('❌ BuildSystem ni inicializiran!');
return;
}
console.log('🔧 Inicializacija primerov postavitve ograj...');
// ========================================================
// PRIMER 1: Postavitev ene same ograje
// ========================================================
scene.buildSystem.placeSingleFence(50, 30, 'fence_horizontal', false);
// ========================================================
// PRIMER 2: Postavitev kratke linije ograj (vodoravno)
// ========================================================
for (let i = 0; i < 5; i++) {
scene.buildSystem.placeSingleFence(50 + i, 32, 'fence_horizontal', false);
}
// ========================================================
// PRIMER 3: Postavitev navpične linije ograj
// ========================================================
for (let i = 0; i < 5; i++) {
scene.buildSystem.placeSingleFence(48, 30 + i, 'fence_vertical', false);
}
// ========================================================
// PRIMER 4: Uporaba placeFenceLine (Bresenhamov algoritem)
// ========================================================
scene.buildSystem.placeFenceLine(40, 40, 45, 45, 'fence_post', false);
// ========================================================
// PRIMER 5: Postavitev pravokotnika ograj (10x8)
// ========================================================
scene.buildSystem.placeFenceRectangle(30, 50, 10, 8, 'fence_horizontal', false);
// ========================================================
// PRIMER 6: Postavitev ograj okoli farme (primer)
// ========================================================
// Če želite ograditi celotno farmo (100x100), uporabite:
// scene.buildSystem.placeFenceRectangle(0, 0, 100, 100, 'fence_horizontal', false);
// ========================================================
// PRIMER 7: Različni tipi ograj
// ========================================================
// Razpoložljivi tipi ograj:
// - 'fence' (stara ograja)
// - 'fence_post' (steber)
// - 'fence_horizontal' (vodoravna →)
// - 'fence_vertical' (navpična ↓)
// - 'fence_corner' (vogal ⌞)
scene.buildSystem.placeSingleFence(60, 30, 'fence_post', false);
scene.buildSystem.placeSingleFence(61, 30, 'fence_horizontal', false);
scene.buildSystem.placeSingleFence(62, 30, 'fence_vertical', false);
scene.buildSystem.placeSingleFence(63, 30, 'fence_corner', false);
// ========================================================
// PRIMER 8: Postavitev z porabo virov
// ========================================================
// Če želite, da se viri porabijo pri postavitvi:
// scene.buildSystem.placeSingleFence(70, 30, 'fence_horizontal', true);
// OPOMBA: To bo preverilo, ali ima igralec dovolj lesa!
console.log('✅ Primeri postavitve ograj so bili izvedeni!');
}
/**
* Napredni primer: Ustvari labirint iz ograj
*/
export function createFenceMaze(scene, startX, startY, size = 20) {
if (!scene.buildSystem) return;
console.log('🌀 Ustvarjanje labirinta iz ograj...');
// Zunanji rob
scene.buildSystem.placeFenceRectangle(startX, startY, size, size, 'fence_horizontal', false);
// Notranje stene (primer)
for (let i = 2; i < size - 2; i += 4) {
scene.buildSystem.placeFenceLine(
startX + i,
startY + 2,
startX + i,
startY + size - 3,
'fence_vertical',
false
);
}
console.log('✅ Labirint ustvarjen!');
}
/**
* Napredni primer: Ustvari spiralo iz ograj
*/
export function createFenceSpiral(scene, centerX, centerY, maxRadius = 10) {
if (!scene.buildSystem) return;
console.log('🌀 Ustvarjanje spirale iz ograj...');
let x = centerX;
let y = centerY;
let dx = 0;
let dy = -1;
let segment_length = 1;
let segment_passed = 0;
for (let i = 0; i < maxRadius * maxRadius; i++) {
scene.buildSystem.placeSingleFence(x, y, 'fence_post', false);
x += dx;
y += dy;
segment_passed++;
if (segment_passed === segment_length) {
segment_passed = 0;
// Zavij desno
const temp = dx;
dx = -dy;
dy = temp;
if (dy === 0) {
segment_length++;
}
}
}
console.log('✅ Spirala ustvarjena!');
}
// ========================================================
// KAKO UPORABITI TE PRIMERE V GAMESCENE.JS:
// ========================================================
/*
// 1. Na vrhu GameScene.js dodaj import:
import { setupFenceExamples, createFenceMaze, createFenceSpiral } from './examples/FencePlacementExample.js';
// 2. V create() metodi, po inicializaciji BuildSystem:
create() {
// ... ostala koda ...
this.buildSystem = new BuildSystem(this);
// Pokliči primere (opcijsko):
setupFenceExamples(this);
// Ali ustvari labirint:
// createFenceMaze(this, 20, 20, 30);
// Ali ustvari spiralo:
// createFenceSpiral(this, 50, 50, 15);
}
*/