mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Merge branch 'master' of https://github.com/tobspr/shapez.io
This commit is contained in:
commit
baf5c83b34
@ -94,16 +94,6 @@ module.exports = ({ watch = false, standalone = false }) => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
test: /\.worker\.js$/,
|
|
||||||
use: {
|
|
||||||
loader: "worker-loader",
|
|
||||||
options: {
|
|
||||||
fallback: false,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
test: /\.ya?ml$/,
|
test: /\.ya?ml$/,
|
||||||
type: "json", // Required by Webpack v4
|
type: "json", // Required by Webpack v4
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { Signal } from "./signal";
|
import { Signal } from "./signal";
|
||||||
|
|
||||||
// @ts-ignore
|
import BackgroundAnimationFrameEmitterWorker from "worker-loader?inline=true&fallback=false!../webworkers/background_animation_frame_emittter.worker";
|
||||||
import BackgroundAnimationFrameEmitterWorker from "../webworkers/background_animation_frame_emittter.worker";
|
|
||||||
|
|
||||||
import { createLogger } from "./logging";
|
import { createLogger } from "./logging";
|
||||||
const logger = createLogger("animation_frame");
|
const logger = createLogger("animation_frame");
|
||||||
@ -14,12 +13,11 @@ export class AnimationFrame {
|
|||||||
this.frameEmitted = new Signal();
|
this.frameEmitted = new Signal();
|
||||||
this.bgFrameEmitted = new Signal();
|
this.bgFrameEmitted = new Signal();
|
||||||
|
|
||||||
this.lastTime = null;
|
this.lastTime = performance.now();
|
||||||
this.bgLastTime = null;
|
this.bgLastTime = performance.now();
|
||||||
|
|
||||||
this.boundMethod = this.handleAnimationFrame.bind(this);
|
this.boundMethod = this.handleAnimationFrame.bind(this);
|
||||||
|
|
||||||
/** @type {Worker} */
|
|
||||||
this.backgroundWorker = new BackgroundAnimationFrameEmitterWorker();
|
this.backgroundWorker = new BackgroundAnimationFrameEmitterWorker();
|
||||||
this.backgroundWorker.addEventListener("error", err => {
|
this.backgroundWorker.addEventListener("error", err => {
|
||||||
logger.error("Error in background fps worker:", err);
|
logger.error("Error in background fps worker:", err);
|
||||||
@ -27,22 +25,16 @@ export class AnimationFrame {
|
|||||||
this.backgroundWorker.addEventListener("message", this.handleBackgroundTick.bind(this));
|
this.backgroundWorker.addEventListener("message", this.handleBackgroundTick.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
handleBackgroundTick() {
|
||||||
*
|
|
||||||
* @param {MessageEvent} event
|
|
||||||
*/
|
|
||||||
handleBackgroundTick(event) {
|
|
||||||
const time = performance.now();
|
const time = performance.now();
|
||||||
if (!this.bgLastTime) {
|
|
||||||
// First update, first delta is always 16ms
|
let dt = time - this.bgLastTime;
|
||||||
this.bgFrameEmitted.dispatch(1000 / 60);
|
|
||||||
} else {
|
if (dt > maxDtMs) {
|
||||||
let dt = time - this.bgLastTime;
|
dt = resetDtMs;
|
||||||
if (dt > maxDtMs) {
|
|
||||||
dt = resetDtMs;
|
|
||||||
}
|
|
||||||
this.bgFrameEmitted.dispatch(dt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.bgFrameEmitted.dispatch(dt);
|
||||||
this.bgLastTime = time;
|
this.bgLastTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,18 +44,15 @@ export class AnimationFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleAnimationFrame(time) {
|
handleAnimationFrame(time) {
|
||||||
if (!this.lastTime) {
|
let dt = time - this.lastTime;
|
||||||
// First update, first delta is always 16ms
|
|
||||||
this.frameEmitted.dispatch(1000 / 60);
|
if (dt > maxDtMs) {
|
||||||
} else {
|
dt = resetDtMs;
|
||||||
let dt = time - this.lastTime;
|
|
||||||
if (dt > maxDtMs) {
|
|
||||||
// warn(this, "Clamping", dt, "to", resetDtMs);
|
|
||||||
dt = resetDtMs;
|
|
||||||
}
|
|
||||||
this.frameEmitted.dispatch(dt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.frameEmitted.dispatch(dt);
|
||||||
this.lastTime = time;
|
this.lastTime = time;
|
||||||
|
|
||||||
window.requestAnimationFrame(this.boundMethod);
|
window.requestAnimationFrame(this.boundMethod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// @ts-ignore
|
import CompressionWorker from "worker-loader?inline=true&fallback=false!../webworkers/compression.worker";
|
||||||
import CompressionWorker from "../webworkers/compression.worker";
|
|
||||||
import { createLogger } from "./logging";
|
import { createLogger } from "./logging";
|
||||||
import { compressX64 } from "./lzstring";
|
|
||||||
const logger = createLogger("async_compression");
|
const logger = createLogger("async_compression");
|
||||||
|
|
||||||
export let compressionPrefix = String.fromCodePoint(1);
|
export let compressionPrefix = String.fromCodePoint(1);
|
||||||
@ -35,7 +34,6 @@ if (!checkCryptPrefix(compressionPrefix)) {
|
|||||||
|
|
||||||
class AsynCompression {
|
class AsynCompression {
|
||||||
constructor() {
|
constructor() {
|
||||||
/** @type {Worker} */
|
|
||||||
this.worker = new CompressionWorker();
|
this.worker = new CompressionWorker();
|
||||||
|
|
||||||
this.currentJobId = 1000;
|
this.currentJobId = 1000;
|
||||||
|
@ -8,7 +8,7 @@ import { FILE_NOT_FOUND } from "../platform/storage";
|
|||||||
import { accessNestedPropertyReverse } from "./utils";
|
import { accessNestedPropertyReverse } from "./utils";
|
||||||
import { IS_DEBUG, globalConfig } from "./config";
|
import { IS_DEBUG, globalConfig } from "./config";
|
||||||
import { ExplainedResult } from "./explained_result";
|
import { ExplainedResult } from "./explained_result";
|
||||||
import { decompressX64, compressX64 } from ".//lzstring";
|
import { decompressX64, compressX64 } from "./lzstring";
|
||||||
import { asyncCompressor, compressionPrefix } from "./async_compression";
|
import { asyncCompressor, compressionPrefix } from "./async_compression";
|
||||||
import { compressObject, decompressObject } from "../savegame/savegame_compressor";
|
import { compressObject, decompressObject } from "../savegame/savegame_compressor";
|
||||||
|
|
||||||
|
@ -1,19 +1,12 @@
|
|||||||
import { globalConfig } from "./config";
|
import { createHash } from "rusha";
|
||||||
import { decompressX64, compressX64 } from "./lzstring";
|
|
||||||
|
|
||||||
const Rusha = require("rusha");
|
import { decompressX64 } from "./lzstring";
|
||||||
|
|
||||||
const encryptKey = globalConfig.info.sgSalt;
|
|
||||||
|
|
||||||
export function decodeHashedString(s) {
|
|
||||||
return decompressX64(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function sha1(str) {
|
export function sha1(str) {
|
||||||
return Rusha.createHash().update(str).digest("hex");
|
return createHash().update(str).digest("hex");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Window.location.host
|
// Window.location.host
|
||||||
export function getNameOfProvider() {
|
export function getNameOfProvider() {
|
||||||
return window[decodeHashedString("DYewxghgLgliB2Q")][decodeHashedString("BYewzgLgdghgtgUyA")];
|
return window[decompressX64("DYewxghgLgliB2Q")][decompressX64("BYewzgLgdghgtgUyA")];
|
||||||
}
|
}
|
||||||
|
8
src/js/globals.d.ts
vendored
8
src/js/globals.d.ts
vendored
@ -190,3 +190,11 @@ declare interface TypedSignal<T extends Array<any>> {
|
|||||||
|
|
||||||
removeAll();
|
removeAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare module "worker-loader?inline=true&fallback=false!*" {
|
||||||
|
class WebpackWorker extends Worker {
|
||||||
|
constructor();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default WebpackWorker;
|
||||||
|
}
|
||||||
|
@ -54,5 +54,6 @@
|
|||||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||||
"resolveJsonModule": true
|
"resolveJsonModule": true
|
||||||
}
|
},
|
||||||
|
"exclude": ["webworkers"]
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
// We clamp high deltas so 30 fps is fairly ok
|
// We clamp high deltas so 30 fps is fairly ok
|
||||||
var bgFps = 30;
|
const bgFps = 30;
|
||||||
var desiredMsDelay = 1000 / bgFps;
|
const desiredMsDelay = 1000 / bgFps;
|
||||||
|
|
||||||
let lastTick = 0;
|
let lastTick = performance.now();
|
||||||
|
|
||||||
function tick() {
|
function tick() {
|
||||||
var now = performance.now();
|
const now = performance.now();
|
||||||
var delta = now - lastTick;
|
const delta = now - lastTick;
|
||||||
lastTick = now;
|
lastTick = now;
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
postMessage({ delta });
|
postMessage({ delta });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,15 +12,9 @@ function accessNestedPropertyReverse(obj, keys) {
|
|||||||
|
|
||||||
const salt = accessNestedPropertyReverse(globalConfig, ["file", "info"]);
|
const salt = accessNestedPropertyReverse(globalConfig, ["file", "info"]);
|
||||||
|
|
||||||
onmessage = function (event) {
|
onmessage = function ({ data: { jobId, job, data } }) {
|
||||||
const { jobId, job, data } = event.data;
|
|
||||||
const result = performJob(job, data);
|
const result = performJob(job, data);
|
||||||
|
postMessage({ jobId, result });
|
||||||
// @ts-ignore
|
|
||||||
postMessage({
|
|
||||||
jobId,
|
|
||||||
result,
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function performJob(job, data) {
|
function performJob(job, data) {
|
||||||
|
8
src/js/webworkers/tsconfig.json
Normal file
8
src/js/webworkers/tsconfig.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": ["ES2018","WebWorker"]
|
||||||
|
},
|
||||||
|
"exclude": [],
|
||||||
|
"extends": "../tsconfig",
|
||||||
|
"include": ["*.worker.js"]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user