JHRGB/Pool.gd
2023-12-03 15:49:59 +00:00

57 lines
1.8 KiB
GDScript

@tool
class_name Pool
extends Node2D
@export var mana_r: int = 10
@export var mana_g: int = 10
@export var mana_b: int = 10
# Called when the node enters the scene tree for the first time.
func _ready():
update()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
if $StaticBody2D/CollisionShape2D2.disabled:
# Prepare the shape query parameters
var query_parameters = PhysicsShapeQueryParameters2D.new()
var collision_shape = $StaticBody2D/CollisionShape2D2.shape
query_parameters.set_shape(collision_shape)
query_parameters.set_transform(Transform2D(0, position))
query_parameters.set_collision_mask(1) #1=players
# Get the Physics2DDirectSpaceState for collision checking
var space_state = get_world_2d().direct_space_state
# Check for collision
var collision_results = space_state.intersect_shape(query_parameters)
if collision_results.size() == 0:
$StaticBody2D/CollisionShape2D2.disabled=false
update()
pass
func update():
var max_value: float = max(mana_r, mana_g, mana_b)
if max_value==0:
self.queue_free()
return;
var normalized_r = mana_r / max_value
var normalized_g = mana_g / max_value
var normalized_b = mana_b / max_value
self.modulate = Color(normalized_r, normalized_g, normalized_b)
var s=sqrt((mana_r+mana_g+mana_b)/1000.0)
self.scale=Vector2(s,s)
self.queue_redraw() # Request to redraw the node
func _on_decay_timer_timeout():
var new_player = load("res://player.tscn").instantiate()
new_player.get_node("CharacterBody2D").velocity = Vector2.from_angle(randf_range(0, 2 * PI)) * 100
new_player.get_node("CharacterBody2D").position = position
new_player.get_node("CharacterBody2D").exchange_with(self)
new_player.get_node("CharacterBody2D/CollisionShape2D").disabled=true
get_tree().root.add_child(new_player)