extends Node var cooldown:int = 0 func _determine_seconds_left() -> float: var difficulty_calc:float = 20-float(GLOBALVARS.difficulty) return difficulty_calc if difficulty_calc >= 3.0 else 3.0 func _on_answer_text_submitted(_new_text: String) -> void: if GLOBALVARS.current_solution == (%ANSWER.text).to_int(): GLOBALVARS.selected_player = (GLOBALVARS.selected_player+1)%4 GLOBALVARS.difficulty+=1 GLOBALVARS.seconds_left = _determine_seconds_left() _generate_question() %ANSWER.text = "" else: %RULE_ENFORCEMENT.explode() cooldown = 60 GLOBALVARS.rotation_paused = true GLOBALVARS.players_remaining.erase(GLOBALVARS.selected_player) get_node("players/player_%s" % GLOBALVARS.selected_player).queue_free() func _generate_question() -> void: # 0 - add # 1 - subtract # 2 - multiply # 3 - divide var x:int = randi_range(1,100) var y:int = randi_range(1,100) var rand_int:int = randi_range(0,3) if rand_int == 0: GLOBALVARS.current_solution = x+y GLOBALVARS.current_operand = "+" elif rand_int == 1: GLOBALVARS.current_solution = x-y GLOBALVARS.current_operand = "-" elif rand_int == 2: x = randi_range(0,10) # simplify multiplication y = randi_range(0,10) GLOBALVARS.current_solution = x*y GLOBALVARS.current_operand = "*" elif rand_int == 3: GLOBALVARS.current_operand = "/" while x%y != 0: # keep going til the remainder is 0 x = randi_range(0,100) y = randi_range(1,100) @warning_ignore('integer_division') GLOBALVARS.current_solution = x/y %QUESTION.text = "%s %s %s = " % [x,GLOBALVARS.current_operand,y] func _ready() -> void: GLOBALVARS.seconds_left = _determine_seconds_left() _generate_question() func _physics_process(_delta: float) -> void: if not GLOBALVARS.rotation_paused: GLOBALVARS.seconds_left -= 0.01666666667 if GLOBALVARS.selected_player == 0: %ANSWER.editable = true else: %ANSWER.editable = false if GLOBALVARS.seconds_left <= 0: %RULE_ENFORCEMENT.explode() cooldown = 60 GLOBALVARS.seconds_left = _determine_seconds_left() GLOBALVARS.rotation_paused = true if GLOBALVARS.selected_player in GLOBALVARS.players_remaining: GLOBALVARS.players_remaining.erase(GLOBALVARS.selected_player) get_node("players/player_%s" % GLOBALVARS.selected_player).queue_free() if cooldown <= 0 and GLOBALVARS.rotation_paused: if len(GLOBALVARS.players_remaining) > 1 and 0 in GLOBALVARS.players_remaining: while GLOBALVARS.selected_player not in GLOBALVARS.players_remaining: GLOBALVARS.selected_player = (GLOBALVARS.selected_player+1)%4 _generate_question() elif 0 in GLOBALVARS.players_remaining: pass # WIN CONDITION else: get_tree().change_scene_to_file("res://main_scenes/menu.tscn") GLOBALVARS.rotation_paused = false %RULE_ENFORCEMENT.reset_rule_enforcement_device() elif GLOBALVARS.rotation_paused: cooldown -= 1