SpaceClient/Scripts/Plan.gd

43 lines
1.1 KiB
GDScript

class_name Plan
const TURN_TIME : float = 5.0
var elements = [] # All elements of the plan thus far
var current_elements = [] # All elements of the next 5 seconds
func current_time() -> float:
var total_time : float = 0.0
for current_element in current_elements:
var _element : PlanElement = (current_element as PlanElement)
total_time += _element.time
return total_time
func add_element(element : PlanElement) -> bool:
var total_time : float = self.current_time()
if total_time + element.time > TURN_TIME:
return false
current_elements.append(element)
return true
func remove_last_element() -> void:
current_elements.pop_back()
func remove_all_elements() -> void:
current_elements.clear()
func new_turn() -> void:
for current_element in current_elements:
elements.push_back(current_elements.pop_front())
func sanity_check() -> bool:
# Returns true if sane and false if insane
var total_time : float = 0.0
for current_element in current_elements:
var element : PlanElement = (current_element as PlanElement)
total_time += element.time
if !element.sanity_check():
return false
if total_time > TURN_TIME:
return false
return true