Stream asset reset v7, cleaning background and transparency fixes. 2026-01-29 16:37
This commit is contained in:
@@ -10,8 +10,9 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
// 1. Podlaga (Foundation)
|
||||
this.load.image('ground_base', 'DEMO_FAZA1/Ground/tla_trava_tekstura.png');
|
||||
|
||||
// 2. Vodni kanali (Water)
|
||||
this.load.image('stream_water', 'DEMO_FAZA1/Environment/stream_water.png');
|
||||
// 2. Vodni kanali (Water) - NEW CLEAN ASSET V7 (Aggressive Clean)
|
||||
this.load.image('stream_final_v7', 'DEMO_FAZA1/Environment/stream_final_v7.png');
|
||||
// Removed extensions for now
|
||||
|
||||
// 3. Foliage
|
||||
this.load.image('grass_dense', 'DEMO_FAZA1/Vegetation/grass_cluster_dense.png');
|
||||
@@ -26,22 +27,13 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
frameHeight: 256
|
||||
}); // Loading as 'kai' to keep existing references working, but now it has frames.
|
||||
|
||||
// 5. UI Assets (Loaded from DEMO_FAZA1/UI)
|
||||
this.load.image('ui_health_bar', 'DEMO_FAZA1/UI/health_bar.png');
|
||||
this.load.image('ui_weather_widget', 'DEMO_FAZA1/UI/weather_widget.png');
|
||||
this.load.image('ui_minimap', 'DEMO_FAZA1/UI/minimap_frame.png');
|
||||
this.load.image('ui_hotbar', 'DEMO_FAZA1/UI/hotbar_background.png');
|
||||
this.load.image('ui_action_btn', 'DEMO_FAZA1/UI/action_btn.png');
|
||||
// 5. UI Assets (Loaded in UIScene now to prevent duplicates)
|
||||
// REMOVED
|
||||
|
||||
// 6. Camp Assets
|
||||
this.load.image('campfire', 'DEMO_FAZA1/Environment/taborni_ogenj.png');
|
||||
this.load.image('tent', 'DEMO_FAZA1/Environment/sotor.png');
|
||||
this.load.image('sleeping_bag', 'DEMO_FAZA1/Items/spalna_vreca.png');
|
||||
|
||||
// 7. NEW: Sliced Stream Assets
|
||||
this.load.image('stream_head', 'DEMO_FAZA1/Environment/stream_head.png');
|
||||
this.load.image('stream_body', 'DEMO_FAZA1/Environment/stream_body.png');
|
||||
|
||||
}
|
||||
|
||||
create() {
|
||||
@@ -52,27 +44,42 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
this.cameras.main.setBounds(0, 0, WORLD_W, WORLD_H);
|
||||
this.cameras.main.setBackgroundColor('#1a1a1a');
|
||||
|
||||
// --- ZOOM CONTROL ---
|
||||
this.cameras.main.setZoom(1.5); // Default start zoom
|
||||
|
||||
this.input.on('wheel', (pointer, gameObjects, deltaX, deltaY, deltaZ) => {
|
||||
// Zoom In/Out based on wheel delta
|
||||
// deltaY > 0 means scroll down (zoom out), deltaY < 0 means scroll up (zoom in)
|
||||
const zoomFactor = -0.001;
|
||||
const newZoom = this.cameras.main.zoom + deltaY * zoomFactor;
|
||||
|
||||
// Clamp zoom to reasonable limits (e.g., 0.5x to 3x)
|
||||
this.cameras.main.setZoom(Phaser.Math.Clamp(newZoom, 0.5, 3.0));
|
||||
});
|
||||
|
||||
// --- 1. PODLAGA (The Foundation) ---
|
||||
// Level 0, Locked to Z = -100
|
||||
this.ground = this.add.tileSprite(WORLD_W / 2, WORLD_H / 2, WORLD_W, WORLD_H, 'ground_base');
|
||||
this.ground.setTileScale(1, 1);
|
||||
this.ground.setDepth(-100);
|
||||
|
||||
// --- 2. STREAM (Single Pipe Channel) ---
|
||||
// Placed at Z=0 (Ground Level)
|
||||
const startX = WORLD_W / 2 + 50;
|
||||
const startY = WORLD_H / 2 + 100;
|
||||
// --- 2. STREAM SYSTEM (Head + Extensions) ---
|
||||
// Center the whole construction
|
||||
const startX = WORLD_W / 2;
|
||||
const startY = WORLD_H / 2 - 300; // Start higher up to leave room for extensions
|
||||
|
||||
this.stream = this.physics.add.staticImage(startX, startY, 'stream_muddy');
|
||||
this.stream.setOrigin(0.5, 0.9);
|
||||
this.stream.setDepth(0);
|
||||
this.stream.setScale(1.0);
|
||||
// Main Head (Pipe + Splash)
|
||||
// Showing V7 Asset (Aggressive Clean + Transparent Green)
|
||||
this.stream = this.physics.add.staticImage(startX, startY, 'stream_final_v7');
|
||||
this.stream.setOrigin(0.5, 0.5);
|
||||
this.stream.setDepth(-50);
|
||||
|
||||
// Physics Body
|
||||
this.stream.body.setSize(this.stream.width * 0.9, this.stream.height * 0.4);
|
||||
this.stream.body.setOffset(this.stream.width * 0.05, this.stream.height * 0.5);
|
||||
// Physics Body for Main
|
||||
this.stream.body.setSize(this.stream.width * 0.8, this.stream.height * 0.2);
|
||||
this.stream.body.setOffset(this.stream.width * 0.1, this.stream.height * 0.4);
|
||||
|
||||
// Collider added later after Kai creation
|
||||
// Extensions removed for reset
|
||||
// for (let i = 1; i <= 3; i++) { ... }
|
||||
|
||||
// Collider added later after Kai creation
|
||||
|
||||
@@ -95,7 +102,7 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
this.kai.body.setOffset(256 / 2 - 25, 256 - 40); // Pivot offset based on 256 frame
|
||||
|
||||
// Collider Stream <-> Kai
|
||||
this.physics.add.collider(this.kai, this.stream);
|
||||
// this.physics.add.collider(this.kai, this.stream);
|
||||
|
||||
// --- ANIMATIONS ---
|
||||
// 0-3: Down, 4-7: Left, 8-11: Right, 12-15: Up
|
||||
@@ -128,42 +135,55 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
this.kai.play('walk-down');
|
||||
this.kai.stop();
|
||||
|
||||
// --- 7. CAMP SETUP (Oživitev) ---
|
||||
this.campGroup = this.add.group();
|
||||
|
||||
// Tent (Behind Kai usually)
|
||||
let tent = this.add.image(WORLD_W / 2 - 100, WORLD_H / 2 - 80, 'tent');
|
||||
tent.setOrigin(0.5, 0.9); // Bottom anchor
|
||||
tent.setScale(1.2); // Big enough for Kai
|
||||
this.campGroup.add(tent);
|
||||
|
||||
// Campfire (In front)
|
||||
let fire = this.add.image(WORLD_W / 2 + 50, WORLD_H / 2 + 50, 'campfire');
|
||||
fire.setOrigin(0.5, 0.8);
|
||||
fire.setScale(0.8);
|
||||
this.campGroup.add(fire);
|
||||
|
||||
// Tweens for Fire (Little pulse)
|
||||
this.tweens.add({
|
||||
targets: fire,
|
||||
scaleX: 0.85,
|
||||
scaleY: 0.85,
|
||||
duration: 500,
|
||||
yoyo: true,
|
||||
repeat: -1
|
||||
});
|
||||
|
||||
// Sleeping Bag
|
||||
let bag = this.add.image(WORLD_W / 2 - 80, WORLD_H / 2 + 20, 'sleeping_bag');
|
||||
bag.setOrigin(0.5, 0.5); // Flat on ground?
|
||||
bag.setScale(0.8);
|
||||
this.campGroup.add(bag);
|
||||
|
||||
// Camera
|
||||
// Camera setup logic
|
||||
this.cameras.main.startFollow(this.kai, true, 0.1, 0.1);
|
||||
this.cameras.main.setZoom(1.5);
|
||||
this.cursors = this.input.keyboard.createCursorKeys();
|
||||
|
||||
|
||||
|
||||
// Collider added later after Kai creation
|
||||
|
||||
// Collider added later after Kai creation
|
||||
|
||||
// --- 3. FOLIAGE (Trava - Šopi) ---
|
||||
// Removed as requested
|
||||
|
||||
// --- 4. ITEMS (Seno) ---
|
||||
// Removed as requested
|
||||
|
||||
|
||||
|
||||
// Collider Stream <-> Kai
|
||||
// this.physics.add.collider(this.kai, this.stream);
|
||||
|
||||
// --- ANIMATIONS ---
|
||||
// 0-3: Down, 4-7: Left, 8-11: Right, 12-15: Up
|
||||
// This is a duplicate animation creation block, removing it.
|
||||
// this.anims.create({
|
||||
// key: 'walk-down',
|
||||
// frames: this.anims.generateFrameNumbers('kai', { start: 0, end: 3 }),
|
||||
// frameRate: 8,
|
||||
// repeat: -1
|
||||
// });
|
||||
// this.anims.create({
|
||||
// key: 'walk-left',
|
||||
// frames: this.anims.generateFrameNumbers('kai', { start: 4, end: 7 }),
|
||||
// frameRate: 8,
|
||||
// repeat: -1
|
||||
// });
|
||||
// this.anims.create({
|
||||
// key: 'walk-right',
|
||||
// frames: this.anims.generateFrameNumbers('kai', { start: 8, end: 11 }),
|
||||
// frameRate: 8,
|
||||
// repeat: -1
|
||||
// });
|
||||
// this.anims.create({
|
||||
// key: 'walk-up',
|
||||
// frames: this.anims.generateFrameNumbers('kai', { start: 12, end: 15 }),
|
||||
// frameRate: 8,
|
||||
// repeat: -1
|
||||
// });
|
||||
|
||||
// Launch UI Scene
|
||||
if (!this.scene.get('UIScene').scene.settings.active) {
|
||||
this.scene.launch('UIScene');
|
||||
@@ -210,10 +230,5 @@ export default class GrassSceneClean extends Phaser.Scene {
|
||||
// --- Z-SORTING SYSTEM ---
|
||||
// Player
|
||||
this.kai.setDepth(this.kai.y);
|
||||
|
||||
// Camp Sorting
|
||||
this.campGroup.children.each(item => {
|
||||
item.setDepth(item.y);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user