forked from Simnation/Main
168 lines
4.6 KiB
JavaScript
168 lines
4.6 KiB
JavaScript
const SetupProgressBar = () =>{
|
|
//var bar = new ProgressBar.Path('#path-2', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
//});
|
|
//
|
|
//bar.set(0);
|
|
//bar.animate(0.33)
|
|
|
|
// var bar4 = new ProgressBar.Path('#healthText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
// });
|
|
// bar4.set(0)
|
|
// bar4.animate(0.7)
|
|
//
|
|
// var bar5 = new ProgressBar.Path('#waterText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
// });
|
|
// bar5.set(0)
|
|
// bar5.animate(0.7)
|
|
//
|
|
// var bar6 = new ProgressBar.Path('#armorText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
// });
|
|
// bar6.set(0)
|
|
// bar6.animate(0.7)
|
|
// var bar7 = new ProgressBar.Path('#hungerText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
// });
|
|
// bar7.set(0)
|
|
// bar7.animate(0.7)
|
|
// var bar8 = new ProgressBar.Path('#staminaText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
//});
|
|
//bar8.set(0)
|
|
//bar8.animate(0.7)
|
|
// var bar9 = new ProgressBar.Path('#stressText', {
|
|
// easing: 'easeInOut',
|
|
// duration: 1400
|
|
//});
|
|
//bar9.set(0)
|
|
//bar9.animate(0.7)
|
|
}
|
|
|
|
/*! SVG Pie Progress Indicator | Ryan Detert | MIT License */
|
|
/*! based on SVG Pie Timer 0.9.1 | Anders Grimsrud, grint.no | github.com/agrimsrud/svgPieTimer.js */
|
|
|
|
// Date.now fix by Ari Fuchs, afuchs.tumblr.com/post/23550124774/date-now-in-ie8
|
|
Date.now = Date.now || function() { return +new Date };
|
|
|
|
function svgPieProgress(props){
|
|
|
|
'use strict';
|
|
|
|
var element = props.element,
|
|
duration = props.duration || 1000,
|
|
endTime = 0,
|
|
totalDuration = 0,
|
|
lastTotalProgress, totalProgress, endProgress,
|
|
currentAngle = 0;
|
|
|
|
if(!element) throw "SVG Pie Progress: Error - element required"
|
|
|
|
this.progress = (props.progress) ? props.progress : 0.0;
|
|
|
|
this.updateProgress = function(progress){
|
|
|
|
// We need to keep track of the current angle in case the progress gets updated
|
|
// before the previous progress animation finishes
|
|
lastTotalProgress = currentAngle / 360;
|
|
var delta = progress - lastTotalProgress;
|
|
|
|
// this is how much extra we have to go for this progress update
|
|
// progress will contain the new value
|
|
// this.progress will contain the saved value from last time
|
|
var segmentDuration = Math.floor(duration * (progress - this.progress));
|
|
|
|
// this is how much we still have left from the previous time (if necessary)
|
|
var timeLeft = Math.floor(duration * ( this.progress - lastTotalProgress ));
|
|
totalDuration = segmentDuration + timeLeft;
|
|
|
|
endTime = Date.now() + totalDuration;
|
|
|
|
this.progress = endProgress = progress;
|
|
frame();
|
|
}
|
|
|
|
function draw(element, angle) {
|
|
var count = element.length;
|
|
|
|
var rad = (angle * Math.PI / 180),
|
|
x = Math.sin(rad) * 125,
|
|
y = Math.cos(rad) * -125,
|
|
mid = (angle > 180) ? 1 : 0,
|
|
shape = 'M 0 0 v -125 A 125 125 1 '
|
|
+ mid + ' 1 '
|
|
+ x + ' '
|
|
+ y + ' z';
|
|
|
|
// If array of elements, draw each one
|
|
|
|
if(element instanceof Array)
|
|
while(count--)
|
|
element[count].setAttribute('d', shape)
|
|
else
|
|
element.setAttribute('d', shape)
|
|
}
|
|
|
|
|
|
function frame() {
|
|
|
|
var currentTime = Date.now(),
|
|
remaining = endTime - currentTime;
|
|
|
|
var currentSegmentProgress = ( 1 - remaining / totalDuration );
|
|
var totalProgress = lastTotalProgress + currentSegmentProgress;
|
|
var newAngle = 360 * totalProgress;
|
|
|
|
// make sure no small jump backwards due to rounding, etc
|
|
if ( newAngle > currentAngle )
|
|
currentAngle = newAngle;
|
|
|
|
|
|
if ( totalProgress >= endProgress ) {
|
|
|
|
currentAngle = 360 * endProgress;
|
|
lastTotalProgress = endProgress;
|
|
|
|
// 360 degrees is the same as 0 degress so it won't look finished if we don't
|
|
// set it back a little
|
|
currentAngle = (endProgress >= 0.999) ? 359.999 : currentAngle;
|
|
|
|
draw(element, currentAngle);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
draw(element, currentAngle);
|
|
|
|
requestAnimationFrame(frame);
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
var progress = {}
|
|
|
|
function init(loaderEl, border, val){
|
|
var loader = document.getElementById(loaderEl),
|
|
border = document.getElementById(border);
|
|
if(progress[loaderEl] == undefined){
|
|
progress[loaderEl] = new svgPieProgress({
|
|
element: [loader, border],
|
|
duration: 400 // total time it would take without stopping from 0-100%
|
|
});
|
|
}
|
|
|
|
progress[loaderEl].updateProgress(val+.0)
|
|
}
|
|
|