master
SanjarBLZK 1 week ago
parent 404617e16c
commit d3be8915c0

@ -0,0 +1,24 @@
const fs = require('fs');
const path = require('path');
class AssetManager {
constructor(assetDir) {
this.assetDir = path.resolve(assetDir);
this.assets = {};
}
loadAssets() {
if (!fs.existsSync(this.assetDir)) return;
const files = fs.readdirSync(this.assetDir);
files.forEach(file => {
const filePath = path.join(this.assetDir, file);
this.assets[file] = filePath;
});
}
getAsset(name) {
return this.assets[name];
}
}
module.exports = AssetManager;

@ -0,0 +1,15 @@
const fs = require('fs');
const path = require('path');
class ConfigLoader {
static load(configPath) {
const fullPath = path.resolve(configPath);
if (!fs.existsSync(fullPath)) {
throw new Error(`Config file not found: ${fullPath}`);
}
const raw = fs.readFileSync(fullPath);
return JSON.parse(raw);
}
}
module.exports = ConfigLoader;

@ -0,0 +1,20 @@
class EventBus {
constructor() {
this.listeners = {};
}
on(event, callback) {
if (!this.listeners[event]) {
this.listeners[event] = [];
}
this.listeners[event].push(callback);
}
emit(event, data) {
if (this.listeners[event]) {
this.listeners[event].forEach(cb => cb(data));
}
}
}
module.exports = EventBus;

@ -0,0 +1,23 @@
class GameLoop {
constructor({ onUpdate, onEnd }) {
this.running = false;
this.onUpdate = onUpdate;
this.onEnd = onEnd;
}
start() {
this.running = true;
while (this.running) {
if (this.onUpdate) this.onUpdate();
// Simpel voorbeeld: direct stoppen
this.stop();
}
if (this.onEnd) this.onEnd();
}
stop() {
this.running = false;
}
}
module.exports = GameLoop;

@ -0,0 +1,26 @@
const ConfigLoader = require('./core/config-loader');
const AssetManager = require('./core/asset-manager');
const EventBus = require('./core/event-bus');
const GameLoop = require('./core/game-loop');
// Config pad kan via argumenten komen, standaard default.json
const configPath = process.argv[2] || '../configs/default.json';
const config = ConfigLoader.load(configPath);
const assetManager = new AssetManager(config.assetsDir || '../assets/default');
assetManager.loadAssets();
const eventBus = new EventBus();
const gameLoop = new GameLoop({
onUpdate: () => {
// Hier komt de game logica per tick
console.log('Game update');
},
onEnd: () => {
console.log('Game ended');
}
});
console.log('Engine gestart met config:', configPath);
gameLoop.start();
Loading…
Cancel
Save