test
This commit is contained in:
174
src/examples/FencePlacementExample.js
Normal file
174
src/examples/FencePlacementExample.js
Normal 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);
|
||||
}
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user