migrate from perforce

This commit is contained in:
2026-04-19 01:16:27 +02:00
commit d161a20915
1810 changed files with 1156171 additions and 0 deletions

103
dist/Vis/VisMain.js vendored Normal file
View File

@@ -0,0 +1,103 @@
import { VisLevel } from "./index.js";
export class VisMain {
_canvas;
_context;
_startTimestamp = 0;
_active = true;
_ready = false;
_gap = 0;
_wallPattern;
_visLevel;
_simMain;
constructor(simMain, canvas) {
this._simMain = simMain;
this._canvas = canvas;
this._context = this._canvas.getContext("2d");
this._context.globalCompositeOperation = "source-over";
this._wallPattern = this.createPattern(this._simMain.gdRoot.image("wall.png"), 48);
this._visLevel = new VisLevel(this, this._simMain, this._simMain.gdRoot);
const host = this;
requestAnimationFrame(function step(timestamp) {
host.step(timestamp);
});
}
get simMain() {
return this._simMain;
}
get visLevel() {
return this._visLevel;
}
get canvas() {
return this._canvas;
}
get context() {
return this._context;
}
get wallPattern() {
return this._wallPattern;
}
createPattern(image, size) {
const tempCanvas = document.createElement("canvas");
const tempContext = tempCanvas.getContext("2d");
tempCanvas.width = size;
tempCanvas.height = size;
tempContext.drawImage(image, 0, 0, image.width, image.height, 0, 0, size, size);
return this._context.createPattern(tempCanvas, 'repeat');
}
step(timestamp) {
if (!this._active) {
return;
}
const host = this;
requestAnimationFrame((timestamp) => {
host.step(timestamp);
});
if (!this._startTimestamp) {
this._startTimestamp = timestamp;
}
const simLevel = this._simMain.currentLevel;
let targetStep = (timestamp - this._startTimestamp) * this._simMain.gdRoot.simulation.stepsPerSecond / 1000 - this._gap;
if (simLevel.paused) {
this._gap += targetStep - simLevel.currentStep;
targetStep = simLevel.currentStep;
}
this._simMain.executeUntilStep(targetStep);
this._visLevel.updateEveryFrame(targetStep);
this.onRender();
}
;
onResized() {
const gameHost = document.getElementById("game-host");
const width = gameHost.clientWidth;
const height = gameHost.clientHeight;
const ratio = window.devicePixelRatio;
this._canvas.width = width * ratio;
this._canvas.height = height * ratio;
this._canvas.style.width = width + "px";
this._canvas.style.height = height + "px";
this._context.scale(ratio, ratio);
this._visLevel.updateSize();
}
;
onRender() {
this.clear();
const ctx = this._context;
ctx.font = "12px Tahoma";
const simLevel = this._simMain.currentLevel;
if (!!simLevel) {
if (!this._ready) {
this.onResized();
this._ready = true;
}
this._visLevel.draw();
}
}
;
clear() {
this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);
}
stop() {
this._active = false;
}
}
//# sourceMappingURL=VisMain.js.map