versión inicial del juego
This commit is contained in:
59
src/main.js
Normal file
59
src/main.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import { DungeonGenerator } from './engine/dungeon/DungeonGenerator.js';
|
||||
import { MissionConfig, MISSION_TYPES } from './engine/dungeon/MissionConfig.js';
|
||||
|
||||
console.log("Initializing Warhammer Quest Engine... VERSION: TEXTURE_DEBUG_V1");
|
||||
window.TEXTURE_DEBUG = true; // Global flag we can check
|
||||
|
||||
|
||||
|
||||
// 1. Setup Mission
|
||||
const mission = new MissionConfig({
|
||||
id: 'mission_1',
|
||||
name: 'The First Dive',
|
||||
type: MISSION_TYPES.ESCAPE,
|
||||
minTiles: 6
|
||||
});
|
||||
|
||||
// 2. Init Engine
|
||||
import { GameRenderer } from './view/GameRenderer.js';
|
||||
import { CameraManager } from './view/CameraManager.js';
|
||||
import { UIManager } from './view/UIManager.js';
|
||||
import { DIRECTIONS } from './engine/dungeon/Constants.js';
|
||||
|
||||
const renderer = new GameRenderer('app'); // Assuming <div id="app"> or body
|
||||
const cameraManager = new CameraManager(renderer);
|
||||
const generator = new DungeonGenerator();
|
||||
const ui = new UIManager(cameraManager, generator);
|
||||
|
||||
// Hook generator to renderer (Primitive Event system)
|
||||
// We simply check placedTiles changes or adding methods
|
||||
const originalPlaceTile = generator.grid.placeTile.bind(generator.grid);
|
||||
generator.grid.placeTile = (instance, def) => {
|
||||
originalPlaceTile(instance, def);
|
||||
// Visual Spawn
|
||||
// We need to spawn the actual shape. For now `addTile` does a bug cube.
|
||||
// Ideally we iterate the cells of the tile and spawn cubes.
|
||||
|
||||
// Quick Hack: Spawn a cube for every occupied cell of this tile
|
||||
const cells = generator.grid.getGlobalCells(def, instance.x, instance.y, instance.rotation);
|
||||
renderer.addTile(cells, def.type, def, instance);
|
||||
};
|
||||
|
||||
// 3. Start
|
||||
console.log("Starting Dungeon Generation...");
|
||||
|
||||
generator.startDungeon(mission);
|
||||
|
||||
// 4. Render Loop
|
||||
const animate = () => {
|
||||
requestAnimationFrame(animate);
|
||||
|
||||
// Logic Step
|
||||
if (!generator.isComplete) {
|
||||
generator.step();
|
||||
}
|
||||
|
||||
// Render
|
||||
renderer.render(cameraManager.getCamera());
|
||||
};
|
||||
animate();
|
||||
Reference in New Issue
Block a user