diff options
Diffstat (limited to '')
-rw-r--r-- | Scripts/car_behaviour.gd | 3 | ||||
-rw-r--r-- | Scripts/drawing.gd | 28 | ||||
-rw-r--r-- | Scripts/game.gd | 104 | ||||
-rw-r--r-- | Scripts/main_menu.gd | 25 |
4 files changed, 145 insertions, 15 deletions
diff --git a/Scripts/car_behaviour.gd b/Scripts/car_behaviour.gd index d5fc292..2ef9fb9 100644 --- a/Scripts/car_behaviour.gd +++ b/Scripts/car_behaviour.gd @@ -95,8 +95,7 @@ func own_movement(delta): var desired_velocity = chosen_dir.rotated(rotation) * max_speed var actual_speed = lerpf(velocity.length(), max_speed, acceleration) - var actual_angle = lerp_angle(velocity.angle(), desired_velocity.angle(), - steer_force) + var actual_angle = lerp_angle(velocity.angle(), desired_velocity.angle(), steer_force) velocity = Vector2.from_angle(actual_angle) * actual_speed rotation = actual_angle diff --git a/Scripts/drawing.gd b/Scripts/drawing.gd index 2e4af95..51e7f21 100644 --- a/Scripts/drawing.gd +++ b/Scripts/drawing.gd @@ -14,19 +14,21 @@ func _process(delta): func _physics_process(delta): pass + +func _start_drawing(): + line.clear_points() + path.curve.clear_points() + drawing = true + owner.set_driving(false) + + +func _end_drawing(): + drawing = false + owner.set_driving(true) + + func _input(event): - if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: - drawing = event.pressed - if drawing: - # start a new drawing - line.clear_points() - path.curve.clear_points() - owner.set_driving(false) - else: - # start driving - owner.set_driving(true) - - if event is InputEventMouseMotion and drawing: - # extend the line + if drawing and event is InputEventMouseMotion: line.add_point(event.position) path.curve.add_point(event.position) + diff --git a/Scripts/game.gd b/Scripts/game.gd new file mode 100644 index 0000000..bacb709 --- /dev/null +++ b/Scripts/game.gd @@ -0,0 +1,104 @@ +extends Node2D + +const NUM_LEVELS = 3 + +# level control +var current_level_id = 0 +var levels = [] +var post_game = false + +var scenes = [ +# preload("res://Nodes/levels/level1/level1.tscn"), +# preload("res://Nodes/levels/level2/level2.tscn") + preload("res://Nodes/Level_test.tscn") + ] + +# Called when the node enters the scene tree for the first time. +func _ready(): +# $JinglePlayer.stream.loop_mode = AudioStream.LOOP_DISABLED + load_scene_by_index(0) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if Input.is_action_just_pressed("ui_cancel"): + close_scoreboard() + get_tree().paused = true + $PausePopup.show() + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + + +func _on_QuitButton_pressed(): + get_tree().quit() + + +func _on_ResumeButton_pressed(): + print('aaaa') + $PausePopup.hide() + get_tree().paused = false + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + + +func _on_MainMenuButton_pressed(): + get_tree().paused = false + get_tree().change_scene_to_file("res://Nodes/main_menu.tscn") + + +func end_level(): + open_scoreboard() +# evaluate_player(current_strokes, PAR[current_level_id]) + $BGMPLayer.stream_paused = true + $JinglePlayer.play() + post_game = true + + +func open_scoreboard(): +# strokes_per_level[current_level_id] = current_strokes +# $Scoreboard.update_values(strokes_per_level, PAR) +# $Scoreboard.show() + pass + + +func close_scoreboard(): +# $Scoreboard.hide() + pass + + +func is_post_game(): + return post_game + + +func next_level(): + post_game = false + current_level_id += 1 + + if current_level_id >= NUM_LEVELS: + get_tree().change_scene("res://scenes/levels/MainMenu.tscn") + return + + load_scene_by_index(current_level_id) + close_scoreboard() + $Evaluation.hide() + + $BGMPLayer.stream_paused = false + $JinglePlayer.stop() + + +func evaluate_player(strokes, par): + $Evaluation/EvaluationLabel.text = "%d Seconds" % 42 + $Evaluation.show() + + +func _on_JinglePlayer_finished(): + $BGMPLayer.stream_paused = false + + +func load_scene_by_index(index): + # clear level + for n in $LoadedLevel.get_children(): + $LoadedLevel.remove_child(n) + n.queue_free() + + # add new level + var instance = scenes[index].instantiate() + $LoadedLevel.add_child(instance) diff --git a/Scripts/main_menu.gd b/Scripts/main_menu.gd new file mode 100644 index 0000000..3bfe28e --- /dev/null +++ b/Scripts/main_menu.gd @@ -0,0 +1,25 @@ +extends Control + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + + +func _on_StartButton_pressed(): + get_tree().change_scene_to_file("res://Nodes/game.tscn") + + + +func _on_QuitButton_pressed(): + get_tree().quit() |