@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 1.54 kB
JavaScript
export function formatMillisecondsToSeconds(n,t){const a=Math.pow(10,3-t),h=Math.pow(10,Math.max(0,t));return Math.round(n/a)/h+" s"}export class Bounds{minInternal;maxInternal;lowInternal;highInternal;maxRange;minRange;constructor(n,t,a,h){this.minInternal=n,this.maxInternal=t,this.lowInternal=this.minInternal,this.highInternal=this.maxInternal,this.maxRange=a,this.minRange=h}get low(){return this.lowInternal}get high(){return this.highInternal}get min(){return this.minInternal}get max(){return this.maxInternal}get range(){return this.highInternal-this.lowInternal}reassertBounds(){let n=!0;for(;n;){if(n=!1,this.range<this.minRange){n=!0;const t=(this.minRange-this.range)/2;this.highInternal+=t,this.lowInternal-=t}this.lowInternal<this.minInternal&&(n=!0,this.lowInternal=this.minInternal),this.highInternal>this.maxInternal&&(n=!0,this.highInternal=this.maxInternal)}}zoomOut(n,t){const a=this.highInternal-this.lowInternal,h=a*Math.pow(1.1,n)-a,i=h*t,e=h-i;this.lowInternal-=i,this.highInternal+=e,this.reassertBounds()}zoomIn(n,t){const a=this.highInternal-this.lowInternal;if(this.range<=this.minRange)return;const h=a-a/Math.pow(1.1,n),i=h*t,e=h-i;this.lowInternal+=i,this.highInternal-=e,this.reassertBounds()}addMax(n){const t=this.highInternal-this.lowInternal,a=this.highInternal===this.maxInternal,h=this.lowInternal===this.minInternal||t>=this.maxRange;this.maxInternal+=n,a&&h&&(this.highInternal=this.maxInternal),this.reassertBounds()}pushMaxAtLeastTo(n){return this.maxInternal<n&&(this.addMax(n-this.maxInternal),!0)}}