From 007a526ddfe99f05aa6a14cceb2b534a88c5f8a9 Mon Sep 17 00:00:00 2001 From: testman Date: Tue, 26 Dec 2023 14:31:56 +0100 Subject: [PATCH] draft --- .gitattributes | 2 ++ .gitignore | 2 ++ README.md | 0 game.tscn | 24 ++++++++++++++++++++++++ game_logic.gd | 10 ++++++++++ icon.svg | 1 + icon.svg.import | 37 +++++++++++++++++++++++++++++++++++++ player/player.gd | 43 +++++++++++++++++++++++++++++++++++++++++++ player/player.tscn | 19 +++++++++++++++++++ project.godot | 21 +++++++++++++++++++++ 10 files changed, 159 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 game.tscn create mode 100644 game_logic.gd create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 player/player.gd create mode 100644 player/player.tscn create mode 100644 project.godot diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4709183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/game.tscn b/game.tscn new file mode 100644 index 0000000..3f74524 --- /dev/null +++ b/game.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://ew5kw35yq5og"] + +[ext_resource type="Script" path="res://game_logic.gd" id="1_08qwr"] +[ext_resource type="PackedScene" uid="uid://c3q3kuwyx3wju" path="res://player/player.tscn" id="1_16bpk"] + +[node name="game" type="Node"] + +[node name="game_logic" type="Node" parent="."] +script = ExtResource("1_08qwr") + +[node name="canvas" type="Node2D" parent="."] + +[node name="player" parent="canvas" instance=ExtResource("1_16bpk")] +position = Vector2(187, 188) +rotation = 1.5708 + +[node name="trails" type="Node2D" parent="canvas"] + +[node name="player_trail" type="Node2D" parent="canvas/trails" groups=["player_trail"]] + +[node name="trail_line" type="Line2D" parent="canvas/trails/player_trail" groups=["trail_line"]] +width = 5.0 +default_color = Color(0, 0.360784, 1, 1) +joint_mode = 2 diff --git a/game_logic.gd b/game_logic.gd new file mode 100644 index 0000000..d896ff6 --- /dev/null +++ b/game_logic.gd @@ -0,0 +1,10 @@ +extends Node + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _input(event): + if event.is_action_pressed(&"ui_cancel"): + get_tree().quit() diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..b370ceb --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..b85ac21 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpkj0f25cae3w" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/player/player.gd b/player/player.gd new file mode 100644 index 0000000..b9e1f63 --- /dev/null +++ b/player/player.gd @@ -0,0 +1,43 @@ +extends CharacterBody2D + +var rotation_speed = 0.1 +var movement_speed = 2 +var direction +var player_trail +var trail_line +var previous_position + +var left +var right + +func _ready(): + player_trail = get_tree().get_first_node_in_group(&"player_trail") + trail_line = get_tree().get_first_node_in_group(&"trail_line") + previous_position = $trail_spawner.global_position + +func _physics_process(delta): + left = Input.is_action_pressed(&"ui_left") + right = Input.is_action_pressed(&"ui_right") + # holding down both buttons should do nothing + if left or right: + if left: + rotate(-rotation_speed) + if right: + rotate(rotation_speed) + + direction = Vector2(0, -movement_speed).rotated(rotation) + var collision = move_and_collide(direction) + if collision: + player_trail.queue_free() + queue_free() + trail_line.add_point($trail_spawner.global_position) + var new_collision_segment = StaticBody2D.new() + var new_collision_shape = CollisionShape2D.new() + var new_segment = SegmentShape2D.new() + new_segment.a = previous_position + new_segment.b = $trail_spawner.global_position + new_collision_shape.shape = new_segment + new_collision_segment.add_child(new_collision_shape) + player_trail.add_child(new_collision_segment) + previous_position = $trail_spawner.global_position + diff --git a/player/player.tscn b/player/player.tscn new file mode 100644 index 0000000..611d08c --- /dev/null +++ b/player/player.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=3 uid="uid://c3q3kuwyx3wju"] + +[ext_resource type="Script" path="res://player/player.gd" id="1_rgaqq"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_gaw8f"] +size = Vector2(6, 20) + +[node name="player" type="CharacterBody2D"] +script = ExtResource("1_rgaqq") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_gaw8f") + +[node name="Polygon2D" type="Polygon2D" parent="."] +color = Color(0.0019802, 0.232666, 0.857673, 1) +polygon = PackedVector2Array(-3, -10, -6, 10, 6, 10, 3, -10) + +[node name="trail_spawner" type="Marker2D" parent="."] +position = Vector2(0, 10) diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..2375f4e --- /dev/null +++ b/project.godot @@ -0,0 +1,21 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="curve prototype" +run/main_scene="res://game.tscn" +config/features=PackedStringArray("4.3") +config/icon="res://icon.svg" + +[global_group] + +trail_line="" +player_trail=""