42 lines
1.1 KiB
GDScript
42 lines
1.1 KiB
GDScript
extends Reference
|
|
|
|
const NAME = "growing"
|
|
const raw_yam = preload("res://item_types/raw_yam.tres")
|
|
|
|
var ctx = null
|
|
var mat: SpatialMaterial = SpatialMaterial.new()
|
|
|
|
func _init():
|
|
mat.albedo_color = Color.green
|
|
|
|
func enter_from(state):
|
|
ctx.get_node("coin_machine").enabled = false
|
|
ctx.get_node("item_holder").add_enabled = false
|
|
ctx.get_node("item_holder").remove_enabled = false
|
|
ctx.get_node("grow_timer").start()
|
|
ctx.get_node("MeshInstance").set_surface_material(0, mat)
|
|
ctx.status_light.activate()
|
|
ctx.item_dump.enabled = false
|
|
|
|
func exit_to(state):
|
|
ctx.get_node("MeshInstance").set_surface_material(0, null)
|
|
|
|
func on_coin_machine_coin_requirement_met(player):
|
|
assert(false, "coin machine should be disabled while growing")
|
|
|
|
func on_grow_timer_timeout():
|
|
var item_holder = ctx.get_node("item_holder")
|
|
item_holder.spawn_item(raw_yam)
|
|
ctx.change_state(ctx.StateBlocked.new())
|
|
|
|
func on_item_holder_item_changed(item):
|
|
assert(item.item_type == raw_yam)
|
|
|
|
func on_item_dump_item_dump_completed():
|
|
assert(false)
|
|
|
|
func on_damage_taken():
|
|
ctx.get_node("grow_timer").stop()
|
|
if ctx.current_hp <= 0:
|
|
ctx.change_state(ctx.StateBroken.new())
|