From 2955ded1f0e03bf30693ccb83313e408afc0776c Mon Sep 17 00:00:00 2001 From: PeenScreeker Date: Fri, 1 Dec 2023 03:19:21 -0500 Subject: [PATCH] feat: update synchronizer to use util file functions --- layout/hud/synchronizer.xml | 3 +- scripts/hud/synchronizer.js | 83 +++++++------------------------------ 2 files changed, 17 insertions(+), 69 deletions(-) diff --git a/layout/hud/synchronizer.xml b/layout/hud/synchronizer.xml index 4bcc1e47..25bdb2d2 100644 --- a/layout/hud/synchronizer.xml +++ b/layout/hud/synchronizer.xml @@ -4,7 +4,8 @@ - + + diff --git a/scripts/hud/synchronizer.js b/scripts/hud/synchronizer.js index c8aa9749..2bf5128b 100644 --- a/scripts/hud/synchronizer.js +++ b/scripts/hud/synchronizer.js @@ -45,12 +45,12 @@ class Synchronizer { this.addToBuffer(this.gainRatioHistory, 0); this.addToBuffer(this.yawRatioHistory, 0); - const bValidWishMove = this.getSize(lastMoveData.wishdir) > 0.1; + const bValidWishMove = getSize2D(lastMoveData.wishdir) > 0.1; const strafeRight = (bValidWishMove ? 1 : 0) * lastTickStats.strafeRight; const direction = this.dynamicEnable === 1 ? strafeRight : 1; const flip = this.flipEnable === 1 ? -1 : 1; - if (bValidWishMove && this.getSizeSquared(MomentumPlayerAPI.GetVelocity()) > Math.pow(this.minSpeed, 2)) { + if (bValidWishMove && getSizeSquared2D(MomentumPlayerAPI.GetVelocity()) > Math.pow(this.minSpeed, 2)) { this.gainRatioHistory[this.interpFrames - 1] = this.sampleWeight * this.NaNCheck(lastTickStats.speedGain / lastTickStats.idealGain, 0); @@ -62,7 +62,7 @@ class Synchronizer { const yawRatio = this.getBufferedSum(this.yawRatioHistory); const colorTuple = this.colorEnable - ? this.getColorTuple(gainRatio, false) //strafeRight * yawRatio > 1) + ? this.getColorPair(gainRatio, false) //strafeRight * yawRatio > 1) : COLORS.NEUTRAL; const color = `gradient(linear, 0% 0%, 0% 100%, from(${colorTuple[0]}), to(${colorTuple[1]}))`; let flow; @@ -114,37 +114,34 @@ class Synchronizer { `(${(lastJumpStats.yawRatio * 100).toFixed(2)}%)`.padStart(10, ' '); this.panels.stats[1].text = (lastJumpStats.speedGain * 100).toFixed(2); - const colorTuple = this.StatColorEnable - ? this.getColorTuple(lastJumpStats.speedGain, lastJumpStats.yawRatio > 0) + const colorPair = this.StatColorEnable + ? this.getColorPair(lastJumpStats.speedGain, lastJumpStats.yawRatio > 0) : COLORS.NEUTRAL; - for (const stat of this.panels.stats) stat.style.color = colorTuple[1]; + for (const stat of this.panels.stats) stat.style.color = colorPair[1]; } - static getColorTuple(ratio, bOverStrafing) { + static getColorPair(ratio, bOverStrafing) { // cases where gain effectiveness is >90% if (ratio > 1.02) return COLORS.EXTRA; else if (ratio > 0.99) return COLORS.PERFECT; else if (ratio > 0.95) return COLORS.GOOD; else if (ratio <= -5) return COLORS.STOP; - const lerpColorTuples = (c1, c2, alpha) => { - return [ - this.lerpColorStrings(c1[0], c2[0], alpha.toFixed(3)), - this.lerpColorStrings(c1[1], c2[1], alpha.toFixed(3)) - ]; + const lerpColorPairs = (c1, c2, alpha) => { + return [rgbaStringLerp(c1[0], c2[0], alpha.toFixed(3)), rgbaStringLerp(c1[1], c2[1], alpha.toFixed(3))]; }; // cases where gain effectiveness is <90% if (!bOverStrafing) { - if (ratio > 0.85) return lerpColorTuples(COLORS.SLOW, COLORS.GOOD, (ratio - 0.85) / 0.1); + if (ratio > 0.85) return lerpColorPairs(COLORS.SLOW, COLORS.GOOD, (ratio - 0.85) / 0.1); else if (ratio > 0.75) return COLORS.SLOW; - else if (ratio > 0.5) return lerpColorTuples(COLORS.NEUTRAL, COLORS.SLOW, (ratio - 0.5) / 0.25); + else if (ratio > 0.5) return lerpColorPairs(COLORS.NEUTRAL, COLORS.SLOW, (ratio - 0.5) / 0.25); else if (ratio > 0) return COLORS.NEUTRAL; - else if (ratio > -5) return lerpColorTuples(COLORS.NEUTRAL, COLORS.STOP, Math.abs(ratio) / 5); + else if (ratio > -5) return lerpColorPairs(COLORS.NEUTRAL, COLORS.STOP, Math.abs(ratio) / 5); } else { - if (ratio > 0.8) return lerpColorTuples(COLORS.SLOW, COLORS.GOOD, (ratio - 0.8) / 0.15); - else if (ratio > 0) return lerpColorTuples(COLORS.LOSS, COLORS.SLOW, (ratio - 0.25) / 0.55); - else if (ratio > -5) return lerpColorTuples(COLORS.LOSS, COLORS.STOP, Math.abs(ratio) / 5); + if (ratio > 0.8) return lerpColorPairs(COLORS.SLOW, COLORS.GOOD, (ratio - 0.8) / 0.15); + else if (ratio > 0) return lerpColorPairs(COLORS.LOSS, COLORS.SLOW, (ratio - 0.25) / 0.55); + else if (ratio > -5) return lerpColorPairs(COLORS.LOSS, COLORS.STOP, Math.abs(ratio) / 5); } } @@ -170,35 +167,6 @@ class Synchronizer { return Math.acos(speed < threshold ? 1 : threshold / speed); } - static getSize(vec) { - return Math.sqrt(this.getSizeSquared(vec)); - } - - static getSizeSquared(vec) { - return vec.x * vec.x + vec.y * vec.y; - } - - static getNormal(vec, threshold) { - const mag = this.getSize(vec); - const vecNormal = { - x: vec.x, - y: vec.y - }; - if (mag < threshold * threshold) { - vecNormal.x = 0; - vecNormal.y = 0; - } else { - const inv = 1 / mag; - vecNormal.x *= inv; - vecNormal.y *= inv; - } - return vecNormal; - } - - static getCross(vec1, vec2) { - return vec1.x * vec2.y - vec1.y * vec2.x; - } - static initializeBuffer(size) { return Array.from({ length: size }).fill(0); } @@ -212,27 +180,6 @@ class Synchronizer { return history.reduce((sum, element) => sum + element, 0); } - static getColorStringFromArray(color) { - return `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3] / 255})`; - } - - static splitColorString(string) { - return string - .slice(5, -1) - .split(',') - .map((c, i) => (i === 3 ? +c * 255 : +c)); - } - - static lerpColorStrings(stringA, stringB, alpha) { - const colorA = this.splitColorString(stringA); - const colorB = this.splitColorString(stringB); - return this.getColorStringFromArray(this.lerpColorArrays(colorA, colorB, alpha)); - } - - static lerpColorArrays(A, B, alpha) { - return A.map((Ai, i) => Ai + alpha * (B[i] - Ai)); - } - static setDisplayMode(newMode) { this.displayMode = newMode ?? 0; switch (this.displayMode) {