Files
bo3-js/js/clientmain.js
usernames122 d9d5460856 Add launchable
2025-10-23 20:58:19 +02:00

49 lines
1.6 KiB
JavaScript

import { DataModel } from "./core/DataModel.js";
import * as THREE from "three";
import { NetworkService } from "./instances/NetworkService.js";
import { ReplicatorService } from "./instances/ReplicatorService.js";
import { RenderService } from "./instances/RenderService.js";
import { Workspace } from "./instances/Workspace.js";
import { DebugTextService } from "./instances/DebugTextService.js"; // Client-only debug overlay manager
import { Players } from "./instances/Players.js";
const dm = new DataModel();
dm.SetParent(null); // root
// Create workspace
const ws = new Workspace();
ws.SetParent(dm);
const net = new NetworkService();
net.SetParent(dm);
net.isServer = false; // client mode
// Create a players container (client-side crippled version)
const players = new Players(net, true);
players.SetParent(dm);
await net.connect("ws://localhost:8080"); // connect to server
const render = new RenderService(dm);
render.SetParent(dm);
render.start();
// Start replicator
const replication = new ReplicatorService(dm, net); // Automatically parents to dm
// Create DebugTextService
const debugText = new DebugTextService();
debugText.SetParent(dm);
setTimeout(() => {
console.log("Prompting for token...");
let sessionToken = prompt("Enter your session token: (any string will do for this test except 'fake')");
console.log("Got token:", sessionToken);
if (sessionToken) {
const encoder = new TextEncoder();
const payload = encoder.encode(sessionToken);
net.send(0x01, 0x03, payload);
} else {
console.warn("No token entered — not sending packet.");
}
}, 3000);