using System;
using UnityEditor;
using UnityEngine;

namespace VF {
    public class ProgressBar {
        private string title;
        private double min;
        private double max;

        public ProgressBar(string title, double min = 0, double max = 1) {
            this.title = title;
            this.min = min;
            this.max = max;
        }

        public ProgressBar Partial(double min, double max) {
            return new ProgressBar(title, Lookup(min), Lookup(max));
        }

        private double Lookup(double offset) {
            var o = offset * (max - min) + min;
            if (o > 1) o = 1;
            if (o < 0) o = 0;
            return o;
        }

        public void Progress(double progress, string info) {
            var realProgress = (float)Lookup(progress);
            Debug.Log("Progress (" + Math.Round(realProgress*100) + "%): " + info);
            EditorUtility.DisplayProgressBar(title, info, realProgress);
        }
    }
}
