class_name ProgressStepTracker
extends Object

var _step_name: String = ""
var _message: String = ""
var _subset_index: int = 0
var _subset_count: int = 0

var _tracker: ProgressTracker = null

func _init(tracker: ProgressTracker, step_name: String):
	self._tracker = tracker
	self._step_name = step_name

# set_substeps: set the number of substeps for this step
func set_substeps(substeps: int):
	self._subset_count = substeps

# substep: should be called when a substep is started
func substep(message: String = ""):
	self._subset_index += 1
	self._message = message
	self._tracker.progress_update.emit()

# complete: should be called when this step is done
func complete():
	self._tracker.step_complete.emit()

# get_step_name: get the name of this step
func get_step_name() -> String:
	return self._step_name	

# get_message: get the message for this step
func get_message() -> String:
	return self._message

# get_substep_index: get the index of the current substep
func get_substep_index() -> int:
	return self._subset_index

# get_substep_count: get the number of substeps for this step
func get_substep_count() -> int:
	return self._subset_count

# get_progress: get the progress of this step
func get_progress() -> float:
	if self._subset_count == 0:
		return 0.0
	else:
		return float(self._subset_index) / float(self._subset_count)
