Receiver works, probably
This commit is contained in:
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 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:
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user