# Hurry Curry! - a game about cooking # Copyright (C) 2025 Hurry Curry! contributors # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, version 3 of the License only. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # class_name FoodProcessor extends Item var time := 0. var processing: CPUParticles3D = load("res://map/items/processing.tscn").instantiate() func _init(owned_by_: Node3D, contents: Array): super(owned_by_) add_child(load("res://map/items/food_processor.tscn").instantiate()) add_child(processing) for i in contents: match i: "milk": add_child(FoodProcessorFill.new(self, Color(1., 1., 1.))) "rice-flour": add_child(FoodProcessorFill.new(self, Color(1.,1.,.8))) "rice": processing.color = Color(1.,1.,.8) base.add_child(load("res://map/items/rice.tscn").instantiate()) "flour": processing.color = Color(.9, .9, .9) base.add_child(load("res://map/items/flour.tscn").instantiate()) "dough": add_child(FoodProcessorFill.new(self, Color8(200, 180, 160))) "coconut": add_child(FoodProcessorFill.new(self, Color(.8, .5, .4))) base.add_child(load("res://map/items/coconut.tscn").instantiate()) "strawberry": processing.color = Color(.9, .0, .0) base.add_child(load("res://map/items/strawberry.tscn").instantiate()) "strawberry-shake": add_child(FoodProcessorFill.new(self, Color8(250, 140, 180))) "strawberry-icecream": add_child(FoodProcessorFill.new(self, Color8(250, 180, 210))) "strawberry-puree": add_child(FoodProcessorFill.new(self, Color8(200, 80, 80))) "tomato": processing.color = Color(1.,0.,0.) base.add_child(load("res://map/items/tomato.tscn").instantiate()) "tomato-juice": add_child(FoodProcessorFill.new(self, Color(1., .0, .0))) _: push_error("Food processor fill not implemented: %s" % contents) func _process(delta: float): super(delta) time += delta processing.rotation.y += time * TAU base.rotation.y += time * TAU func progress(position_: float, speed: float, warn: bool): super(position_, speed, warn) processing.emitting = true if sound_id == null: sound_id = Sound.item_progress( self, preload("res://map/items/sounds/food_processor_running.ogg"), preload("res://map/items/sounds/food_processor_stopping.ogg"), -10. ) func finish(): super() processing.emitting = false static func base_position() -> Vector3: return Vector3(0., 0.4, 0.) static func height() -> float: return .3