summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorSophia Pearson <codergal89@gmail.com>2026-05-20 09:39:22 +0200
committerSophia Pearson <codergal89@gmail.com>2026-05-20 09:39:22 +0200
commit75c83f4d7a628077d9ec98bfbd674699bfa20529 (patch)
tree092244938ba3f2bf9e4355840e7f65176a6f5e3f /components
downloadmoon-buggy-2d-75c83f4d7a628077d9ec98bfbd674699bfa20529.tar.xz
moon-buggy-2d-75c83f4d7a628077d9ec98bfbd674699bfa20529.zip
initial gdscript rewritedevelop
Diffstat (limited to 'components')
-rw-r--r--components/astronaut.gd8
-rw-r--r--components/astronaut.gd.uid1
-rw-r--r--components/astronaut.tscn12
-rw-r--r--components/buggy.gd8
-rw-r--r--components/buggy.gd.uid1
-rw-r--r--components/buggy.tscn12
-rw-r--r--components/meteor.gd12
-rw-r--r--components/meteor.gd.uid1
-rw-r--r--components/meteor.tscn23
-rw-r--r--components/meteor_spawner.gd36
-rw-r--r--components/meteor_spawner.gd.uid1
-rw-r--r--components/meteor_spawner.tscn19
-rw-r--r--components/space_background.gd27
-rw-r--r--components/space_background.gd.uid1
-rw-r--r--components/space_background.tscn32
15 files changed, 194 insertions, 0 deletions
diff --git a/components/astronaut.gd b/components/astronaut.gd
new file mode 100644
index 0000000..89e0f0d
--- /dev/null
+++ b/components/astronaut.gd
@@ -0,0 +1,8 @@
+extends Node2D
+
+@onready var _sprite = $Sprite
+
+func _ready() -> void:
+ _sprite.animation = "stand"
+ _sprite.frame = 0
+ _sprite.stop()
diff --git a/components/astronaut.gd.uid b/components/astronaut.gd.uid
new file mode 100644
index 0000000..9b83867
--- /dev/null
+++ b/components/astronaut.gd.uid
@@ -0,0 +1 @@
+uid://b3efeqqwpw5ls
diff --git a/components/astronaut.tscn b/components/astronaut.tscn
new file mode 100644
index 0000000..da72e10
--- /dev/null
+++ b/components/astronaut.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://br2mmh866wj88"]
+
+[ext_resource type="SpriteFrames" uid="uid://b0ova5ouowx3l" path="res://assets/spritesheets/astronaut.tres" id="1_6g1vj"]
+[ext_resource type="Script" uid="uid://b3efeqqwpw5ls" path="res://components/astronaut.gd" id="1_7jmex"]
+
+[node name="Astronaut" type="Node2D"]
+script = ExtResource("1_7jmex")
+
+[node name="Sprite" type="AnimatedSprite2D" parent="."]
+texture_filter = 3
+sprite_frames = ExtResource("1_6g1vj")
+animation = &"celebrate"
diff --git a/components/buggy.gd b/components/buggy.gd
new file mode 100644
index 0000000..eb6befa
--- /dev/null
+++ b/components/buggy.gd
@@ -0,0 +1,8 @@
+extends Node2D
+
+@onready var _sprite = $Sprite
+
+func _ready() -> void:
+ _sprite.animation = "idle"
+ _sprite.frame = 0
+ _sprite.play()
diff --git a/components/buggy.gd.uid b/components/buggy.gd.uid
new file mode 100644
index 0000000..7de9514
--- /dev/null
+++ b/components/buggy.gd.uid
@@ -0,0 +1 @@
+uid://clw8wad88k5x3
diff --git a/components/buggy.tscn b/components/buggy.tscn
new file mode 100644
index 0000000..20140ac
--- /dev/null
+++ b/components/buggy.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 format=3 uid="uid://dihkljqd6qmgl"]
+
+[ext_resource type="SpriteFrames" uid="uid://bwh1vdwqpig8o" path="res://assets/spritesheets/buggy.tres" id="1_ordkh"]
+[ext_resource type="Script" uid="uid://clw8wad88k5x3" path="res://components/buggy.gd" id="1_yvbad"]
+
+[node name="Buggy" type="Node2D"]
+script = ExtResource("1_yvbad")
+
+[node name="Sprite" type="AnimatedSprite2D" parent="."]
+texture_filter = 3
+sprite_frames = ExtResource("1_ordkh")
+animation = &"drive"
diff --git a/components/meteor.gd b/components/meteor.gd
new file mode 100644
index 0000000..4ce587d
--- /dev/null
+++ b/components/meteor.gd
@@ -0,0 +1,12 @@
+extends RigidBody2D
+
+@onready var _sprite = $Sprite
+
+func _ready() -> void:
+ _sprite.animation = "fly"
+ _sprite.frame = 0
+ _sprite.play()
+
+func _process(_delta: float) -> void:
+ if not $VisibleOnScreenNotifier2D.is_on_screen():
+ queue_free()
diff --git a/components/meteor.gd.uid b/components/meteor.gd.uid
new file mode 100644
index 0000000..137190c
--- /dev/null
+++ b/components/meteor.gd.uid
@@ -0,0 +1 @@
+uid://cpi64jvpvbdah
diff --git a/components/meteor.tscn b/components/meteor.tscn
new file mode 100644
index 0000000..6b1fdf1
--- /dev/null
+++ b/components/meteor.tscn
@@ -0,0 +1,23 @@
+[gd_scene load_steps=4 format=3 uid="uid://7n650wm14il0"]
+
+[ext_resource type="SpriteFrames" uid="uid://bskfnkqnofmxv" path="res://assets/spritesheets/meteor.tres" id="1_8c42w"]
+[ext_resource type="Script" uid="uid://cpi64jvpvbdah" path="res://components/meteor.gd" id="1_10gax"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_hyb7h"]
+radius = 14.0
+
+[node name="Meteor" type="RigidBody2D"]
+script = ExtResource("1_10gax")
+
+[node name="Sprite" type="AnimatedSprite2D" parent="."]
+texture_filter = 3
+position = Vector2(-2, -55)
+rotation = -0.785398
+sprite_frames = ExtResource("1_8c42w")
+animation = &"fly"
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_hyb7h")
+
+[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
+rect = Rect2(-16, -123, 32, 138)
diff --git a/components/meteor_spawner.gd b/components/meteor_spawner.gd
new file mode 100644
index 0000000..fbdb097
--- /dev/null
+++ b/components/meteor_spawner.gd
@@ -0,0 +1,36 @@
+class_name MeteorSpawner
+extends Path2D
+
+## Whether meteors spawned by this spawner ignore gravity or not.
+@export var ignore_gravity: bool = false
+
+@export_group("Spawning")
+
+## The duration of time, in seconds, that has to pass between consecutive spawn attempts.
+@export_range(0.0, 120, 0.1, "suffix:s") var cooldown: float = 5.0:
+ get:
+ return cooldown
+ set(value):
+ $CooldownTimer.wait_time = value
+ cooldown = value
+
+## The likelihood of actually spawning a meteor once the cooldown has elapsed.
+@export_range(0.0, 1.0) var probability: float = 0.5
+
+const _meteor_scene = preload("res://components/meteor.tscn")
+
+func _ready() -> void:
+ assert(curve.point_count == 2)
+ $SpawnPoint.progress_ratio = 0
+ $CooldownTimer.wait_time = cooldown
+ $CooldownTimer.start()
+
+func _try_to_spawn() -> void:
+ if(randf() > probability):
+ return
+
+ $SpawnPoint.progress_ratio = randf()
+ var meteor = _meteor_scene.instantiate()
+ add_child(meteor)
+
+ meteor.position = $SpawnPoint.position
diff --git a/components/meteor_spawner.gd.uid b/components/meteor_spawner.gd.uid
new file mode 100644
index 0000000..06fd02d
--- /dev/null
+++ b/components/meteor_spawner.gd.uid
@@ -0,0 +1 @@
+uid://doy4iee5r1fsb
diff --git a/components/meteor_spawner.tscn b/components/meteor_spawner.tscn
new file mode 100644
index 0000000..be90180
--- /dev/null
+++ b/components/meteor_spawner.tscn
@@ -0,0 +1,19 @@
+[gd_scene load_steps=3 format=3 uid="uid://b5aceskalmit7"]
+
+[ext_resource type="Script" uid="uid://doy4iee5r1fsb" path="res://components/meteor_spawner.gd" id="1_a0n2t"]
+
+[sub_resource type="Curve2D" id="Curve2D_ia26v"]
+_data = {
+"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1280, 0)
+}
+point_count = 2
+
+[node name="MeteorSpawner" type="Path2D"]
+curve = SubResource("Curve2D_ia26v")
+script = ExtResource("1_a0n2t")
+
+[node name="CooldownTimer" type="Timer" parent="."]
+
+[node name="SpawnPoint" type="PathFollow2D" parent="."]
+
+[connection signal="timeout" from="CooldownTimer" to="." method="_try_to_spawn"]
diff --git a/components/space_background.gd b/components/space_background.gd
new file mode 100644
index 0000000..b1e4ec0
--- /dev/null
+++ b/components/space_background.gd
@@ -0,0 +1,27 @@
+extends Node2D
+
+@export var autoscroll: bool = false:
+ set(value):
+ autoscroll = value
+ $Space.autoscroll.x = int(value) * 5
+ $Stars.autoscroll.x = int(value) * 7
+
+@export_enum("Blue", "Purple") var theme: int = 0:
+ set(value):
+ theme = value
+ apply_theme(theme)
+
+func _ready() -> void:
+ apply_theme(theme)
+
+func apply_theme(id: int) -> void:
+ match id:
+ 0:
+ $Space/Blue.visible = true
+ $Stars/Blue.visible = true
+ 1:
+ $Space/Blue.visible = false
+ $Stars/Blue.visible = false
+ $Space/Purple.visible = not $Space/Blue.visible
+ $Stars/Purple.visible = not $Stars/Blue.visible
+
diff --git a/components/space_background.gd.uid b/components/space_background.gd.uid
new file mode 100644
index 0000000..887ff32
--- /dev/null
+++ b/components/space_background.gd.uid
@@ -0,0 +1 @@
+uid://ybcadaoxm4rq
diff --git a/components/space_background.tscn b/components/space_background.tscn
new file mode 100644
index 0000000..85307c9
--- /dev/null
+++ b/components/space_background.tscn
@@ -0,0 +1,32 @@
+[gd_scene load_steps=6 format=3 uid="uid://bkpids4l5roy3"]
+
+[ext_resource type="Script" uid="uid://ybcadaoxm4rq" path="res://components/space_background.gd" id="1_gqvc1"]
+[ext_resource type="Texture2D" uid="uid://cfkl3i6txy8na" path="res://assets/backgrounds/space_purple.png" id="1_stfb6"]
+[ext_resource type="Texture2D" uid="uid://gjjvdhpw6e7u" path="res://assets/backgrounds/stars_purple.png" id="2_wb1py"]
+[ext_resource type="Texture2D" uid="uid://bew8m2r1bb4y0" path="res://assets/backgrounds/space_blue.png" id="2_wdsn8"]
+[ext_resource type="Texture2D" uid="uid://er80b3t7dkhf" path="res://assets/backgrounds/stars_blue.png" id="4_kbbb8"]
+
+[node name="SpaceBackground" type="Node2D"]
+script = ExtResource("1_gqvc1")
+
+[node name="Space" type="Parallax2D" parent="."]
+repeat_size = Vector2(1024, 0)
+
+[node name="Blue" type="Sprite2D" parent="Space"]
+texture = ExtResource("2_wdsn8")
+centered = false
+
+[node name="Purple" type="Sprite2D" parent="Space"]
+texture = ExtResource("1_stfb6")
+centered = false
+
+[node name="Stars" type="Parallax2D" parent="."]
+repeat_size = Vector2(1024, 0)
+
+[node name="Blue" type="Sprite2D" parent="Stars"]
+texture = ExtResource("4_kbbb8")
+centered = false
+
+[node name="Purple" type="Sprite2D" parent="Stars"]
+texture = ExtResource("2_wb1py")
+centered = false