From 71093b29f0be0171fe5559e6e13589597ba42763 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 16 Jan 2026 23:22:25 -0500 Subject: [PATCH] initial commit --- .editorconfig | 4 ++++ .gitattributes | 2 ++ .gitignore | 3 +++ debug_label.gd | 38 ++++++++++++++++++++++++++++++++++++++ debug_label.gd.uid | 1 + debug_label.tscn | 14 ++++++++++++++ icon.svg | 1 + icon.svg.import | 43 +++++++++++++++++++++++++++++++++++++++++++ main.tscn | 22 ++++++++++++++++++++++ player.gd | 39 +++++++++++++++++++++++++++++++++++++++ player.gd.uid | 1 + player.tscn | 41 +++++++++++++++++++++++++++++++++++++++++ project.godot | 43 +++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 252 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 debug_label.gd create mode 100644 debug_label.gd.uid create mode 100644 debug_label.tscn create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 main.tscn create mode 100644 player.gd create mode 100644 player.gd.uid create mode 100644 player.tscn create mode 100644 project.godot diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 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..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/debug_label.gd b/debug_label.gd new file mode 100644 index 0000000..dce5dd3 --- /dev/null +++ b/debug_label.gd @@ -0,0 +1,38 @@ +@tool +#@icon +class_name DebugLabel +extends HBoxContainer +## Easy-to-use(?) container for visualizing variables + +## Signals +## Enums +## Constants +## @export variables +@export var target: Node ## The Node this label applies to (usually its parent) +@export var variable_name: String ## The variable this label displays; check spelling and casing +## Regular variables +## @onready variables +@onready var title_label: Label = $TitleLabel +@onready var value_label: Label = $ValueLabel + +## Overridden built-in virtual methods +#func _init() -> void: +#func _enter_tree() -> void: +func _ready() -> void: + title_label.text = variable_name.capitalize() + ": " + add_child(title_label) + add_child(value_label) + + +func _process(_delta: float) -> void: + if not Engine.is_editor_hint(): + if target: + if variable_name: + var value = target.get(variable_name) + value_label.text = str(value) + +#func _physics_process(delta: float) -> void: +## Remaining virtual methods +## Overridden custom methods +## Remaining methods +## Subclasses diff --git a/debug_label.gd.uid b/debug_label.gd.uid new file mode 100644 index 0000000..e96d78c --- /dev/null +++ b/debug_label.gd.uid @@ -0,0 +1 @@ +uid://1txbj5djbkq0 diff --git a/debug_label.tscn b/debug_label.tscn new file mode 100644 index 0000000..6a5b885 --- /dev/null +++ b/debug_label.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3 uid="uid://bsmtdok8be7d8"] + +[ext_resource type="Script" uid="uid://1txbj5djbkq0" path="res://debug_label.gd" id="1_0rxpk"] + +[node name="DebugLabel" type="HBoxContainer"] +script = ExtResource("1_0rxpk") + +[node name="TitleLabel" type="Label" parent="."] +layout_mode = 2 +text = "VariableName: " + +[node name="ValueLabel" type="Label" parent="."] +layout_mode = 2 +text = "##somevalue##" diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..9a7b04a --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://croowm1661ut1" +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/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/main.tscn b/main.tscn new file mode 100644 index 0000000..b3e8dc3 --- /dev/null +++ b/main.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=3 uid="uid://dkt8o6fkbh5u"] + +[ext_resource type="PackedScene" uid="uid://dyerg4wkjmayq" path="res://player.tscn" id="1_ig7tw"] + +[sub_resource type="Gradient" id="Gradient_7dm0k"] +interpolation_mode = 2 +colors = PackedColorArray(0.27022192, 0.27022192, 0.2702219, 1, 0.5290667, 0.52906674, 0.5290664, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_ig7tw"] +gradient = SubResource("Gradient_7dm0k") +width = 1024 +height = 1024 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.55, 0.55) +repeat = 2 + +[node name="Main" type="Node2D"] + +[node name="Background1" type="Sprite2D" parent="."] +texture = SubResource("GradientTexture2D_ig7tw") + +[node name="Player" parent="." instance=ExtResource("1_ig7tw")] diff --git a/player.gd b/player.gd new file mode 100644 index 0000000..742a2c4 --- /dev/null +++ b/player.gd @@ -0,0 +1,39 @@ +#@tool +#@icon +#class_name +extends CharacterBody2D +## Top-down player controller + +## Signals +## Enums +## Constants +## @export variables +@export var speed: int = 100 +@export var turning_speed: float = 0.1 +## Regular variables +var thrust: float = 0.0 +var rudder: float = 0.0 +var yaw +var heading: Vector2 = Vector2.UP +## @onready variables + +## Overridden built-in virtual methods +#func _init() -> void: +#func _enter_tree() -> void: +#func _ready() -> void: +#func _process(_delta: float) -> void: + +func _physics_process(_delta: float) -> void: + thrust = Input.get_axis("backward", "forward") + rudder = Input.get_axis("turn_left", "turn_right") + yaw = rudder * turning_speed + + heading = heading.rotated(yaw) + rotate(yaw) + + velocity = thrust * heading * speed + move_and_slide() +## Remaining virtual methods +## Overridden custom methods +## Remaining methods +## Subclasses diff --git a/player.gd.uid b/player.gd.uid new file mode 100644 index 0000000..61dde54 --- /dev/null +++ b/player.gd.uid @@ -0,0 +1 @@ +uid://cmggbqdffjgwf diff --git a/player.tscn b/player.tscn new file mode 100644 index 0000000..a030c9e --- /dev/null +++ b/player.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=3 format=3 uid="uid://dyerg4wkjmayq"] + +[ext_resource type="Script" uid="uid://cmggbqdffjgwf" path="res://player.gd" id="1_4flbx"] +[ext_resource type="PackedScene" uid="uid://bsmtdok8be7d8" path="res://debug_label.tscn" id="3_i3pqv"] + +[node name="Player" type="CharacterBody2D"] +motion_mode = 1 +script = ExtResource("1_4flbx") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +position = Vector2(0, -0.16666603) +polygon = PackedVector2Array(0, -20, 10, 15, 0, 5, -10, 15) + +[node name="Camera2D" type="Camera2D" parent="."] +zoom = Vector2(4, 4) + +[node name="PlayerDebug" type="CanvasLayer" parent="."] + +[node name="VBoxContainer" type="VBoxContainer" parent="PlayerDebug"] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="ThrustLabel" parent="PlayerDebug/VBoxContainer" node_paths=PackedStringArray("target") instance=ExtResource("3_i3pqv")] +layout_mode = 2 +target = NodePath("../../..") +variable_name = "thrust" + +[node name="RudderLabel" parent="PlayerDebug/VBoxContainer" node_paths=PackedStringArray("target") instance=ExtResource("3_i3pqv")] +layout_mode = 2 +target = NodePath("../../..") +variable_name = "rudder" + +[node name="YawLabel" parent="PlayerDebug/VBoxContainer" node_paths=PackedStringArray("target") instance=ExtResource("3_i3pqv")] +layout_mode = 2 +target = NodePath("../../..") +variable_name = "yaw" + +[node name="HeadingLabel" parent="PlayerDebug/VBoxContainer" node_paths=PackedStringArray("target") instance=ExtResource("3_i3pqv")] +layout_mode = 2 +target = NodePath("../../..") +variable_name = "heading" diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..1b4c090 --- /dev/null +++ b/project.godot @@ -0,0 +1,43 @@ +; 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="trijam-355-inconvenient-superpowers" +run/main_scene="uid://dkt8o6fkbh5u" +config/features=PackedStringArray("4.5", "Forward Plus") +config/icon="res://icon.svg" + +[input] + +forward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +backward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +turn_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +turn_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +}