51 lines
1.3 KiB
GDScript
51 lines
1.3 KiB
GDScript
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)
|