diff options
Diffstat (limited to 'client/map/effects/effect_factory.gd')
| -rw-r--r-- | client/map/effects/effect_factory.gd | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/client/map/effects/effect_factory.gd b/client/map/effects/effect_factory.gd new file mode 100644 index 00000000..246aca1f --- /dev/null +++ b/client/map/effects/effect_factory.gd @@ -0,0 +1,34 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 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 <https://www.gnu.org/licenses/>. +# +class_name EffectFactory +extends Object + +const ANGRY = preload("res://map/effects/angry/angry.tscn") +const SATISFIED = preload("res://map/effects/satisfied/satisfied.tscn") +const POINTS = preload("res://map/effects/points/points.tscn") + +static func create_effect(p: Dictionary): + match p["effect"]: + "angry": return ANGRY.instantiate() + "satisfied": return SATISFIED.instantiate() + "points": + var points = POINTS.instantiate() + points.amount = p["amount"] + return points + _: push_error("unknown effect " + p["effect"]) + +static func play_effect(target: Node3D, p: Dictionary): + target.add_child(create_effect(p)) |