From 516e9d537b17f24f042ebfe9e213c86f54172d66 Mon Sep 17 00:00:00 2001 From: gitea Date: Fri, 2 May 2025 12:19:58 -0500 Subject: [PATCH] Receiver works, probably --- common/energy/energy_acceptor.gd | 8 +++++ common/energy/energy_acceptor.gd.uid | 1 + energy_atlas.png | Bin 0 -> 147 bytes energy_atlas.png.import | 34 ++++++++++++++++++ entities/deflector/deflector.gd | 2 +- entities/emitter/emitter.tscn | 24 +++---------- entities/energy_flow/energy_flow.aseprite | Bin 0 -> 713 bytes .../energy_flow/energy_flow.aseprite.import | 30 ++++++++++++++++ .../energy_flow_atlas_texture.tres | 3 ++ entities/energy_flow/energy_flow_line.gd | 30 +++++++++++++--- entities/receiver/receiver.gd | 1 + entities/receiver/receiver.tscn | 23 ++++++++++-- entities/receiver/receiver_energy_acceptor.gd | 9 +++++ .../receiver/receiver_energy_acceptor.gd.uid | 1 + worlds/World 1.tscn | 7 +--- 15 files changed, 139 insertions(+), 34 deletions(-) create mode 100644 common/energy/energy_acceptor.gd create mode 100644 common/energy/energy_acceptor.gd.uid create mode 100644 energy_atlas.png create mode 100644 energy_atlas.png.import create mode 100644 entities/energy_flow/energy_flow.aseprite create mode 100644 entities/energy_flow/energy_flow.aseprite.import create mode 100644 entities/energy_flow/energy_flow_atlas_texture.tres create mode 100644 entities/receiver/receiver_energy_acceptor.gd create mode 100644 entities/receiver/receiver_energy_acceptor.gd.uid diff --git a/common/energy/energy_acceptor.gd b/common/energy/energy_acceptor.gd new file mode 100644 index 0000000..b8b1116 --- /dev/null +++ b/common/energy/energy_acceptor.gd @@ -0,0 +1,8 @@ +extends Node2D +class_name EnergyAcceptor + +func energize(energy: float, position: Vector2): + print("Energy received: ", energy) + +func deplete(): + print("Depleted") diff --git a/common/energy/energy_acceptor.gd.uid b/common/energy/energy_acceptor.gd.uid new file mode 100644 index 0000000..83e8786 --- /dev/null +++ b/common/energy/energy_acceptor.gd.uid @@ -0,0 +1 @@ +uid://dlvp76hruxh7u diff --git a/energy_atlas.png b/energy_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..33f5beb6ea372acee04ecbb6a6d3611d4878e9a7 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^4nWMq!3HERecpW%NHG=%xjQkeJ16rJ$no`baSZY3 zOiqwsU7R4&!z9yC{&CZP=9A0W6I{e2^tL~ void: func _on_interaction_area_body_exited(body: Player) -> void: body.interaction_target = null -func interact(): +func interact(player: Player): pass diff --git a/entities/emitter/emitter.tscn b/entities/emitter/emitter.tscn index a6f5ed1..2cf78bf 100644 --- a/entities/emitter/emitter.tscn +++ b/entities/emitter/emitter.tscn @@ -1,19 +1,10 @@ -[gd_scene load_steps=8 format=3 uid="uid://cayxfaqxv0irg"] +[gd_scene load_steps=7 format=3 uid="uid://cayxfaqxv0irg"] [ext_resource type="Script" uid="uid://cxtlguregjv8m" path="res://entities/emitter/emitter.gd" id="1_n2sjg"] [ext_resource type="Texture2D" uid="uid://cnad2jlo5hr1l" path="res://entities/emitter/emitter.aseprite" id="2_m4shj"] +[ext_resource type="PackedScene" uid="uid://dpgncxhv41apt" path="res://entities/energy_flow/energy_flow_line.tscn" id="3_6vwrl"] [ext_resource type="Script" uid="uid://dryjau28sybgd" path="res://common/interactable_body.gd" id="3_n2sjg"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_n2sjg"] -size = Vector2(4, 3) - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_6vwrl"] -particle_flag_disable_z = true -spread = 1.0 -initial_velocity_min = 275.86 -initial_velocity_max = 325.0 -gravity = Vector3(0, 0, 0) - [sub_resource type="CircleShape2D" id="CircleShape2D_m4shj"] radius = 32.0 @@ -27,15 +18,8 @@ metadata/_custom_type_script = "uid://csbip0oj1uu0j" [node name="Sprite2D" type="Sprite2D" parent="."] texture = ExtResource("2_m4shj") -[node name="GPUParticles2D" type="GPUParticles2D" parent="."] -position = Vector2(13, 0) -texture = SubResource("PlaceholderTexture2D_n2sjg") -process_material = SubResource("ParticleProcessMaterial_6vwrl") - -[node name="Line2D" type="Line2D" parent="."] -points = PackedVector2Array(0, 0, 300, 0) -width = 3.0 -default_color = Color(1, 0.180392, 1, 1) +[node name="EnergyFlowLine" parent="." instance=ExtResource("3_6vwrl")] +maximum_flow_distance = 313.0 [node name="Area2D" type="Area2D" parent="."] diff --git a/entities/energy_flow/energy_flow.aseprite b/entities/energy_flow/energy_flow.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..fccebaf44a6d7fc5e231b61b6e8b93ff217d3576 GIT binary patch literal 713 zcmX@f#K7=iDGP%F0|yW@GB7Zt05Jl1Fff7y83cfk79a^|`mc{HU|U&$7Ki~cy8_rs zB@5$pk6VHApi21%F^A%OL6I>#D1za|X z+;T))e->5zKcDe3Nu0uyd>On=BS{TlP+ovgEGbIcCqoh|G)TY6IbE>oLB>e8p= z1up7v+_YqQ=*E1_mvv_V$LtvH@+N(ui51cd void: var target_position := Vector2(maximum_flow_distance, 0) @@ -14,10 +18,28 @@ func _ready() -> void: ray_cast.target_position = target_position func _process(delta: float) -> void: - energy_line.clear_points() if ray_cast.is_colliding(): + if not ray_cast.get_collider() == energy_distribution_target: + if target_accepting_energy: target_accepting_energy.deplete() + energy_distribution_target = ray_cast.get_collider() + _find_energy_acceptor(energy_distribution_target) + energy_line.clear_points() energy_line.add_point(Vector2.ZERO) - energy_line.add_point(ray_cast.get_collision_point() - global_position) - else : + energy_line.add_point(Vector2(global_position.distance_to(ray_cast.get_collision_point()), 0)) + if target_accepting_energy: + target_accepting_energy.energize(energy * delta, ray_cast.get_collision_point()) + elif energy_distribution_target : + energy_distribution_target = null + if target_accepting_energy: + target_accepting_energy.deplete() + target_accepting_energy = null + energy_line.clear_points() energy_line.add_point(Vector2.ZERO) energy_line.add_point(Vector2(maximum_flow_distance, 0)) + +func _find_energy_acceptor(node: Node): + for child in node.get_children(): + if child is EnergyAcceptor: + target_accepting_energy = child + return + target_accepting_energy = null diff --git a/entities/receiver/receiver.gd b/entities/receiver/receiver.gd index 09a878c..014ecd1 100644 --- a/entities/receiver/receiver.gd +++ b/entities/receiver/receiver.gd @@ -1,4 +1,5 @@ extends Interactable +class_name Receiver func _on_interaction_area_body_entered(body: Player) -> void: body.interaction_target = self diff --git a/entities/receiver/receiver.tscn b/entities/receiver/receiver.tscn index 1b0c1e2..8a25349 100644 --- a/entities/receiver/receiver.tscn +++ b/entities/receiver/receiver.tscn @@ -1,11 +1,28 @@ -[gd_scene load_steps=3 format=3 uid="uid://fo3xwyve7i5p"] +[gd_scene load_steps=6 format=3 uid="uid://fo3xwyve7i5p"] -[ext_resource type="Script" uid="uid://csbip0oj1uu0j" path="res://common/interactable.gd" id="1_iliiv"] +[ext_resource type="Script" uid="uid://bsmung6fgm53e" path="res://entities/receiver/receiver.gd" id="1_ufwo3"] [ext_resource type="Texture2D" uid="uid://bpp73e14xkavd" path="res://entities/receiver/receiver.aseprite" id="2_iyevf"] +[ext_resource type="Script" uid="uid://dryjau28sybgd" path="res://common/interactable_body.gd" id="3_iyevf"] +[ext_resource type="Script" uid="uid://ca1xtf0wra515" path="res://entities/receiver/receiver_energy_acceptor.gd" id="4_ufwo3"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ufwo3"] +size = Vector2(26, 26) [node name="Receiver" type="Node2D"] -script = ExtResource("1_iliiv") +script = ExtResource("1_ufwo3") metadata/_custom_type_script = "uid://csbip0oj1uu0j" [node name="Sprite2D" type="Sprite2D" parent="."] texture = ExtResource("2_iyevf") + +[node name="InteractableBody" type="StaticBody2D" parent="."] +script = ExtResource("3_iyevf") +metadata/_custom_type_script = "uid://dryjau28sybgd" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="InteractableBody"] +shape = SubResource("RectangleShape2D_ufwo3") + +[node name="EnergyAcceptor" type="Node2D" parent="InteractableBody" node_paths=PackedStringArray("receiver")] +script = ExtResource("4_ufwo3") +receiver = NodePath("../..") +metadata/_custom_type_script = "uid://dlvp76hruxh7u" diff --git a/entities/receiver/receiver_energy_acceptor.gd b/entities/receiver/receiver_energy_acceptor.gd new file mode 100644 index 0000000..5ee8a4d --- /dev/null +++ b/entities/receiver/receiver_energy_acceptor.gd @@ -0,0 +1,9 @@ +extends EnergyAcceptor + +@export var receiver: Receiver + +func energize(energy: float, position: Vector2): + receiver.modulate = Color.GREEN + +func deplete(): + receiver.modulate = Color.WHITE diff --git a/entities/receiver/receiver_energy_acceptor.gd.uid b/entities/receiver/receiver_energy_acceptor.gd.uid new file mode 100644 index 0000000..7b7a194 --- /dev/null +++ b/entities/receiver/receiver_energy_acceptor.gd.uid @@ -0,0 +1 @@ +uid://ca1xtf0wra515 diff --git a/worlds/World 1.tscn b/worlds/World 1.tscn index fe469b3..bc194d6 100644 --- a/worlds/World 1.tscn +++ b/worlds/World 1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=4 uid="uid://bopet83k23n7t"] +[gd_scene load_steps=12 format=4 uid="uid://bopet83k23n7t"] [ext_resource type="Texture2D" uid="uid://134x6njync81" path="res://entities/terrain/grass/grass.aseprite" id="1_vd0v3"] [ext_resource type="PackedScene" uid="uid://cprggjrluc751" path="res://entities/player/player.tscn" id="2_8t5gy"] @@ -7,7 +7,6 @@ [ext_resource type="PackedScene" uid="uid://cayxfaqxv0irg" path="res://entities/emitter/emitter.tscn" id="4_6qmhn"] [ext_resource type="PackedScene" uid="uid://docbcbiad4ghy" path="res://entities/deflector/deflector.tscn" id="5_wjxv1"] [ext_resource type="PackedScene" uid="uid://fo3xwyve7i5p" path="res://entities/receiver/receiver.tscn" id="6_vcuff"] -[ext_resource type="PackedScene" uid="uid://dpgncxhv41apt" path="res://entities/energy_flow/energy_flow_line.tscn" id="8_2l688"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_6qmhn"] texture = ExtResource("1_vd0v3") @@ -253,7 +252,3 @@ position = Vector2(246, 148) [node name="Receiver" parent="." instance=ExtResource("6_vcuff")] position = Vector2(264, 23) - -[node name="EnergyFlowLine" parent="." instance=ExtResource("8_2l688")] -position = Vector2(-65, 89) -maximum_flow_distance = 473.0