Made particles emit from resource

This commit is contained in:
2024-03-12 10:23:11 -05:00
parent 4b362fabed
commit 4718108407
8 changed files with 72 additions and 22 deletions

View File

@@ -1,20 +1,19 @@
extends Building
const CARBON_RESOURCE = preload("res://data/game_resources/carbon/carbon_resource.tres")
var nearest_res
var _distance
var _direction
func ready(building: BuildingBase) -> void:
var nearest_res := Grid.get_nearest_resource(building.position, CARBON_RESOURCE)
var _distance = building.position.distance_to(nearest_res)
const CARBON_RESOURCE = preload("res://data/game_resources/carbon/carbon_resource.tres")
const HARVESTER_PARTICLES = preload("res://data/buildings/basic/harvester/harvester_particles.tscn")
func initialize(building: BuildingBase) -> void:
nearest_res = Grid.get_nearest_resource(building.position, CARBON_RESOURCE)
_distance = building.position.distance_to(nearest_res)
_direction = nearest_res.direction_to(building.position)
var particles = CPUParticles2D.new()
particles.amount = 60
particles.spread = 8
particles.material = ParticleProcessMaterial.new()
particles.radial_accel_max = _distance * -2.5
particles.radial_accel_min = _distance * -2.55
particles.gravity = Vector2.ZERO
particles.direction = building.position.direction_to(nearest_res)
particles.initial_velocity_max = _distance * 2.25
particles.initial_velocity_min = _distance * 2.2
particles.lifetime = 1.65
building.add_child(particles)
func ready(building: BuildingBase) -> void:
var particles = HARVESTER_PARTICLES.instantiate()
particles.init(_distance, _direction, CARBON_RESOURCE)
particles.position = nearest_res
building.add_sibling(particles)

View File

@@ -0,0 +1,37 @@
extends Node2D
var _pickup
var _distance
var _direction
var _emitters: Array[CPUParticles2D] = []
func init(distance: float, direction: Vector2, res: GameResource) -> void:
_distance = distance
_direction = direction
_pickup = res
func _ready() -> void:
if _emitters.size() < 10:
var particles = CPUParticles2D.new()
particles.amount = 8
particles.spread = 8
particles.material = ParticleProcessMaterial.new()
particles.radial_accel_max = _distance * -2.5
particles.radial_accel_min = _distance * -2.55
particles.gravity = Vector2.ZERO
particles.direction = _direction
particles.initial_velocity_max = _distance * 2.25
particles.initial_velocity_min = _distance * 2.2
particles.lifetime = 1.65
add_child(particles)
_emitters.append(particles)
else:
for i in range(1, _emitters.size()):
_emitters[i].queue_free()
_emitters.resize(1)
ResourceManager.pickup(_pickup)
func _on_particles_timer_timeout() -> void:
_ready()

View File

@@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://73dsjfc4imfo"]
[ext_resource type="Script" path="res://data/buildings/basic/harvester/harvester_particles.gd" id="1_td5fv"]
[node name="HarvesterParticles" type="Node2D"]
script = ExtResource("1_td5fv")
[node name="ParticlesTimer" type="Timer" parent="."]
wait_time = 0.5
autostart = true
[connection signal="timeout" from="ParticlesTimer" to="." method="_on_particles_timer_timeout"]