many small changes, and few big ones
This commit is contained in:
parent
e8985f4e79
commit
a3ca623258
32 changed files with 391 additions and 247 deletions
14
reusable/aged_box/aged_box.gd
Normal file
14
reusable/aged_box/aged_box.gd
Normal file
|
@ -0,0 +1,14 @@
|
|||
extends RigidBody2D
|
||||
|
||||
@export var demolition_minmax: float = 0.1
|
||||
|
||||
func _ready() -> void:
|
||||
var p: P = $P
|
||||
for i in range(len(p.polygon)):
|
||||
p.polygon[i].x = p.polygon[i].x * randf_range(1.0-demolition_minmax, 1.0+demolition_minmax)
|
||||
p.polygon[i].y = p.polygon[i].y * randf_range(1.0-demolition_minmax, 1.0+demolition_minmax)
|
||||
p.update_polygon()
|
||||
# make visible polygon a bit bigger than collision polygon
|
||||
for i in range(len(p.polygon_2d.polygon)):
|
||||
p.polygon_2d.polygon[i].x += sign(p.polygon[i].x) # make bigger by 1 pixel
|
||||
p.polygon_2d.polygon[i].y += sign(p.polygon[i].y)
|
11
reusable/aged_box/aged_box.tscn
Normal file
11
reusable/aged_box/aged_box.tscn
Normal file
|
@ -0,0 +1,11 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://cylmgbhvpdexh"]
|
||||
|
||||
[ext_resource type="Script" path="res://core/polygon/polygon.gd" id="1_m3p7r"]
|
||||
[ext_resource type="Script" path="res://reusable/aged_box/aged_box.gd" id="1_ul3hr"]
|
||||
|
||||
[node name="AgedBox" type="RigidBody2D"]
|
||||
script = ExtResource("1_ul3hr")
|
||||
|
||||
[node name="P" type="CollisionPolygon2D" parent="."]
|
||||
polygon = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
|
||||
script = ExtResource("1_m3p7r")
|
62
reusable/conveyor/conveyor.gd
Normal file
62
reusable/conveyor/conveyor.gd
Normal file
|
@ -0,0 +1,62 @@
|
|||
@tool
|
||||
class_name Conveyor extends Node2D
|
||||
|
||||
const GAP = 8.0
|
||||
const SPEED = 0.0041 # ~ the targeted physics tick time
|
||||
|
||||
@export var conveyor_segments: int = 20:
|
||||
set(v):
|
||||
conveyor_segments = v
|
||||
create_segments()
|
||||
get:
|
||||
return conveyor_segments
|
||||
|
||||
@export var speed_mult: float = 20.0
|
||||
|
||||
var conveyor_seg_scn = preload("uid://be7ki66sskav5")
|
||||
var segments_top: Array[Node2D] = []
|
||||
var segments_bottom: Array[Node2D] = []
|
||||
|
||||
func create_segments():
|
||||
for c in self.get_children():
|
||||
c.call_deferred("queue_free")
|
||||
segments_top = []
|
||||
segments_bottom = []
|
||||
# top
|
||||
for i in range(0, conveyor_segments + 1):
|
||||
var c = conveyor_seg_scn.instantiate()
|
||||
c.position.x = i*8.0
|
||||
self.segments_top.append(c)
|
||||
self.add_child(c)
|
||||
# bottom
|
||||
for i in range(0, conveyor_segments + 1):
|
||||
var c = conveyor_seg_scn.instantiate()
|
||||
c.position.x = i*8.0
|
||||
c.position.y = 5.0
|
||||
self.segments_bottom.append(c)
|
||||
self.add_child(c)
|
||||
|
||||
func _ready() -> void:
|
||||
create_segments()
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
# make it NOT framerate-depedent bc this would fuck up the positioning over time
|
||||
var s = sign(speed_mult)
|
||||
for p in segments_top:
|
||||
if s > 0.0:
|
||||
if p.position.x > conveyor_segments * GAP:
|
||||
p.position.x = 0.0
|
||||
else:
|
||||
if p.position.x < 0.0:
|
||||
p.position.x = conveyor_segments * GAP
|
||||
p.position.x += SPEED * speed_mult
|
||||
for p in segments_bottom:
|
||||
if s > 0.0:
|
||||
if p.position.x < 0.0:
|
||||
p.position.x = conveyor_segments * GAP
|
||||
else:
|
||||
if p.position.x > conveyor_segments * GAP:
|
||||
p.position.x = 0.0
|
||||
p.position.x -= SPEED * speed_mult
|
10
reusable/conveyor/conveyor_segment.tscn
Normal file
10
reusable/conveyor/conveyor_segment.tscn
Normal file
|
@ -0,0 +1,10 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://be7ki66sskav5"]
|
||||
|
||||
[ext_resource type="Script" path="res://core/polygon/polygon.gd" id="2_hf2op"]
|
||||
|
||||
[node name="ConveyorPart" type="AnimatableBody2D"]
|
||||
sync_to_physics = false
|
||||
|
||||
[node name="P" type="CollisionPolygon2D" parent="."]
|
||||
polygon = PackedVector2Array(-3, -4, -3, -0.1, 3, -0.1, 3, -4)
|
||||
script = ExtResource("2_hf2op")
|
31
reusable/spawner.gd
Normal file
31
reusable/spawner.gd
Normal file
|
@ -0,0 +1,31 @@
|
|||
class_name Spawner extends Node2D
|
||||
|
||||
@export var spawn_interval_secs: float = 1.0
|
||||
@export var spawn_interval_rand: float = 0.0
|
||||
@export var stop_after_secs: float = 0.0
|
||||
@export var amount_per_interval: int = 1
|
||||
@export var jitter_spawnpoint: bool = false
|
||||
@export var scene: PackedScene = null
|
||||
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
var dt_total = 0.0
|
||||
var dt = 0.0
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if stop_after_secs > 0.0 and dt_total < stop_after_secs:
|
||||
dt_total += delta
|
||||
if stop_after_secs > 0.0 and dt_total >= stop_after_secs:
|
||||
return
|
||||
dt += delta
|
||||
if spawn_interval_rand > 0.0:
|
||||
dt += randf_range(-spawn_interval_rand, spawn_interval_rand)
|
||||
var spawn = dt > spawn_interval_secs
|
||||
dt = fmod(dt, spawn_interval_secs)
|
||||
if spawn and scene != null:
|
||||
for i in range(amount_per_interval):
|
||||
var c = scene.instantiate()
|
||||
if jitter_spawnpoint:
|
||||
c.position += Vector2(randf_range(-12, 12), randf_range(-12, 12))
|
||||
self.add_child(c)
|
Reference in a new issue