Receiver works, probably
This commit is contained in:
8
common/energy/energy_acceptor.gd
Normal file
8
common/energy/energy_acceptor.gd
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
extends Node2D
|
||||||
|
class_name EnergyAcceptor
|
||||||
|
|
||||||
|
func energize(energy: float, position: Vector2):
|
||||||
|
print("Energy received: ", energy)
|
||||||
|
|
||||||
|
func deplete():
|
||||||
|
print("Depleted")
|
||||||
1
common/energy/energy_acceptor.gd.uid
Normal file
1
common/energy/energy_acceptor.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dlvp76hruxh7u
|
||||||
BIN
energy_atlas.png
Normal file
BIN
energy_atlas.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 147 B |
34
energy_atlas.png.import
Normal file
34
energy_atlas.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c043h8q16i6eh"
|
||||||
|
path="res://.godot/imported/energy_atlas.png-388084ae9af008cd62ff73c3768934c0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://energy_atlas.png"
|
||||||
|
dest_files=["res://.godot/imported/energy_atlas.png-388084ae9af008cd62ff73c3768934c0.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
|
||||||
@@ -6,5 +6,5 @@ func _on_interaction_area_body_entered(body: Player) -> void:
|
|||||||
func _on_interaction_area_body_exited(body: Player) -> void:
|
func _on_interaction_area_body_exited(body: Player) -> void:
|
||||||
body.interaction_target = null
|
body.interaction_target = null
|
||||||
|
|
||||||
func interact():
|
func interact(player: Player):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -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="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="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"]
|
[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"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_m4shj"]
|
||||||
radius = 32.0
|
radius = 32.0
|
||||||
|
|
||||||
@@ -27,15 +18,8 @@ metadata/_custom_type_script = "uid://csbip0oj1uu0j"
|
|||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
texture = ExtResource("2_m4shj")
|
texture = ExtResource("2_m4shj")
|
||||||
|
|
||||||
[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
|
[node name="EnergyFlowLine" parent="." instance=ExtResource("3_6vwrl")]
|
||||||
position = Vector2(13, 0)
|
maximum_flow_distance = 313.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="Area2D" type="Area2D" parent="."]
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
|
|
||||||
|
|||||||
BIN
entities/energy_flow/energy_flow.aseprite
Normal file
BIN
entities/energy_flow/energy_flow.aseprite
Normal file
Binary file not shown.
30
entities/energy_flow/energy_flow.aseprite.import
Normal file
30
entities/energy_flow/energy_flow.aseprite.import
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="Aseprite Sprite sheet (JSON)"
|
||||||
|
type="JSON"
|
||||||
|
uid="uid://bfoujcalueter"
|
||||||
|
path="res://.godot/imported/energy_flow.aseprite-eb6a9972110bec4c01ba5ba517515d8a.res"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/energy_flow/energy_flow.aseprite"
|
||||||
|
dest_files=["res://.godot/imported/energy_flow.aseprite-eb6a9972110bec4c01ba5ba517515d8a.res"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
animation/default/name="default"
|
||||||
|
animation/default/direction=0
|
||||||
|
animation/default/repeat_count=0
|
||||||
|
animation/autoplay_name=""
|
||||||
|
atlas_textures/region_filter_clip_enabled=false
|
||||||
|
animation/merge_equal_sonsequent_frames=true
|
||||||
|
animation/flatten_repetition=true
|
||||||
|
middle_import_script=""
|
||||||
|
post_import_script=""
|
||||||
|
sprite_sheet/edges_artifacts_avoidance_method=0
|
||||||
|
sprite_sheet/sprites_surrounding_color=Color(1, 1, 1, 0)
|
||||||
|
sprite_sheet/layout=0
|
||||||
|
sprite_sheet/max_cells_in_strip=0
|
||||||
|
sprite_sheet/trim_sprites_to_overall_min_size=true
|
||||||
|
sprite_sheet/collapse_transparent_sprites=true
|
||||||
|
sprite_sheet/merge_duplicated_sprites=true
|
||||||
3
entities/energy_flow/energy_flow_atlas_texture.tres
Normal file
3
entities/energy_flow/energy_flow_atlas_texture.tres
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[gd_resource type="AtlasTexture" format=3 uid="uid://dwer5p1ooqv2c"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
@@ -3,7 +3,11 @@ extends Node2D
|
|||||||
@onready var energy_line: Line2D = %EnergyLine
|
@onready var energy_line: Line2D = %EnergyLine
|
||||||
@onready var ray_cast: RayCast2D = %RayCast
|
@onready var ray_cast: RayCast2D = %RayCast
|
||||||
|
|
||||||
@export_range(1,999,8) var maximum_flow_distance: float
|
@export_range(1,999,1) var maximum_flow_distance: float = 300
|
||||||
|
@export var energy: float = 1.0
|
||||||
|
|
||||||
|
var energy_distribution_target: CollisionObject2D
|
||||||
|
var target_accepting_energy: EnergyAcceptor
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var target_position := Vector2(maximum_flow_distance, 0)
|
var target_position := Vector2(maximum_flow_distance, 0)
|
||||||
@@ -14,10 +18,28 @@ func _ready() -> void:
|
|||||||
ray_cast.target_position = target_position
|
ray_cast.target_position = target_position
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
energy_line.clear_points()
|
|
||||||
if ray_cast.is_colliding():
|
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(Vector2.ZERO)
|
||||||
energy_line.add_point(ray_cast.get_collision_point() - global_position)
|
energy_line.add_point(Vector2(global_position.distance_to(ray_cast.get_collision_point()), 0))
|
||||||
else :
|
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.ZERO)
|
||||||
energy_line.add_point(Vector2(maximum_flow_distance, 0))
|
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
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
extends Interactable
|
extends Interactable
|
||||||
|
class_name Receiver
|
||||||
|
|
||||||
func _on_interaction_area_body_entered(body: Player) -> void:
|
func _on_interaction_area_body_entered(body: Player) -> void:
|
||||||
body.interaction_target = self
|
body.interaction_target = self
|
||||||
|
|||||||
@@ -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="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"]
|
[node name="Receiver" type="Node2D"]
|
||||||
script = ExtResource("1_iliiv")
|
script = ExtResource("1_ufwo3")
|
||||||
metadata/_custom_type_script = "uid://csbip0oj1uu0j"
|
metadata/_custom_type_script = "uid://csbip0oj1uu0j"
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
texture = ExtResource("2_iyevf")
|
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"
|
||||||
|
|||||||
9
entities/receiver/receiver_energy_acceptor.gd
Normal file
9
entities/receiver/receiver_energy_acceptor.gd
Normal file
@@ -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
|
||||||
1
entities/receiver/receiver_energy_acceptor.gd.uid
Normal file
1
entities/receiver/receiver_energy_acceptor.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ca1xtf0wra515
|
||||||
@@ -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="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"]
|
[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://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://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://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"]
|
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_6qmhn"]
|
||||||
texture = ExtResource("1_vd0v3")
|
texture = ExtResource("1_vd0v3")
|
||||||
@@ -253,7 +252,3 @@ position = Vector2(246, 148)
|
|||||||
|
|
||||||
[node name="Receiver" parent="." instance=ExtResource("6_vcuff")]
|
[node name="Receiver" parent="." instance=ExtResource("6_vcuff")]
|
||||||
position = Vector2(264, 23)
|
position = Vector2(264, 23)
|
||||||
|
|
||||||
[node name="EnergyFlowLine" parent="." instance=ExtResource("8_2l688")]
|
|
||||||
position = Vector2(-65, 89)
|
|
||||||
maximum_flow_distance = 473.0
|
|
||||||
|
|||||||
Reference in New Issue
Block a user