35 lines
803 B
GDScript3
35 lines
803 B
GDScript3
|
extends StaticBody2D
|
||
|
|
||
|
export(Constants.MACHINE_TYPE) var machine_type = Constants.MACHINE_TYPE.SMELTER
|
||
|
export var max_idle_time := 8.0
|
||
|
export var max_input_buffer := 3
|
||
|
var num_inputs = 0
|
||
|
var working := false setget set_working
|
||
|
var idle_time := 0.0
|
||
|
var anim_speed = 1.0
|
||
|
|
||
|
|
||
|
|
||
|
onready var recipe = Constants.RECIPES[machine_type]
|
||
|
func _ready():
|
||
|
pass
|
||
|
|
||
|
func _process(delta):
|
||
|
if num_inputs < max_input_buffer:
|
||
|
suck_materials()
|
||
|
if num_inputs <= 0:
|
||
|
self.working = false
|
||
|
idle_time += delta
|
||
|
else:
|
||
|
self.working = true
|
||
|
|
||
|
func set_working(state):
|
||
|
working = state
|
||
|
$sprite.material.set_shader_param('rps', int(state)*anim_speed)
|
||
|
|
||
|
func suck_materials():
|
||
|
for candidate in $SuckArea.get_overlapping_bodies():
|
||
|
if candidate.has_method('enter_machine'):
|
||
|
if candidate.material_type == recipe.input:
|
||
|
pass
|