feat: integrate WorldBlockCache for efficient world block management and update logging

This commit is contained in:
MayaTheShy
2026-03-22 11:45:10 -04:00
parent 6312e45bf1
commit 24570d0fc0

View File

@@ -5,6 +5,7 @@ import { createServer } from 'http';
import * as db from './database.js';
import { Turtle } from './Turtle.js';
import { TaskDispatcher } from './TaskDispatcher.js';
import { WorldBlockCache } from './WorldBlockCache.js';
const app = express();
const PORT = 3001;
@@ -49,14 +50,14 @@ db.initializeDatabase();
// Load persisted data from database
console.log('📂 Loading persisted data from database...');
const savedHomes = db.getAllTurtleHomes();
const savedBlocks = db.getWorldBlocks();
const blockCount = db.getWorldBlockCount();
console.log(` Loaded ${savedHomes.length} turtle homes`);
console.log(` Loaded ${savedBlocks.length} world blocks`);
console.log(` ${blockCount} world blocks in database (demand-loaded)`);
// Store connected web clients and turtle data
const webClients = new Set();
const turtles = new Map(); // turtleID -> Turtle instance
const worldBlocks = new Map(); // "x,y,z" -> {name, metadata, discoveredBy, timestamp}
const worldBlocks = new WorldBlockCache(db, parseInt(process.env.BLOCK_CACHE_SIZE || '50000', 10));
const turtleHomes = new Map(); // turtleID -> {x, y, z} home position
const turtleConfig = new Map(); // turtleID -> {maxDistance, facing, etc}
@@ -65,17 +66,6 @@ for (const home of savedHomes) {
turtleHomes.set(home.turtle_id, { x: home.x, y: home.y, z: home.z });
}
// Load saved blocks into memory
for (const block of savedBlocks) {
const key = `${block.x},${block.y},${block.z}`;
worldBlocks.set(key, {
name: block.block_name,
metadata: block.metadata,
discoveredBy: block.discovered_by,
timestamp: block.discovered_at
});
}
// Timeout for considering turtles offline (30 seconds)
const TURTLE_TIMEOUT = 30000;